From d21050ed222a7a6728bfdd86fee08f6ff98bfe3d Mon Sep 17 00:00:00 2001 From: "[li_she]" <[li.she@xujiesoft.com]> Date: Thu, 24 Nov 2022 10:11:07 +0800 Subject: [PATCH] =?UTF-8?q?=20=E6=8E=92=E4=BA=A7=E6=8B=93=E5=B1=95=202022?= =?UTF-8?q?=E5=B9=B411=E6=9C=8824=E6=97=A5=20sxm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SchedulingController.java | 16 +- .../schedule/data/ShopOrderOutData.java | 22 +++ .../schedule/service/SchedulingService.java | 9 + .../service/impl/SchedulingServiceImpl.java | 174 ++++++++++++------ .../mapper/schedule/SchedulingMapper.xml | 3 +- 5 files changed, 166 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/gaotao/modules/schedule/controller/SchedulingController.java b/src/main/java/com/gaotao/modules/schedule/controller/SchedulingController.java index 5d8af7c..3c158fb 100644 --- a/src/main/java/com/gaotao/modules/schedule/controller/SchedulingController.java +++ b/src/main/java/com/gaotao/modules/schedule/controller/SchedulingController.java @@ -5,7 +5,6 @@ import com.gaotao.modules.purchasingManagement.entity.ViewSapPoData; import com.gaotao.modules.schedule.data.*; import com.gaotao.modules.schedule.service.SchedulingService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -601,4 +600,19 @@ public class SchedulingController { } + /** + * @author: sxm + * @description: 拓展排产批量排产 + * @param [inData] + * @return: com.gaotao.common.utils.R + * @date: 2022/11/23 14:13 + */ + @RequestMapping(value = "batchScheduleOrderWithExpand") + public R batchScheduleOrderWithExpand(@RequestBody List inData){ + schedulingService.batchScheduleOrderWithExpand(inData); + return R.ok() + .put("code", 200) + .put("msg", "操作成功!"); + } + } diff --git a/src/main/java/com/gaotao/modules/schedule/data/ShopOrderOutData.java b/src/main/java/com/gaotao/modules/schedule/data/ShopOrderOutData.java index 5b011d3..55f3ee7 100644 --- a/src/main/java/com/gaotao/modules/schedule/data/ShopOrderOutData.java +++ b/src/main/java/com/gaotao/modules/schedule/data/ShopOrderOutData.java @@ -27,9 +27,13 @@ public class ShopOrderOutData extends BaseShopOrderData { private Date enterDate; private String availResource;// private String scheduledFlag;// + + private String resourceId; private String routingRevNo; private Float qtyScheduled; private Float qtyToSchedule; + + private Float scheduledQty; private Float qtyScheduledPreOps; private String oriSOOrderNo; private String custPartNo;// @@ -49,6 +53,14 @@ public class ShopOrderOutData extends BaseShopOrderData { private String resourceList; // 可用机台列表 + public Float getScheduledQty() { + return scheduledQty; + } + + public void setScheduledQty(Float scheduledQty) { + this.scheduledQty = scheduledQty; + } + public String getResourceList() { return resourceList; } @@ -57,6 +69,16 @@ public class ShopOrderOutData extends BaseShopOrderData { this.resourceList = resourceList; } + @Override + public String getResourceId() { + return resourceId; + } + + @Override + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } + public ShopOrderOutData() { } diff --git a/src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java b/src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java index 6563454..f5f6bf5 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java +++ b/src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java @@ -346,4 +346,13 @@ public interface SchedulingService { * @version 1.0 */ int getScheduleNextItemNo(SearchScheduleData inData); + + /** + * @author: sxm + * @description: 批量排产 + * @param [inData] + * @return: void + * @date: 2022/11/23 14:13 + */ + void batchScheduleOrderWithExpand(List inData); } diff --git a/src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java b/src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java index 44db976..e7bfb87 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java +++ b/src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java @@ -10,6 +10,7 @@ import com.gaotao.modules.schedule.data.*; import com.gaotao.modules.schedule.mapper.ProcedureMapper; import com.gaotao.modules.schedule.mapper.ScheduleMapper; import com.gaotao.modules.schedule.mapper.SchedulingMapper; +import com.gaotao.modules.schedule.service.ScheduleService; import com.gaotao.modules.schedule.service.SchedulingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,7 +21,7 @@ import java.util.*; /** * @Author LR * @Description 排产接口的实现类 - * @DateTime 2022/2/28 14:41 + * @DateTime 2022/2/28 14:41 * @Param * @return **/ @@ -36,11 +37,14 @@ public class SchedulingServiceImpl implements SchedulingService { @Autowired private TransNoDao transNoDao; + @Autowired + private ScheduleService scheduleService; + @Override public String getCurrentWorkCenterNoByResourceId(SearchScheduleData inData) { String workCenterNo = schedulingMapper.getCurrentWorkCenterNoByResourceId(inData); //判断是否存在 - if(null == workCenterNo || "".equalsIgnoreCase(workCenterNo)){ + if (null == workCenterNo || "".equalsIgnoreCase(workCenterNo)) { throw new XJException("机台编码有误!"); } return workCenterNo; @@ -64,7 +68,7 @@ public class SchedulingServiceImpl implements SchedulingService { Map calendarMap = scheduleMapper.getCalendarId(inData); //判断是否存在当前的加工中心机台数据 if (calendarMap == null || calendarMap.size() == 0) { - throw new XJException("班次异常!"); + throw new XJException("班次异常!"); } //设置查询的条件 String calendarId = String.valueOf(calendarMap.get("calendarId")); @@ -79,11 +83,11 @@ public class SchedulingServiceImpl implements SchedulingService { } /** + * @return java.util.Map * @Author LR * @Description 生产订单排产 - * @DateTime 2022/3/1 11:25 + * @DateTime 2022/3/1 11:25 * @Param [site, orderNo, itemNo, workCenterNo, resourceId, scheduledQty, specifiedTime, scheduleDate, scheduleTime, calendarId, username] - * @return java.util.Map **/ public Map scheduleWorkOrder(String site, String orderNo, Integer itemNo, String workCenterNo, String resourceId, Float scheduledQty, String specifiedTime, Date scheduleDate, Date scheduleTime, String calendarId, String username) { @@ -145,10 +149,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 执行存储过程 --刷新排产的时间和序号的存储过程 + * + * @return java.util.Map * @author LR * @date 2022/3/14 15:01 * @Param [site, workCenterNo, resourceId, scheduleSeqNo, planStartTime] - * @return java.util.Map **/ public Map cancelSoScheduleRefreshJob(String site, String workCenterNo, String resourceId, Integer scheduleSeqNo, Date planStartTime) { List params = new ArrayList<>(); @@ -164,11 +169,11 @@ public class SchedulingServiceImpl implements SchedulingService { } /** + * @return java.util.Map * @Author LR * @Description 取消排产的派工单 - * @DateTime 2022/3/1 14:53 + * @DateTime 2022/3/1 14:53 * @Param [site, orderNo, itemNo, seqNo, workCenterNo, resourceId, scheduledQty] - * @return java.util.Map **/ public Map cancelSoSchedule(String site, String orderNo, Integer itemNo, String seqNo, String workCenterNo, String resourceId, Float scheduledQty) { List params = new ArrayList<>(); @@ -201,13 +206,13 @@ public class SchedulingServiceImpl implements SchedulingService { Date scheduleTime = inData.getScheduleTime(); String username = inData.getUsername(); int waitTimes = inData.getWaitTimes(); - double waitHour = waitTimes/60.0; + double waitHour = waitTimes / 60.0; //获取当前加工中心机台对应的calendarId Map calendarMap = scheduleMapper.getCalendarId(inData); //判断是否存在当前的加工中心机台数据 if (calendarMap == null || calendarMap.size() == 0) { - throw new XJException("班次异常!"); + throw new XJException("班次异常!"); } //设置查询的条件 String calendarId = String.valueOf(calendarMap.get("calendarId")); @@ -222,11 +227,11 @@ public class SchedulingServiceImpl implements SchedulingService { } /** + * @return java.util.Map * @Author LR * @Description 插入等待的派工单信息 - * @DateTime 2022/3/2 15:49 + * @DateTime 2022/3/2 15:49 * @Param [site, orderNo, itemNo, workCenterNo, resourceId, waitHour, specifiedTime, scheduleDate, scheduleTime, calendarId, username] - * @return java.util.Map **/ public Map addWaitSchedule(String site, String orderNo, Integer itemNo, String workCenterNo, String resourceId, double waitHour, String specifiedTime, Date scheduleDate, Date scheduleTime, String calendarId, String username) { @@ -264,12 +269,12 @@ public class SchedulingServiceImpl implements SchedulingService { Map calendarMap = scheduleMapper.getCalendarId(inData); //判断是否存在当前的加工中心机台数据 if (calendarMap == null || calendarMap.size() == 0) { - throw new XJException("班次异常!"); + throw new XJException("班次异常!"); } //设置查询的条件 String calendarId = String.valueOf(calendarMap.get("calendarId")); //调用存储过程 重新排产的派工单 - Map resultMap = this.reScheduleWorkOrders(site, specifiedTime, scheduleDate, scheduleTime, calendarId, workCenterNo, resourceId); + Map resultMap = this.reScheduleWorkOrders(site, specifiedTime, scheduleDate, scheduleTime, calendarId, workCenterNo, resourceId); //判断是否检验成功 String resultCode = String.valueOf(resultMap.get("resultCode")); if ("400".equalsIgnoreCase(resultCode)) { @@ -279,11 +284,11 @@ public class SchedulingServiceImpl implements SchedulingService { } /** + * @return java.util.Map * @Author LR * @Description 重新排产派工单 - * @DateTime 2022/3/2 15:59 + * @DateTime 2022/3/2 15:59 * @Param [site, specifiedTime, scheduleDate, scheduleTime, calendarId, workCenterNo, resourceId] - * @return java.util.Map **/ public Map reScheduleWorkOrders(String site, String specifiedTime, Date scheduleDate, Date scheduleTime, String calendarId, String workCenterNo, String resourceId) { List params = new ArrayList<>(); @@ -321,10 +326,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 向上移动派工单 + * + * @return java.util.Map * @author LR * @date 2022/3/14 15:28 * @Param [site, workCenterNo, resourceId, scheduleSeqNo, direction] - * @return java.util.Map **/ public Map moveUpSchedule(String site, String workCenterNo, String resourceId, int scheduleSeqNo, String direction) { List params = new ArrayList<>(); @@ -360,10 +366,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 调用存储过程 --向下移动派工单 + * + * @return java.util.Map * @author LR * @date 2022/3/14 15:32 * @Param [site, workCenterNo, resourceId, scheduleSeqNo, s] - * @return java.util.Map **/ public Map moveDownSchedule(String site, String workCenterNo, String resourceId, int scheduleSeqNo, String direction) { List params = new ArrayList<>(); @@ -401,7 +408,7 @@ public class SchedulingServiceImpl implements SchedulingService { String strOperatorlList = String.valueOf(inMap.get("operatorList")); List operatorList = JSON.parseArray(strOperatorlList, OperatorInData.class); String strCheckFlag = String.valueOf(inMap.get("checkFlag")); - if(operatorList.size() == 0){ + if (operatorList.size() == 0) { throw new XJException("暂无需要排产的数据!"); } //公共参数 @@ -418,12 +425,12 @@ public class SchedulingServiceImpl implements SchedulingService { //统计排产的数量 Float countScheduledQty = 0f; //循环计算 - for(OperatorInData operatorData : operatorList){ + for (OperatorInData operatorData : operatorList) { float scheduledQty = operatorData.getQtyToSchedule(); countScheduledQty = countScheduledQty + scheduledQty; } //判断是否校验总数量 - if(checkFlag){ + if (checkFlag) { //调用存储过程 校验数量是否超过上限 Map checkMap = this.checkFQCScheduleWithScheduledQty(site, orderNo, itemNo, countScheduledQty); //判断是否检验成功 @@ -434,7 +441,7 @@ public class SchedulingServiceImpl implements SchedulingService { } } //循环插入派工单 - for(OperatorInData operatorData : operatorList){ + for (OperatorInData operatorData : operatorList) { String resourceId = operatorData.getOperatorId(); float scheduledQty = operatorData.getQtyToSchedule(); pageData.setResourceId(resourceId); @@ -442,7 +449,7 @@ public class SchedulingServiceImpl implements SchedulingService { Map calendarMap = scheduleMapper.getCalendarId(pageData); //判断是否存在当前的加工中心机台数据 if (calendarMap == null || calendarMap.size() == 0) { - throw new XJException("班次异常!"); + throw new XJException("班次异常!"); } //设置查询的条件 String calendarId = String.valueOf(calendarMap.get("calendarId")); @@ -456,7 +463,7 @@ public class SchedulingServiceImpl implements SchedulingService { } } - // 刷新工单排产的数量 + // 刷新工单排产的数量 return schedulingMapper.freshSoRoutingScheduledQty(pageData); } @@ -484,10 +491,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 校验排产的数量 + * + * @return java.util.Map * @author LR * @date 2022/3/18 15:52 * @Param [site, orderNo, itemNo, countScheduledQty] - * @return java.util.Map **/ public Map checkFQCScheduleWithScheduledQty(String site, String orderNo, int itemNo, Float countScheduledQty) { List params = new ArrayList<>(); @@ -507,8 +515,8 @@ public class SchedulingServiceImpl implements SchedulingService { } @Override - public List> getOrderPartStockedQty(SearchScheduleData inData){ - return schedulingMapper.getOrderPartStockedQty(inData); + public List> getOrderPartStockedQty(SearchScheduleData inData) { + return schedulingMapper.getOrderPartStockedQty(inData); } @Override @@ -545,10 +553,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 修改等待派工单以及以下的排产时间 + * + * @return java.util.Map * @author LR * @date 2022/3/23 13:25 * @Param [site, workCenterNo, resourceId, scheduledSeqNo] - * @return java.util.Map **/ public Map resortScheduleTimes(String site, String workCenterNo, String resourceId, int scheduledSeqNo) { List params = new ArrayList<>(); @@ -564,10 +573,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 修改等待派工单时的等待时间 + * + * @return java.util.Map * @author LR * @date 2022/3/23 13:18 * @Param [site, orderNo, itemNo, seqNo, waitTimes] - * @return java.util.Map **/ public Map updateScheduleWaitTimes(String site, String orderNo, int itemNo, String seqNo, int waitTimes) { List params = new ArrayList<>(); @@ -615,10 +625,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 根据工艺路线刷新派工单数据 + * + * @return java.util.Map * @author LR * @date 2022/3/23 13:35 * @Param [site, orderNo, itemNo, seqNo, scheduledSeqNo, workCenterNo] - * @return java.util.Map **/ public Map refreshScheduleByRouting(String site, String orderNo, int itemNo, String seqNo, int scheduledSeqNo, String workCenterNo) { List params = new ArrayList<>(); @@ -650,10 +661,10 @@ public class SchedulingServiceImpl implements SchedulingService { //Map tempMap = this.refreshScheduleBy(site, orderNo, itemNo, seqNo, scheduledSeqNo, workCenterNo); //判断是否检验成功 //String tempCode = String.valueOf(tempMap.get("resultCode")); - // if (!"200".equalsIgnoreCase(tempCode)) { + // if (!"200".equalsIgnoreCase(tempCode)) { // String msg = String.valueOf(tempMap.get("resultMsg")); // throw new XJException(msg, Integer.parseInt(tempCode)); - // } + // } //2.调用存储过程 --修改等待派工单以及等待派工单以下派工单的时间 Map resultMap = this.resortScheduleTimes(site, workCenterNo, resourceId, scheduledSeqNo); @@ -696,7 +707,7 @@ public class SchedulingServiceImpl implements SchedulingService { //处理结果的数据 List resultList = new ArrayList<>(); //循环填充数据 - for (Map tempData : resourceList){ + for (Map tempData : resourceList) { String resourceId = String.valueOf(tempData.get("ResourceID")); String resourceDesc = String.valueOf(tempData.get("ResouceDesc")); //新增对象的数据 @@ -711,10 +722,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 调用存储过程 查询工单+工序的可用机台的数据 + * + * @return java.util.List> * @author LR * @date 2022/4/1 13:56 * @Param [site, orderNo, itemNo] - * @return java.util.List> **/ public List> getOrderAvailableResource(String site, String orderNo, int itemNo) { List params = new ArrayList<>(); @@ -722,7 +734,7 @@ public class SchedulingServiceImpl implements SchedulingService { params.add(orderNo); params.add(itemNo); //调用存储过程 返回的结果 - return procedureMapper.getProcedureData("Get_SORouting_AvailResource_List", params); + return procedureMapper.getProcedureData("Get_SORouting_AvailResource_List", params); } @Override @@ -743,7 +755,7 @@ public class SchedulingServiceImpl implements SchedulingService { String calendarId = inData.getCalendarId(); //判断是否校验总数量 - if(checkFlag){ + if (checkFlag) { //调用存储过程 校验数量是否超过上限 Map checkMap = this.checkFQCScheduleWithScheduledQty(site, orderNo, itemNo, scheduledQty); //判断是否检验成功 @@ -793,10 +805,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 获取分切派工单创建分卷的页面参数 + * + * @return java.util.Map * @author LR * @date 2022/4/8 16:57 * @Param [site, partNo, partDesc, customerId, fgPartNo, supplierId] - * @return java.util.Map **/ public Map getSplitScheduleCreateRollPageData(String site, String partNo, String partDesc, String customerId, String fgPartNo, String supplierId) { List params = new ArrayList<>(); @@ -829,10 +842,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 检查创建分切派工单的分卷 + * + * @return java.util.Map * @author LR * @date 2022/4/8 18:12 * @Param [site, customerId, partNo, fgPartNo] - * @return java.util.Map **/ public Map checkCreateSplitScheduleSeparateRoll(String site, String customerId, String partNo, String fgPartNo) { List params = new ArrayList<>(); @@ -880,9 +894,9 @@ public class SchedulingServiceImpl implements SchedulingService { //返回打印的列表 List> printList = new ArrayList<>(); //循环查询返回打印的参数 - for (String str : rollArr){ + for (String str : rollArr) { //判断第一个卷号是否是空的 - if(null == str || "-".equals(str)){ + if (null == str || "-".equals(str)) { continue; } CRollInfoData cRollInfoData = new CRollInfoData(); @@ -896,13 +910,14 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 校验通过执行创建分卷的操作 + * + * @return void * @author LR * @date 2022/4/8 18:20 * @Param [site, orderNo, itemNo, splitType, supplierId, username, rollQty, rollNums, rollDate, customerId, partNo, fgPartNo, supplierNote, rollNo] - * @return void **/ - public Map createSplitScheduleSeparateRoll(String site, String orderNo, int itemNo, String splitType, String supplierId, String username, Float rollQty, int rollNums, - String rollDate, String customerId, String partNo, String fgPartNo, String supplierNote, String rollNo) { + public Map createSplitScheduleSeparateRoll(String site, String orderNo, int itemNo, String splitType, String supplierId, String username, Float rollQty, int rollNums, + String rollDate, String customerId, String partNo, String fgPartNo, String supplierNote, String rollNo) { List params = new ArrayList<>(); params.add(site); params.add(orderNo); @@ -954,17 +969,17 @@ public class SchedulingServiceImpl implements SchedulingService { //查询卷信息 CRollInfoOutData rollData = schedulingMapper.getTransformPartRoll(inData); //判断是否存在 - if(null == rollData){ + if (null == rollData) { throw new XJException("卷号不存在!"); } //继续判断物料编码和当前的原物料编码 String rmPartNo = rollData.getPartNo(); - if (!rmPartNo.equalsIgnoreCase(oriPartNo)){ + if (!rmPartNo.equalsIgnoreCase(oriPartNo)) { throw new XJException("卷物料编码和BOM的物料编码不一致!"); } //验证卷是否已耗用 String statusDb = rollData.getStatusDb(); - if (!"I".equalsIgnoreCase(statusDb)){ + if (!"I".equalsIgnoreCase(statusDb)) { throw new XJException("该卷号不在材料库无法转换!"); } //其他验证 待添加 @@ -1005,11 +1020,11 @@ public class SchedulingServiceImpl implements SchedulingService { } //调用存储过程 执行transData CRollInfo数据 - List> rollNoList = this.transformRollPartProcessCrollInfoAndTransData(site, orderNo, rollDate, siPartNo, sirPartNo, siTransNo, sirTransNo, username); + List> rollNoList = this.transformRollPartProcessCrollInfoAndTransData(site, orderNo, rollDate, siPartNo, sirPartNo, siTransNo, sirTransNo, username); //返回打印的列表 List> printList = new ArrayList<>(); //循环获取参数 返回打印的列表数据 - for (int i = 0; i < rollNoList.size(); i++){ + for (int i = 0; i < rollNoList.size(); i++) { String rollNo = String.valueOf(rollNoList.get(i).get("transRollNo")); CRollInfoData cRollInfoData = new CRollInfoData(); cRollInfoData.setSite(site); @@ -1022,10 +1037,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 执行transData CRollInfo数据 + * + * @return void * @author LR * @date 2022/4/28 13:58 * @Param [site, orderNo, rollDate, siPartNo, sirPartNo, siTransNo, sirTransNo, username] - * @return void **/ public List> transformRollPartProcessCrollInfoAndTransData(String site, String orderNo, String rollDate, String siPartNo, String sirPartNo, String siTransNo, String sirTransNo, String username) { List params = new ArrayList<>(); @@ -1042,10 +1058,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 校验是否可以卷转换物料 + * + * @return void * @author LR * @date 2022/4/28 13:47 * @Param [site, orderNo, username] - * @return void **/ public Map checkTransformRollPart(String site, String orderNo, String username) { List params = new ArrayList<>(); @@ -1084,10 +1101,11 @@ public class SchedulingServiceImpl implements SchedulingService { /** * TODO 获取返回派工单的各种权限 + * + * @return java.util.Map * @author LR * @date 2022/6/21 14:02 * @Param [site] - * @return java.util.Map **/ public Map getScheduleMultiReportSpecialAuth(String site) { List params = new ArrayList<>(); @@ -1110,7 +1128,7 @@ public class SchedulingServiceImpl implements SchedulingService { int scheduleSeqNo = inData.getScheduleSeqNo(); Date planStartTime = inData.getPlanStartTime(); - //1.调用检查的存储过程 --判断是否可以取消 + //1.调用检查的存储过程 --判断是否可以取消 Map checkMap = this.checkCancelScheduleWithScheduleQuery(site, orderNo, itemNo, seqNo); //判断是否通过验证 String checkCode = String.valueOf(checkMap.get("resultCode")); @@ -1135,11 +1153,11 @@ public class SchedulingServiceImpl implements SchedulingService { } /** + * @return void * @Author LR * @Description查询派工单--取消排产操作 - * @DateTime 2022/8/17 14:39 + * @DateTime 2022/8/17 14:39 * @Param [site, orderNo, itemNo, seqNo, workCenterNo, resourceId, lotSize] - * @return void **/ public void cancelScheduleWithScheduleQuery(String site, String orderNo, int itemNo, String seqNo, String workCenterNo, String resourceId, Float lotSize) { List params = new ArrayList<>(); @@ -1155,11 +1173,11 @@ public class SchedulingServiceImpl implements SchedulingService { } /** + * @return java.util.Map * @Author LR * @Description 查询派工单--取消排产检查校验 - * @DateTime 2022/8/17 14:26 + * @DateTime 2022/8/17 14:26 * @Param [site, orderNo, itemNo, seqNo] - * @return java.util.Map **/ public Map checkCancelScheduleWithScheduleQuery(String site, String orderNo, int itemNo, String seqNo) { List params = new ArrayList<>(); @@ -1204,4 +1222,48 @@ public class SchedulingServiceImpl implements SchedulingService { return Integer.parseInt(strItemNo); } + + + @Override + @Transactional + public void batchScheduleOrderWithExpand(List inDatas) { + for (SearchScheduleData inData : inDatas) { + + //获取当前的calendarId + Map calendarMap = scheduleService.getCalendarIdByResourceId(inData); + //公共参数 + String site = inData.getSite(); + String orderNo = inData.getOrderNo(); + int itemNo = inData.getItemNo(); + String workCenterNo = inData.getWorkCenterNo(); + String resourceId = inData.getResourceId(); + String username = inData.getUsername(); + Date scheduleDate = inData.getScheduleDate(); + Date scheduleTime = inData.getScheduleTime(); + String specifiedTime = inData.getSpecifiedTime(); + boolean checkFlag = inData.isCheckFlag(); + Float scheduledQty = inData.getScheduledQty(); + String calendarId = calendarMap.get("calendarId").toString(); + + //判断是否校验总数量 + if (checkFlag) { + //调用存储过程 校验数量是否超过上限 + Map checkMap = this.checkFQCScheduleWithScheduledQty(site, orderNo, itemNo, scheduledQty); + //判断是否检验成功 + String resultCode = String.valueOf(checkMap.get("resultCode")); + if (!"200".equalsIgnoreCase(resultCode)) { + String msg = String.valueOf(checkMap.get("resultMsg")); + throw new XJException(msg, Integer.parseInt(resultCode)); + } + } + //验证通过 继续执行排产操作 + Map resultMap = this.scheduleWorkOrder(site, orderNo, itemNo, workCenterNo, resourceId, scheduledQty, specifiedTime, scheduleDate, scheduleTime, calendarId, username); + //判断是否检验成功 + String resultCode = String.valueOf(resultMap.get("resultCode")); + if ("400".equalsIgnoreCase(resultCode)) { + String msg = String.valueOf(resultMap.get("resultMsg")); + throw new XJException(msg); + } + } + } } diff --git a/src/main/resources/mapper/schedule/SchedulingMapper.xml b/src/main/resources/mapper/schedule/SchedulingMapper.xml index 317054a..f1dd4ad 100644 --- a/src/main/resources/mapper/schedule/SchedulingMapper.xml +++ b/src/main/resources/mapper/schedule/SchedulingMapper.xml @@ -194,7 +194,8 @@ T.QtyScheduled qtyScheduled,(round(T.QtyRequired,3) - Round(T.QtyScheduled,3)) qtyToSchedule, Isnull(S1.QtyScheduled,0.0) qtyScheduledPreOps, dbo.getScheduleToPlanTime(D.LotSize, T.MachSetupTime, T.MachRunFactor, T.FactorUnit, t.Efficiency) scheduleToPlanTime, D.OriSOOrderNo oriSOOrderNo, P.Remark custPartNo, 1*t.Efficiency efficiency, D.CostRollUpFlag costRollUpFlag, isnull(S1.QtyApprove,0.0) qtyApprovedPreOps, - d.ManualFlag manualFlag, d.RepairSOFlag repairSOFlag ,dbo.Get_ShopOrderAvailResource( T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) resourceList + d.ManualFlag manualFlag, d.RepairSOFlag repairSOFlag ,dbo.Get_ShopOrderAvailResource( T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) resourceList, + dbo.Get_FirstShopOrderAvailResource(T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) resource_id , (round(T.QtyRequired,3) - Round(T.QtyScheduled,3)) scheduled_qty from SORouting as T Left Join ShopOrder as D On T.Site=D.Site and T.OrderNo=D.OrderNo Left Join Part as P On T.Site=P.Site and T.PartNo=P.PartNo