diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/ByglController.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/ByglController.java index 3282f10..67663f6 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/ByglController.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/ByglController.java @@ -83,4 +83,12 @@ public class ByglController extends BaseController { byglByfaService.orderAuditNotPass(id); return BaseWebResult.success("审批成功"); } + + + @PostMapping("/copyFullYearData") + public BaseWebResult copyFullYearData() { + byglByfaService.copyFullYearData(); + return BaseWebResult.success("复制成功"); + } + } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglBygdPlugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglBygdPlugin.java index 4203533..6f459e4 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglBygdPlugin.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglBygdPlugin.java @@ -3,15 +3,19 @@ package com.lideeyunji.core.framework.enhance.example.report.bygl; import com.lideeyunji.core.framework.config.aspect.enhance.model.EnhanceContext; import com.lideeyunji.core.framework.config.aspect.enhance.plugin.AroundAdvicePlugin; +import com.lideeyunji.core.framework.mapper.ByglByfaMapper; import com.lideeyunji.core.framework.mapper.ByglByjhMapper; import com.lideeyunji.core.framework.utils.Func; +import com.lideeyunji.service.system.api.IApiDeptApi; +import com.lideeyunji.service.system.dto.DeptRespDTO; import com.lideeyunji.tool.framework.common.constant.ByglConstant; import com.lideeyunji.tool.framework.yunji.utils.lideeYunJiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Map; @@ -27,15 +31,54 @@ public class ByglBygdPlugin implements AroundAdvicePlugin { private static final String ORDER_ID_PREFIX = "GD"; - @Autowired + + private static final Long WBCJ_ID = 145L; + + @Resource private ByglByjhMapper byglByjhMapper; + @Resource + private IApiDeptApi apiDeptApi; + + @Resource + private ByglByfaMapper byglByfaMapper; + @Override public void beforeExecute(EnhanceContext enhanceContext) { Map params = enhanceContext.getParam().getParams(); //新增方法默认状态字段 params.put("order_state",ByglConstant.GD_STATE_DKS); String order_id = lideeYunJiUtils.getMap2Str(params, "order_id"); + + String plan_upkeep_time = lideeYunJiUtils.getMap2Str(params, "plan_upkeep_time"); + LocalDate localDate = LocalDate.parse(plan_upkeep_time); + String year = String.valueOf(localDate.getYear()); + params.put("belong_year",year); + + String scx = lideeYunJiUtils.getMap2Str(params, "device_type_name"); + Map map= byglByfaMapper.getScxXx(scx); + Long deptId = lideeYunJiUtils.getMap2Long(map, "dept_id"); + + // 通过部门ID获取部门信息,进而获取负责人ID + Long leaderUserId = null; + if (deptId != null) { + DeptRespDTO dept = apiDeptApi.getDept(deptId); + if (dept != null) { + leaderUserId = dept.getLeaderUserId(); + } + } + params.put("leader_user_id",leaderUserId); + //维保车间145 主任 + Long wbcjzrUserId = null; + if (deptId != null) { + DeptRespDTO dept = apiDeptApi.getDept(WBCJ_ID); + if (dept != null) { + wbcjzrUserId = dept.getLeaderUserId(); + } + } + params.put("wbcjzr_user_id",wbcjzrUserId); + + boolean needGenerateNewId = shouldGenerateNewOrderId(order_id); if(needGenerateNewId){ String newOrderId = generateOrderId(); diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglByjhPlugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglByjhPlugin.java index c5ec005..37e2924 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglByjhPlugin.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglByjhPlugin.java @@ -12,6 +12,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Map; @@ -40,6 +41,10 @@ public class ByglByjhPlugin implements AroundAdvicePlugin { // 创建工单并设置planUpkeepTime String planUpkeepTime = dates[0].trim(); params.put("next_upkeep_time", planUpkeepTime); + + LocalDate localDate = LocalDate.parse(planUpkeepTime); + String year = String.valueOf(localDate.getYear()); + params.put("belong_year",year); } //新增方法默认状态字段 diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/ByManagementGd.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/ByManagementGd.java index 75c9f25..67f4a04 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/ByManagementGd.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/ByManagementGd.java @@ -176,6 +176,10 @@ public class ByManagementGd extends BaseTenantEntity { + /** + * 所属年份 + */ + private String belongYear; diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/ByManagementPlan.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/ByManagementPlan.java index 6d38e63..9d254ba 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/ByManagementPlan.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/ByManagementPlan.java @@ -91,4 +91,10 @@ public class ByManagementPlan extends BaseTenantEntity { * 保养内容 */ private String schemeInfo; + + + /** + * 所属年份 + */ + private String belongYear; } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/ByManagementPlanMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/ByManagementPlanMapper.java index acc9811..99cd4b5 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/ByManagementPlanMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/ByManagementPlanMapper.java @@ -1,13 +1,19 @@ package com.lideeyunji.core.framework.mapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lideeyunji.core.framework.entity.ByManagementGd; import com.lideeyunji.core.framework.entity.ByManagementPlan; +import com.lideeyunji.tool.framework.mybatis.core.mapper.BaseMapperX; + +import java.util.List; /** * 保养管理-保养计划Mapper接口 * * @date 2026-04-15 */ -public interface ByManagementPlanMapper extends BaseMapper { +public interface ByManagementPlanMapper extends BaseMapperX { + List getDataWithMaxBelongYear(); + + List getOrderWithBelongYear(String belongYear); } \ No newline at end of file diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/IByglByfaService.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/IByglByfaService.java index 671dc57..8a1f429 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/IByglByfaService.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/IByglByfaService.java @@ -20,4 +20,6 @@ public interface IByglByfaService { void auditNotPass(Long id); void orderAuditNotPass(Long id); + + void copyFullYearData(); } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/ByglByfaServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/ByglByfaServiceImpl.java index 4ec40ea..d2ca3f6 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/ByglByfaServiceImpl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/ByglByfaServiceImpl.java @@ -3,6 +3,7 @@ package com.lideeyunji.core.framework.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.lideeyunji.core.framework.entity.ByManagementGd; import com.lideeyunji.core.framework.entity.ByManagementPlan; import com.lideeyunji.core.framework.entity.ByManagementYs; @@ -22,11 +23,10 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.Year; import java.time.format.DateTimeFormatter; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; +import java.util.stream.Collectors; /** *保养管理-保养方案 @@ -146,20 +146,20 @@ public class ByglByfaServiceImpl implements IByglByfaService { ByManagementGd completedGd = latestCompleted.get(); String planUpkeepTime = completedGd.getPlanUpkeepTime(); - + // 解析完成时间(只有日期部分,需要转换为LocalDateTime) DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate completeLocalDate = LocalDate.parse(planUpkeepTime, formatter); LocalDateTime completeDate = completeLocalDate.atStartOfDay(); - + // 往后推180天 LocalDateTime nextMaintenanceDate = adjustToNextMonthFirstDayIfNeeded(completeDate.plusDays(180)); - + // 判断是否超过本年 int completeYear = completeDate.getYear(); int nextMaintenanceYear = nextMaintenanceDate.getYear(); boolean isCrossYear = nextMaintenanceYear > completeYear; - + if(isCrossYear){ return; }else{ @@ -202,10 +202,10 @@ public class ByglByfaServiceImpl implements IByglByfaService { @Override public void auditNotPass(Long id) { - ByManagementGd gzbx = new ByManagementGd(); - gzbx.setId(id); - gzbx.setOrderState(ByglConstant.GD_STATE_BTG); - byManagementGdMapper.updateById(gzbx); + ByManagementGd bygd = new ByManagementGd(); + bygd.setId(id); + bygd.setOrderState(ByglConstant.GD_STATE_BTG); + byManagementGdMapper.updateById(bygd); } @@ -219,6 +219,77 @@ public class ByglByfaServiceImpl implements IByglByfaService { byManagementYsMapper.deleteById(id); } + @Override + public void copyFullYearData() { + List newPlans = new ArrayList<>(); + List newGds = new ArrayList<>(); + + List plans = byManagementPlanMapper.getDataWithMaxBelongYear(); + + if(plans == null || plans.isEmpty()){ + return; + } + String belongYear = plans.get(0).getBelongYear(); + List gds = byManagementPlanMapper.getOrderWithBelongYear(belongYear); + + String nextYear = String.valueOf(Integer.parseInt(belongYear) + 1); + + // 1. 将子表 List 转换为 Map(planId -> List) + Map> itemMap = gds.stream() + .collect(Collectors.groupingBy(ByManagementGd::getPlanId)); + + // 2. 一次遍历主表,从 Map 中获取关联数据 + plans.forEach(plan -> { + Long newId = IdWorker.getId(); + //重新插入所属年份 + plan.setBelongYear(nextYear); + //修改时间区间 + String scheduledDate = plan.getScheduledDate(); + String replace = scheduledDate.replace(belongYear, nextYear); + plan.setScheduledDate(replace); + //插入下次保养时间 + String[] dates = replace.split(","); + if(dates.length > 0){ + String planUpkeepTime = dates[0].trim(); + plan.setNextUpkeepTime(planUpkeepTime); + } + //修改planId + String planId = plan.getPlanId(); + String replace1 = planId.replace(belongYear, nextYear); + plan.setPlanId(replace1); + //状态更新 + plan.setPlanState("0"); + + List relatedItems = itemMap.getOrDefault(String.valueOf(plan.getId()), new ArrayList<>()); + relatedItems.forEach(order -> { + order.setId(IdWorker.getId()); + order.setPlanId(newId+""); + order.setOrderState("0"); + order.setBelongYear(nextYear); + String replace2 = order.getPlanUpkeepTime().replace(belongYear, nextYear); + order.setPlanUpkeepTime(replace2); + + order.setRemark(null); + order.setUpkeepTime(null); + order.setBygdCljg(null); + order.setMaintainer(null); + order.setLeaderUserYj(null); + order.setWbcjzrUserYj(null); + order.setLeaderUpkeepTime(null); + order.setLeaderUserZt(0); + order.setWbcjzrUserZt(0); + + newGds.add(order); + }); + + //生成新id + plan.setId(newId); + newPlans.add(plan); + }); + byManagementGdMapper.insertBatch(newGds,500); + byManagementPlanMapper.insertBatch(newPlans,500); + } + /** * 生成工单ID * 格式:GD + 时间戳(yyyyMMddHHmmss) @@ -227,6 +298,7 @@ public class ByglByfaServiceImpl implements IByglByfaService { return ORDER_ID_PREFIX + LocalDateTime.now().format(DATE_TIME_FORMATTER); } + /** * 如果日期是28号、29号、30号或31号,顺延到下个月1号 */ @@ -239,6 +311,8 @@ public class ByglByfaServiceImpl implements IByglByfaService { return date; } + + } diff --git a/lidee-core/src/main/resources/mapper/bygl/ByManagementPlanMapper.xml b/lidee-core/src/main/resources/mapper/bygl/ByManagementPlanMapper.xml new file mode 100644 index 0000000..3252b20 --- /dev/null +++ b/lidee-core/src/main/resources/mapper/bygl/ByManagementPlanMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + +