|
@@ -1,11 +1,14 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.rongwei.bscommon.sys.dao.ApsProcessOperationDao;
|
|
|
import com.rongwei.bscommon.sys.service.*;
|
|
|
import com.rongwei.bsentity.domain.*;
|
|
|
+import com.rongwei.bsentity.vo.ApsProcessOperationAndMaterialVo;
|
|
|
import com.rongwei.bsentity.vo.PreviousProcessVo;
|
|
|
import com.rongwei.commonservice.service.SysMindMappingService;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
@@ -455,6 +458,62 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
|
|
|
apsProcessOperationDao.updateSysMindMapping(blankid);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R checkOperation(Map<String, Object> params) {
|
|
|
+ String blankId;
|
|
|
+ try {
|
|
|
+ blankId = params.get("BLANKID").toString();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return R.error("请输入正确的坯料计划ID");
|
|
|
+ }
|
|
|
+ //查询坯料计划对应的工序作业
|
|
|
+ List<ApsProcessOperationDo> apsProcessOperationList = this.baseMapper.selectList(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getBlankid, blankId));
|
|
|
+ //查询坯料计划对应的输出物料
|
|
|
+ List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterList = apsProcessOperationOutMaterService.getBaseMapper().selectList(new QueryWrapper<ApsProcessOperationOutMaterDo>().lambda().eq(ApsProcessOperationOutMaterDo::getBlankid, blankId));
|
|
|
+
|
|
|
+ //如果有前道工序作业,并且该工序输入物料ID不是前道工序作业的输出物料ID,错误提示:{工序}{工序显示名}的输入物料不存在,请重新选择
|
|
|
+
|
|
|
+ //遍历工序作业
|
|
|
+ for (ApsProcessOperationDo apsProcessOperationDo : apsProcessOperationList) {
|
|
|
+ //如果有前道工序
|
|
|
+ if (ObjectUtil.isNotEmpty(apsProcessOperationDo.getPreviousprocessid())) {
|
|
|
+ //获取当前工序的输入物料ID
|
|
|
+ String planInputId = apsProcessOperationDo.getPlaninputid();
|
|
|
+
|
|
|
+ //获取前道工序的输出物料的ID list
|
|
|
+ List<String> previousProcessOutMaterialIdList = apsProcessOperationOutMaterList.stream().filter(item -> item.getMainid().equals(apsProcessOperationDo.getPreviousprocessid())).map(ApsProcessOperationOutMaterDo::getId).collect(Collectors.toList());
|
|
|
+ //该工序输入物料ID不是前道工序作业的输出物料ID
|
|
|
+ if (!previousProcessOutMaterialIdList.contains(planInputId)) {
|
|
|
+ return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的输入物料不存在,请重新选择");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //检查该工序作业所有输出物料,如果(计划输出卷数-计划备料卷数-计划成品卷数)不等于所有后道工序作业计划加工卷数合计;错误提示:{工序}{工序显示名}的{输出物料} 计划输出卷数-计划备料卷数-计划成品卷数必须等于所有后道工序作业计划加工卷数合计
|
|
|
+ //遍历输出物料
|
|
|
+ for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : apsProcessOperationOutMaterList) {
|
|
|
+ //查询使用此输出物料的工序作业
|
|
|
+ List<ApsProcessOperationDo> processList = apsProcessOperationList.stream().filter(item -> ObjectUtil.isNotEmpty(item.getPlaninputid()) && item.getPlaninputid().equals(apsProcessOperationOutMaterDo.getId())).collect(Collectors.toList());
|
|
|
+ if (processList.size() > 0) {
|
|
|
+ //遍历工序作业,计算 计划加工卷数合计
|
|
|
+ int planProcessRollAll = 0;
|
|
|
+ for (ApsProcessOperationDo apsProcessOperationDo : processList) {
|
|
|
+ planProcessRollAll += apsProcessOperationDo.getPlanprocessrall();
|
|
|
+ }
|
|
|
+ //计算输出物料的 (计划输出卷数-计划备料卷数-计划成品卷数)值
|
|
|
+ int outputRollAll = apsProcessOperationOutMaterDo.getPlanrollnum() - apsProcessOperationOutMaterDo.getPlanstockrollnum() - apsProcessOperationOutMaterDo.getPlanprodrollnum();
|
|
|
+ if (planProcessRollAll != outputRollAll) {
|
|
|
+ //根据输出物料查询其工序信息
|
|
|
+ ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationList.stream().filter(item -> item.getId().equals(apsProcessOperationOutMaterDo.getMainid())).findFirst().get();
|
|
|
+ return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的" + apsProcessOperationOutMaterDo.getOutputmaterial() + " 计划输出卷数-计划备料卷数-计划成品卷数必须等于所有后道工序作业计划加工卷数合计");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
工艺步骤管理/输入物料描述
|
|
|
*/
|