1、MesProductionPartContext 增加cutQty(裁片工单数量)

2、裁片工单绑定问题修复
tags/yfai-mes-ext-v2.3
yxw 7 months ago
parent a80e653f08
commit 9878633805

@ -1,6 +1,9 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail;
import io.swagger.annotations.ApiOperation;
import java.util.List;
@ -17,6 +20,12 @@ public interface IMesWorkOrderCutService extends IBaseMesService<MesWorkOrderCut
void doGenerateCutWorkOrder(List<Long> workOrderIds, String cutCode, String remark, String organizeCode,
String userName, Integer editionNumber);
@ApiOperation("分页查询裁片工单明细")
ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager);
//@ApiOperation("分页查询裁片工单明细")
//ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager);
@ApiOperation("发布裁片工单")
void doReleaseCutWorkOrder(List<String> cutWorkOrderNos, String organizeCode, String userName);

@ -2,17 +2,19 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderCutService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import cn.hutool.core.collection.ListUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -48,6 +50,21 @@ public class MesWorkOrderCutController extends BaseMesController<MesWorkOrderCut
}
}
@GetMapping(value = "/detail/query")
@ApiOperation(value = "分页查询裁片工单明细", notes = "分页查询裁片工单明细")
public ResultBean queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager) {
try {
workOrderCutDetail.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
return ResultBean.success("生成成功")
.setListPager(workOrderCutService.queryWorkOrderCutDetailByPager(workOrderCutDetail, pager))
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/release")
@ApiOperation(value = "裁片工单发布", notes = "裁片工单发布")
public ResultBean doReleaseCutWorkOrder(String[] cutWorkOrderNos) {

@ -10,6 +10,9 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
@ -96,13 +99,16 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
editionNumber = editionNumber == null ? 1 : editionNumber;
// 记录工单剩余未完成数量
Map<String, Double> workOrderUnCompleteMap = new HashMap<>();
// 记录当前裁片工单 每个工单的计划数量
Map<String, Double> workOrderQtyMap = new HashMap<>();
List<MesWorkOrderCutDetail> workOrderCutDetailtList = new ArrayList<>();
List<MesWorkOrderCut> workOrderCuttList = new ArrayList<>();
List<MesWorkOrderCutMaterial> workOrderCutMaterialList = new ArrayList<>();
// 校验工单未完成数量是否满足计划数量
checkQtyIsEnough(editionNumber, workOrderListMapByPartNo, cutScheme, cutSchemeFgList, workOrderUnCompleteMap);
checkQtyIsEnough(editionNumber, workOrderListMapByPartNo, cutScheme, cutSchemeFgList, workOrderUnCompleteMap, workOrderQtyMap);
// 预计生成裁片工单数量
for (Integer count = 0; count < editionNumber; count++) {
@ -135,7 +141,7 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
for (MesCutSchemeFg cutSchemeFg : cutSchemeFgList) {
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
MesWorkOrder workOrder = workOrders.get(0);
for (MesWorkOrder workOrder : workOrders) {
MesWorkOrderCutDetail detail = new MesWorkOrderCutDetail();
ConvertBean.serviceModelInitialize(detail, userName);
detail.setOrganizeCode(organizeCode);
@ -144,10 +150,11 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
detail.setPartName(workOrder.getPartName());
detail.setWorkOrderNo(workOrder.getWorkOrderNo());
detail.setRemark(cutSchemeFg.getRemark());
detail.setQty(cutSchemeFg.getQty());
detail.setQty(workOrderQtyMap.get(workOrder.getWorkOrderNo()));
workOrderCutDetailtList.add(detail);
}
}
}
workOrderCutMaterialRepository.saveAll(workOrderCutMaterialList);
workOrderCutDetailRepository.saveAll(workOrderCutDetailtList);
@ -165,7 +172,18 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
}
private static void checkQtyIsEnough(Integer editionNumber, Map<String, List<MesWorkOrder>> workOrderListMapByPartNo, MesCutScheme cutScheme, List<MesCutSchemeFg> cutSchemeFgList, Map<String, Double> workOrderUnCompleteMap) {
@Override
public ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderCutDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workOrderCutDetail.getCutWorkOrderNo(), MesExtConstWords.CUT_WORK_ORDER_NO, packBean);
pager = PagerHelper.getPager(pager, workOrderCutDetailRepository.findByHqlWhereCount(packBean));
List<MesWorkOrderCutDetail> list = workOrderCutDetailRepository.findByHqlWherePage(packBean, pager);
return new ListPager<>(list, pager);
}
private static void checkQtyIsEnough(Integer editionNumber, Map<String, List<MesWorkOrder>> workOrderListMapByPartNo,
MesCutScheme cutScheme, List<MesCutSchemeFg> cutSchemeFgList,
Map<String, Double> workOrderUnCompleteMap, Map<String, Double> workOrderQtyMap) {
for (MesCutSchemeFg cutSchemeFg : cutSchemeFgList) {
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
@ -179,16 +197,19 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
// 成品配置计划数量 * 版数 = 裁片工单该成品总消耗数量
Double totalQty = MathOperation.mul(cutSchemeFg.getQty(), editionNumber);
Double srcTotalQty = totalQty.doubleValue();
Double unCompleteQty = 0.0;
List<String> needWorkOrderNoList = new ArrayList<>();
for (MesWorkOrder order : workOrders) {
if (!order.getWorkCenterCode().equals(cutScheme.getWorkCenterCode()))
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", order.getWorkCenterCode(), cutScheme.getWorkCenterCode());
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!",
order.getWorkCenterCode(), cutScheme.getWorkCenterCode());
if (unCompleteQty.compareTo(totalQty) > 0)
MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】", order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(), workOrders.subList(needWorkOrderNoList.size(), workOrders.size()));
if (unCompleteQty.compareTo(srcTotalQty) >= 0)
MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】",
order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(),
workOrders.subList(needWorkOrderNoList.size(), workOrders.size()));
unCompleteQty = MathOperation.add(unCompleteQty, order.getUnCompleteQty());
@ -196,8 +217,12 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
if (order.getUnCompleteQty().compareTo(totalQty) >= 0) {
workOrderUnCompleteMap.put(order.getWorkOrderNo(), MathOperation.sub(order.getUnCompleteQty(), totalQty));
workOrderQtyMap.put(order.getWorkOrderNo(), totalQty);
totalQty = 0.0;
} else {
workOrderUnCompleteMap.put(order.getWorkOrderNo(), 0.0);
workOrderQtyMap.put(order.getWorkOrderNo(), order.getUnCompleteQty());
totalQty = MathOperation.sub(totalQty, order.getUnCompleteQty());
}
}

Loading…
Cancel
Save