|
|
|
@ -1,15 +1,27 @@
|
|
|
|
|
package com.chanko.yunxi.mes.module.heli.service.plan;
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.enums.CodeEnum;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.enums.ProjectPlanStatusEnum;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
|
|
|
|
import com.github.dadiyang.equator.FieldInfo;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.*;
|
|
|
|
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
|
|
|
|
|
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
|
|
|
@ -28,6 +40,7 @@ import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
|
|
|
|
*
|
|
|
|
|
* @author 管理员
|
|
|
|
|
*/
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Service
|
|
|
|
|
@Validated
|
|
|
|
|
public class PlanServiceImpl implements PlanService {
|
|
|
|
@ -35,6 +48,12 @@ public class PlanServiceImpl implements PlanService {
|
|
|
|
|
@Resource
|
|
|
|
|
private PlanMapper planMapper;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private PlanSubMapper planSubMapper;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private ProjectOrderService projectOrderService;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private SerialNumberService serialNumberService;
|
|
|
|
|
|
|
|
|
@ -90,4 +109,66 @@ public class PlanServiceImpl implements PlanService {
|
|
|
|
|
return planMapper.selectPage(pageReqVO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void generatePlanByProjectId(Long projectId){
|
|
|
|
|
// 查询最近归档历史并对比变化字段
|
|
|
|
|
try {
|
|
|
|
|
PlanDO planDO = planMapper.selectOne(new LambdaQueryWrapper<PlanDO>() {{
|
|
|
|
|
eq(PlanDO::getProjectId, projectId);
|
|
|
|
|
orderByDesc(PlanDO::getId);
|
|
|
|
|
last("LIMIT 1");
|
|
|
|
|
}});
|
|
|
|
|
if(planDO != null){
|
|
|
|
|
// 设置项目更新次数
|
|
|
|
|
planDO.setChangeNum(planDO.getChangeNum()+1);
|
|
|
|
|
// 设置项目更新时间
|
|
|
|
|
planDO.setChangeLastDate(LocalDateTime.now());
|
|
|
|
|
// 设置生产计划状态
|
|
|
|
|
planDO.setStatus(ProjectPlanStatusEnum.CHANGE.getCode());
|
|
|
|
|
planMapper.updateById(planDO);
|
|
|
|
|
}else{
|
|
|
|
|
planDO = new PlanDO();
|
|
|
|
|
// 设置项目更新次数
|
|
|
|
|
planDO.setChangeNum(0);
|
|
|
|
|
// 设置生产计划状态
|
|
|
|
|
planDO.setStatus(ProjectPlanStatusEnum.START.getCode());
|
|
|
|
|
planMapper.insert(planDO);
|
|
|
|
|
|
|
|
|
|
// 生成生产计划子项目信息
|
|
|
|
|
List<ProjectOrderSubDO> projectOrderSubDOs = projectOrderService.getProjectOrderSubListByProjectOrderId(projectId);
|
|
|
|
|
for(ProjectOrderSubDO item : projectOrderSubDOs){
|
|
|
|
|
PlanSubDO planSubDO = new PlanSubDO();
|
|
|
|
|
planSubDO.setProjectPlanId(planDO.getId());
|
|
|
|
|
planSubDO.setProjectId(projectId);
|
|
|
|
|
planSubDO.setProjectSubId(item.getId());
|
|
|
|
|
planSubMapper.insert(planSubDO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
log.error("base projectId to generate planDo error, id: {}, exception: {}", projectId, e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void updatePlanStatusToTerminateByProjectId(Long projectId){
|
|
|
|
|
// 查询最近归档历史并对比变化字段
|
|
|
|
|
try {
|
|
|
|
|
PlanDO planDO = planMapper.selectOne(new LambdaQueryWrapper<PlanDO>() {{
|
|
|
|
|
eq(PlanDO::getProjectId, projectId);
|
|
|
|
|
orderByDesc(PlanDO::getId);
|
|
|
|
|
last("LIMIT 1");
|
|
|
|
|
}});
|
|
|
|
|
if(planDO != null){
|
|
|
|
|
// 设置项目更新次数
|
|
|
|
|
planDO.setChangeNum(planDO.getChangeNum()+1);
|
|
|
|
|
// 设置项目更新时间
|
|
|
|
|
planDO.setChangeLastDate(LocalDateTime.now());
|
|
|
|
|
// 设置生产计划状态
|
|
|
|
|
planDO.setStatus(ProjectPlanStatusEnum.TERMINATE.getCode());
|
|
|
|
|
planMapper.updateById(planDO);
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
log.error("base projectId to update planDo's status error, id: {}, exception: {}", projectId, e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|