Browse Source

排产拓展 2022年11月24日 sxm

master
[li_she] 4 years ago
parent
commit
d21050ed22
  1. 16
      src/main/java/com/gaotao/modules/schedule/controller/SchedulingController.java
  2. 22
      src/main/java/com/gaotao/modules/schedule/data/ShopOrderOutData.java
  3. 9
      src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java
  4. 174
      src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java
  5. 3
      src/main/resources/mapper/schedule/SchedulingMapper.xml

16
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<SearchScheduleData> inData){
schedulingService.batchScheduleOrderWithExpand(inData);
return R.ok()
.put("code", 200)
.put("msg", "操作成功!");
}
}

22
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() {
}

9
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<SearchScheduleData> inData);
}

174
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<String, Object> 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<java.lang.String, java.lang.Object>
* @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<java.lang.String,java.lang.Object>
**/
public Map<String, Object> 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<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/3/14 15:01
* @Param [site, workCenterNo, resourceId, scheduleSeqNo, planStartTime]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> cancelSoScheduleRefreshJob(String site, String workCenterNo, String resourceId, Integer scheduleSeqNo, Date planStartTime) {
List<Object> params = new ArrayList<>();
@ -164,11 +169,11 @@ public class SchedulingServiceImpl implements SchedulingService {
}
/**
* @return java.util.Map<java.lang.String, java.lang.Object>
* @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<java.lang.String,java.lang.Object>
**/
public Map<String, Object> cancelSoSchedule(String site, String orderNo, Integer itemNo, String seqNo, String workCenterNo, String resourceId, Float scheduledQty) {
List<Object> 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<String, Object> 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<java.lang.String, java.lang.Object>
* @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<java.lang.String,java.lang.Object>
**/
public Map<String, Object> 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<String, Object> calendarMap = scheduleMapper.getCalendarId(inData);
//判断是否存在当前的加工中心机台数据
if (calendarMap == null || calendarMap.size() == 0) {
throw new XJException("班次异常!");
throw new XJException("班次异常!");
}
//设置查询的条件
String calendarId = String.valueOf(calendarMap.get("calendarId"));
//调用存储过程 重新排产的派工单
Map<String, Object> resultMap = this.reScheduleWorkOrders(site, specifiedTime, scheduleDate, scheduleTime, calendarId, workCenterNo, resourceId);
Map<String, Object> 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<java.lang.String, java.lang.Object>
* @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<java.lang.String,java.lang.Object>
**/
public Map<String, Object> reScheduleWorkOrders(String site, String specifiedTime, Date scheduleDate, Date scheduleTime, String calendarId, String workCenterNo, String resourceId) {
List<Object> params = new ArrayList<>();
@ -321,10 +326,11 @@ public class SchedulingServiceImpl implements SchedulingService {
/**
* TODO 向上移动派工单
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/3/14 15:28
* @Param [site, workCenterNo, resourceId, scheduleSeqNo, direction]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> moveUpSchedule(String site, String workCenterNo, String resourceId, int scheduleSeqNo, String direction) {
List<Object> params = new ArrayList<>();
@ -360,10 +366,11 @@ public class SchedulingServiceImpl implements SchedulingService {
/**
* TODO 调用存储过程 --向下移动派工单
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/3/14 15:32
* @Param [site, workCenterNo, resourceId, scheduleSeqNo, s]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> moveDownSchedule(String site, String workCenterNo, String resourceId, int scheduleSeqNo, String direction) {
List<Object> params = new ArrayList<>();
@ -401,7 +408,7 @@ public class SchedulingServiceImpl implements SchedulingService {
String strOperatorlList = String.valueOf(inMap.get("operatorList"));
List<OperatorInData> 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<String, Object> 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<String, Object> 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<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/3/18 15:52
* @Param [site, orderNo, itemNo, countScheduledQty]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> checkFQCScheduleWithScheduledQty(String site, String orderNo, int itemNo, Float countScheduledQty) {
List<Object> params = new ArrayList<>();
@ -507,8 +515,8 @@ public class SchedulingServiceImpl implements SchedulingService {
}
@Override
public List<Map<String, Object>> getOrderPartStockedQty(SearchScheduleData inData){
return schedulingMapper.getOrderPartStockedQty(inData);
public List<Map<String, Object>> getOrderPartStockedQty(SearchScheduleData inData) {
return schedulingMapper.getOrderPartStockedQty(inData);
}
@Override
@ -545,10 +553,11 @@ public class SchedulingServiceImpl implements SchedulingService {
/**
* TODO 修改等待派工单以及以下的排产时间
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/3/23 13:25
* @Param [site, workCenterNo, resourceId, scheduledSeqNo]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> resortScheduleTimes(String site, String workCenterNo, String resourceId, int scheduledSeqNo) {
List<Object> params = new ArrayList<>();
@ -564,10 +573,11 @@ public class SchedulingServiceImpl implements SchedulingService {
/**
* TODO 修改等待派工单时的等待时间
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/3/23 13:18
* @Param [site, orderNo, itemNo, seqNo, waitTimes]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> updateScheduleWaitTimes(String site, String orderNo, int itemNo, String seqNo, int waitTimes) {
List<Object> params = new ArrayList<>();
@ -615,10 +625,11 @@ public class SchedulingServiceImpl implements SchedulingService {
/**
* TODO 根据工艺路线刷新派工单数据
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/3/23 13:35
* @Param [site, orderNo, itemNo, seqNo, scheduledSeqNo, workCenterNo]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> refreshScheduleByRouting(String site, String orderNo, int itemNo, String seqNo, int scheduledSeqNo, String workCenterNo) {
List<Object> params = new ArrayList<>();
@ -650,10 +661,10 @@ public class SchedulingServiceImpl implements SchedulingService {
//Map<String, Object> 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<String, Object> resultMap = this.resortScheduleTimes(site, workCenterNo, resourceId, scheduledSeqNo);
@ -696,7 +707,7 @@ public class SchedulingServiceImpl implements SchedulingService {
//处理结果的数据
List<ResourceOutData> resultList = new ArrayList<>();
//循环填充数据
for (Map<String, Object> tempData : resourceList){
for (Map<String, Object> 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<java.util.Map < java.lang.String, java.lang.Object>>
* @author LR
* @date 2022/4/1 13:56
* @Param [site, orderNo, itemNo]
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
**/
public List<Map<String, Object>> getOrderAvailableResource(String site, String orderNo, int itemNo) {
List<Object> 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<String, Object> checkMap = this.checkFQCScheduleWithScheduledQty(site, orderNo, itemNo, scheduledQty);
//判断是否检验成功
@ -793,10 +805,11 @@ public class SchedulingServiceImpl implements SchedulingService {
/**
* TODO 获取分切派工单创建分卷的页面参数
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/4/8 16:57
* @Param [site, partNo, partDesc, customerId, fgPartNo, supplierId]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> getSplitScheduleCreateRollPageData(String site, String partNo, String partDesc, String customerId, String fgPartNo, String supplierId) {
List<Object> params = new ArrayList<>();
@ -829,10 +842,11 @@ public class SchedulingServiceImpl implements SchedulingService {
/**
* TODO 检查创建分切派工单的分卷
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/4/8 18:12
* @Param [site, customerId, partNo, fgPartNo]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> checkCreateSplitScheduleSeparateRoll(String site, String customerId, String partNo, String fgPartNo) {
List<Object> params = new ArrayList<>();
@ -880,9 +894,9 @@ public class SchedulingServiceImpl implements SchedulingService {
//返回打印的列表
List<Map<String, Object>> 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<String, Object> 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<String, Object> 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<Object> 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<Map<String, Object>> rollNoList = this.transformRollPartProcessCrollInfoAndTransData(site, orderNo, rollDate, siPartNo, sirPartNo, siTransNo, sirTransNo, username);
List<Map<String, Object>> rollNoList = this.transformRollPartProcessCrollInfoAndTransData(site, orderNo, rollDate, siPartNo, sirPartNo, siTransNo, sirTransNo, username);
//返回打印的列表
List<Map<String, Object>> 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<Map<String, Object>> transformRollPartProcessCrollInfoAndTransData(String site, String orderNo, String rollDate, String siPartNo, String sirPartNo, String siTransNo, String sirTransNo, String username) {
List<Object> 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<String, Object> checkTransformRollPart(String site, String orderNo, String username) {
List<Object> params = new ArrayList<>();
@ -1084,10 +1101,11 @@ public class SchedulingServiceImpl implements SchedulingService {
/**
* TODO 获取返回派工单的各种权限
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author LR
* @date 2022/6/21 14:02
* @Param [site]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> getScheduleMultiReportSpecialAuth(String site) {
List<Object> params = new ArrayList<>();
@ -1110,7 +1128,7 @@ public class SchedulingServiceImpl implements SchedulingService {
int scheduleSeqNo = inData.getScheduleSeqNo();
Date planStartTime = inData.getPlanStartTime();
//1.调用检查的存储过程 --判断是否可以取消
//1.调用检查的存储过程 --判断是否可以取消
Map<String, Object> 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<Object> params = new ArrayList<>();
@ -1155,11 +1173,11 @@ public class SchedulingServiceImpl implements SchedulingService {
}
/**
* @return java.util.Map<java.lang.String, java.lang.Object>
* @Author LR
* @Description 查询派工单--取消排产检查校验
* @DateTime 2022/8/17 14:26
* @DateTime 2022/8/17 14:26
* @Param [site, orderNo, itemNo, seqNo]
* @return java.util.Map<java.lang.String,java.lang.Object>
**/
public Map<String, Object> checkCancelScheduleWithScheduleQuery(String site, String orderNo, int itemNo, String seqNo) {
List<Object> params = new ArrayList<>();
@ -1204,4 +1222,48 @@ public class SchedulingServiceImpl implements SchedulingService {
return Integer.parseInt(strItemNo);
}
@Override
@Transactional
public void batchScheduleOrderWithExpand(List<SearchScheduleData> inDatas) {
for (SearchScheduleData inData : inDatas) {
//获取当前的calendarId
Map<String, Object> 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<String, Object> 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<String, Object> 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);
}
}
}
}

3
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

Loading…
Cancel
Save