|
|
|
@ -9,6 +9,7 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.controller.admin.screen.vo.ScreenPageReqVO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.controller.admin.screen.vo.ScreenSaveReqVO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.equipmanufacture.EquipManufactureDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.material.MaterialDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.plan.PlanDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.plansub.PlanSubDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdesign.ProcessDesignDO;
|
|
|
|
@ -18,6 +19,7 @@ import com.chanko.yunxi.mes.module.biz.dal.dataobject.screen.ScreenDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskreport.TaskReportDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.plansub.PlanSubMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.processdesign.ProcessDesignMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.projectorder.ProjectOrderMapper;
|
|
|
|
@ -43,6 +45,7 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
|
import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.SCREEN_NOT_EXISTS;
|
|
|
|
|
import static com.chanko.yunxi.mes.module.biz.enums.ScreenTypeEnum.ProductionOrderState;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 大屏数据 Service 实现类
|
|
|
|
@ -165,38 +168,16 @@ public class ScreenServiceImpl implements ScreenService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ScreenDO productionOrderState = todayDataList.stream().filter(screenDO -> ProductionOrderState.name().equals(screenDO.getType())).findFirst().get();
|
|
|
|
|
// 设置今天数据
|
|
|
|
|
// TODO 待开发
|
|
|
|
|
/*todayDataList.forEach(screenDO -> {
|
|
|
|
|
todayDataList.forEach(screenDO -> {
|
|
|
|
|
switch (ScreenTypeEnum.valueOf(screenDO.getType())){
|
|
|
|
|
case State:
|
|
|
|
|
ScreenDO yesterdayScreenDO = null;
|
|
|
|
|
if(CollUtil.isNotEmpty(yesterdayList)) {
|
|
|
|
|
yesterdayScreenDO = yesterdayList.stream().filter(yesterdayDO -> screenDO.getType().equals(yesterdayDO.getType())).findFirst().get();
|
|
|
|
|
}
|
|
|
|
|
buildState(screenDO, yesterdayScreenDO);
|
|
|
|
|
break;
|
|
|
|
|
case ProgressTrackingOfProduction:
|
|
|
|
|
buildProgressTrackingOfProduction(screenDO);
|
|
|
|
|
break;
|
|
|
|
|
case ProgressTrackingOfDesign:
|
|
|
|
|
buildProgressTrackingOfDesign(screenDO);
|
|
|
|
|
break;
|
|
|
|
|
case NumberOfMouldPerYear:
|
|
|
|
|
buildNumberOfMouldPerYear(screenDO);
|
|
|
|
|
break;
|
|
|
|
|
case NumberOfMouldPerMonth:
|
|
|
|
|
buildNumberOfMouldPerMonth(screenDO);
|
|
|
|
|
break;
|
|
|
|
|
case ProcessingStatusOfCNC:
|
|
|
|
|
buildProcessingStatusOfCNC(screenDO);
|
|
|
|
|
break;
|
|
|
|
|
case AssemblyShopInfo:
|
|
|
|
|
buildAssemblyShopInfo(screenDO);
|
|
|
|
|
case ProductionStateList:
|
|
|
|
|
// 同时设置 生产订单状态
|
|
|
|
|
buildProductionStateList(screenDO, productionOrderState);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
});*/
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 分插入与更新
|
|
|
|
|
List<ScreenDO> insertList = todayDataList.stream().filter(screenDO -> screenDO.getId() == null).collect(Collectors.toList());
|
|
|
|
@ -208,6 +189,76 @@ public class ScreenServiceImpl implements ScreenService {
|
|
|
|
|
return todayDataList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 包装生产订单状态
|
|
|
|
|
* <p>
|
|
|
|
|
* "1D": ["completionRate","deliveryRate"]
|
|
|
|
|
* [95.44, 97.0]
|
|
|
|
|
*
|
|
|
|
|
* @param screenDO
|
|
|
|
|
* @param completionRate
|
|
|
|
|
* @param deliveryRate
|
|
|
|
|
*/
|
|
|
|
|
private void buildProductionOrderState(ScreenDO screenDO, BigDecimal completionRate, BigDecimal deliveryRate) {
|
|
|
|
|
screenDO.setData(JSON.toJSONString(Arrays.asList(completionRate, deliveryRate)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 包装生产状态列表:
|
|
|
|
|
* <p>
|
|
|
|
|
* "2D": ["productionCode","productName","plannedQuantity", "qualifiedQuantity", "unqualifiedQuantity", "productionProgress"]
|
|
|
|
|
* [["xx", "上", 23, 20, 3, 87.0],["xx", "上", 23, 20, 3, 87.0],["xx", "上", 23, 20, 3, 87.0]]
|
|
|
|
|
*
|
|
|
|
|
* @param screenDO
|
|
|
|
|
* @param productionOrderState
|
|
|
|
|
*/
|
|
|
|
|
private void buildProductionStateList(ScreenDO screenDO, ScreenDO productionOrderState) {
|
|
|
|
|
ArrayList<LinkedList> resultData = new ArrayList<>(16);
|
|
|
|
|
MPJLambdaWrapper<TaskDispatchDO> query = new MPJLambdaWrapper<>();
|
|
|
|
|
query.selectAll(TaskDispatchDO.class)
|
|
|
|
|
.select("d.name as projectSubName", "d.code as projectSubCode")
|
|
|
|
|
.select("b.amount", "d.unit")
|
|
|
|
|
.select("COALESCE(sum(e.amount),0) as qualifiedQuantity")
|
|
|
|
|
.select("COALESCE(sum(f.amount),0) as unqualifiedQuantity")
|
|
|
|
|
.leftJoin(PlanDO.class, "a", PlanDO::getId, TaskDispatchDO::getPlanId)
|
|
|
|
|
.leftJoin(ProjectOrderSubDO.class, "b", ProjectOrderSubDO::getId, TaskDispatchDO::getProjectSubId)
|
|
|
|
|
.leftJoin(ProjectOrderDO.class, "c", ProjectOrderDO::getId, ProcessDesignDO::getProjectId)
|
|
|
|
|
.leftJoin(MaterialDO.class, "d", MaterialDO::getId, ProjectOrderSubDO::getMaterialId)
|
|
|
|
|
.leftJoin(TaskReportDO.class, "e", Wrapper -> Wrapper.eq(TaskReportDO::getDispatchId, TaskDispatchDO::getId)
|
|
|
|
|
.eq(TaskReportDO::getType, TaskDispatchTypeEnum.ASSEMBLE.name())
|
|
|
|
|
.eq(TaskReportDO::getHasReport, YesOrNoEnum.Y.getCode())
|
|
|
|
|
)
|
|
|
|
|
.leftJoin(UnqualifiedNotificationDO.class, "f", Wrapper -> Wrapper.eq(UnqualifiedNotificationDO::getProjectSubId, TaskDispatchDO::getProjectSubId)
|
|
|
|
|
.eq(UnqualifiedNotificationDO::getNotificationStatus, UnqualifiedNotificationStatusEnum.AUDIT.getCode()))
|
|
|
|
|
.orderByDesc(TaskDispatchDO::getId)
|
|
|
|
|
.groupBy(TaskDispatchDO::getId)
|
|
|
|
|
.disableSubLogicDel();
|
|
|
|
|
|
|
|
|
|
BigDecimal sumProductionProgress = new BigDecimal(0);
|
|
|
|
|
List<TaskDispatchDO> taskDispatchDOList = taskDispatchMapper.selectList(query);
|
|
|
|
|
taskDispatchDOList.forEach(taskDispatchDO -> {
|
|
|
|
|
|
|
|
|
|
BigDecimal productionProgress = new BigDecimal(taskDispatchDO.getQualifiedQuantity() * 100).divide(new BigDecimal(taskDispatchDO.getAmount()), 2, BigDecimal.ROUND_CEILING);
|
|
|
|
|
resultData.add(new LinkedList<Object>(){{
|
|
|
|
|
add(taskDispatchDO.getProjectSubCode());
|
|
|
|
|
add(taskDispatchDO.getProjectSubName());
|
|
|
|
|
add(taskDispatchDO.getAmount());
|
|
|
|
|
add(taskDispatchDO.getQualifiedQuantity());
|
|
|
|
|
add(taskDispatchDO.getUnqualifiedQuantity());
|
|
|
|
|
add(productionProgress);
|
|
|
|
|
}});
|
|
|
|
|
|
|
|
|
|
sumProductionProgress.add(sumProductionProgress);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
screenDO.setData(JSON.toJSONString(resultData));
|
|
|
|
|
|
|
|
|
|
BigDecimal completionRate = sumProductionProgress.divide(new BigDecimal(taskDispatchDOList.size()), 2, BigDecimal.ROUND_CEILING);
|
|
|
|
|
BigDecimal deliveryRate = null;
|
|
|
|
|
buildProductionOrderState(productionOrderState, completionRate, deliveryRate);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 包装车间工作信息:
|
|
|
|
|
*
|
|
|
|
|