Browse Source

结束卷代码

master
Rui_Li 4 years ago
parent
commit
a48b90837f
  1. 63
      src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java
  2. 172
      src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java
  3. 39
      src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java
  4. 572
      src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java
  5. 4
      src/main/resources/mapper/schedule/ScheduleMapper.xml

63
src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java

@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -432,7 +433,7 @@ public class ScheduleController {
* @return com.gaotao.common.utils.R * @return com.gaotao.common.utils.R
**/ **/
@RequestMapping(value = "getScheduleShiftData") @RequestMapping(value = "getScheduleShiftData")
public R getScheduleShiftData(@RequestBody SearchScheduleData inData){
public R getScheduleShiftData(@RequestBody SearchScheduleData inData) throws ParseException {
Map<String, Object> result = scheduleService.getScheduleShiftData(inData); Map<String, Object> result = scheduleService.getScheduleShiftData(inData);
return R.ok() return R.ok()
.put("code", 200) .put("code", 200)
@ -752,36 +753,6 @@ public class ScheduleController {
.put("msg", "操作成功!"); .put("msg", "操作成功!");
} }
/**
* TODO 检查是否可以结束卷操作
* @author LR
* @date 2022/1/13 16:55
* @param inMap
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "checkFinishRoll")
public R checkFinishRoll(@RequestBody Map<String, Object> inMap){
Map<String, Object> resultMap = scheduleService.checkFinishRoll(inMap);
return R.ok()
.put("resultMap", resultMap);
}
/**
* TODO 结束卷操作
* @author LR
* @date 2022/1/13 17:38
* @param inMap
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "finishRoll")
public R finishRoll(@RequestBody Map<String, Object> inMap){
scheduleService.finishRoll(inMap);
return R.ok()
.put("code", 200)
.put("success", true)
.put("msg", "操作成功!");
}
/** /**
* TODO 工具的使用的数量 * TODO 工具的使用的数量
* @author LR * @author LR
@ -859,4 +830,34 @@ public class ScheduleController {
.put("msg", "操作成功!"); .put("msg", "操作成功!");
} }
/**
* @Author LR 结束卷校验--非FQC和最后一道
* @Description
* @DateTime 2022/1/25 13:30
* @Param [inMap]
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "checkFinishRollWithNoFqc")
public R checkFinishRollWithNoFqc(@RequestBody Map<String, Object> inMap){
Map<String, Object> resultMap = scheduleService.checkFinishRollWithNoFqc(inMap);
return R.ok()
.put("resultMap", resultMap);
}
/**
* TODO 结束卷操作--非FQC和最后一道
* @author LR
* @date 2022/1/19 14:46
* @param inMap
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "finishRollNoWithNoFqc")
public R finishRollNoWithNoFqc(@RequestBody Map<String, Object> inMap){
scheduleService.finishRollNoWithNoFqc(inMap);
return R.ok()
.put("code", 200)
.put("success", true)
.put("msg", "操作成功!");
}
} }

172
src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java

@ -68,11 +68,31 @@ public class SearchScheduleData extends BaseData {
private Float defectQty;//不良的数量 private Float defectQty;//不良的数量
private String toolInstanceId;//工具实例的编码 private String toolInstanceId;//工具实例的编码
private String shiftNo;//班次信息 private String shiftNo;//班次信息
private String shiftDesc;//班次信息
private Float approvedQty;//良品的总数量 private Float approvedQty;//良品的总数量
private String reportedTime;//组合好的日期 private String reportedTime;//组合好的日期
private String oriToolInstanceId;//原工具实例的编码 private String oriToolInstanceId;//原工具实例的编码
private Float consumeQty;//使用的数量 private Float consumeQty;//使用的数量
private Float downTimeQty;//停机的时长 private Float downTimeQty;//停机的时长
private Float sfdcReportedQty;//报告数量
private Float totalQty;//总数量
private Float otherRollQty;//其他卷的数量
private Float editNewRollQty; // 未生产的下机拆卷
private Float sfdcApprovedQty;//合格数量
private Float defectedQty;//不良的数量
private Float sfdcSetupTime;//调机时间
private Float sfdcProdTime;//生产时间
private Float sfdcDownTime;//停机时间
private String eventTime;//开工时间
private String tillTime;//完工时间
private String scheduledDate;//排产时间
private String remark;//备注
private Float sfdcSetupDownTime;//调机停机
private Float sfdcProdSetupTime;//生产调机
private Float sfdcManufactureTime;//制造时间
private String exceptionFlag;//异常标记
private String exceptionReason;//异常的原因
public SearchScheduleData() { public SearchScheduleData() {
} }
@ -405,6 +425,14 @@ public class SearchScheduleData extends BaseData {
this.shiftNo = shiftNo; this.shiftNo = shiftNo;
} }
public String getShiftDesc() {
return shiftDesc;
}
public void setShiftDesc(String shiftDesc) {
this.shiftDesc = shiftDesc;
}
public Float getApprovedQty() { public Float getApprovedQty() {
return approvedQty; return approvedQty;
} }
@ -436,4 +464,148 @@ public class SearchScheduleData extends BaseData {
public void setDownTimeQty(Float downTimeQty) { public void setDownTimeQty(Float downTimeQty) {
this.downTimeQty = downTimeQty; this.downTimeQty = downTimeQty;
} }
public Float getSfdcReportedQty() {
return sfdcReportedQty;
}
public void setSfdcReportedQty(Float sfdcReportedQty) {
this.sfdcReportedQty = sfdcReportedQty;
}
public Float getTotalQty() {
return totalQty;
}
public void setTotalQty(Float totalQty) {
this.totalQty = totalQty;
}
public Float getOtherRollQty() {
return otherRollQty;
}
public void setOtherRollQty(Float otherRollQty) {
this.otherRollQty = otherRollQty;
}
public Float getEditNewRollQty() {
return editNewRollQty;
}
public void setEditNewRollQty(Float editNewRollQty) {
this.editNewRollQty = editNewRollQty;
}
public Float getSfdcApprovedQty() {
return sfdcApprovedQty;
}
public void setSfdcApprovedQty(Float sfdcApprovedQty) {
this.sfdcApprovedQty = sfdcApprovedQty;
}
public Float getDefectedQty() {
return defectedQty;
}
public void setDefectedQty(Float defectedQty) {
this.defectedQty = defectedQty;
}
public Float getSfdcSetupTime() {
return sfdcSetupTime;
}
public void setSfdcSetupTime(Float sfdcSetupTime) {
this.sfdcSetupTime = sfdcSetupTime;
}
public Float getSfdcProdTime() {
return sfdcProdTime;
}
public void setSfdcProdTime(Float sfdcProdTime) {
this.sfdcProdTime = sfdcProdTime;
}
public Float getSfdcDownTime() {
return sfdcDownTime;
}
public void setSfdcDownTime(Float sfdcDownTime) {
this.sfdcDownTime = sfdcDownTime;
}
public String getEventTime() {
return eventTime;
}
public void setEventTime(String eventTime) {
this.eventTime = eventTime;
}
public String getTillTime() {
return tillTime;
}
public void setTillTime(String tillTime) {
this.tillTime = tillTime;
}
public String getScheduledDate() {
return scheduledDate;
}
public void setScheduledDate(String scheduledDate) {
this.scheduledDate = scheduledDate;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Float getSfdcSetupDownTime() {
return sfdcSetupDownTime;
}
public void setSfdcSetupDownTime(Float sfdcSetupDownTime) {
this.sfdcSetupDownTime = sfdcSetupDownTime;
}
public Float getSfdcProdSetupTime() {
return sfdcProdSetupTime;
}
public void setSfdcProdSetupTime(Float sfdcProdSetupTime) {
this.sfdcProdSetupTime = sfdcProdSetupTime;
}
public Float getSfdcManufactureTime() {
return sfdcManufactureTime;
}
public void setSfdcManufactureTime(Float sfdcManufactureTime) {
this.sfdcManufactureTime = sfdcManufactureTime;
}
public String getExceptionFlag() {
return exceptionFlag;
}
public void setExceptionFlag(String exceptionFlag) {
this.exceptionFlag = exceptionFlag;
}
public String getExceptionReason() {
return exceptionReason;
}
public void setExceptionReason(String exceptionReason) {
this.exceptionReason = exceptionReason;
}
} }

39
src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java

@ -4,6 +4,7 @@ import com.gaotao.modules.schedule.data.*;
import com.gaotao.modules.shopOrder.entity.OperatorData; import com.gaotao.modules.shopOrder.entity.OperatorData;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.text.ParseException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -238,7 +239,7 @@ public interface ScheduleService {
* @param inData * @param inData
* @return java.util.Map<java.lang.String, java.lang.Object> * @return java.util.Map<java.lang.String, java.lang.Object>
**/ **/
Map<String, Object> getScheduleShiftData(SearchScheduleData inData);
Map<String, Object> getScheduleShiftData(SearchScheduleData inData) throws ParseException;
/** /**
* TODO 获取sfdc表的时间汇总 * TODO 获取sfdc表的时间汇总
@ -420,24 +421,6 @@ public interface ScheduleService {
**/ **/
void endTuningAndStartProduce(Map<String, Object> inMap); void endTuningAndStartProduce(Map<String, Object> inMap);
/**
* TODO 检查是否可以结束卷操作
* @author LR
* @date 2022/1/13 16:56
* @param inMap
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
Map<String, Object> checkFinishRoll(@RequestBody Map<String, Object> inMap);
/**
* TODO 结束卷操作
* @author LR
* @date 2022/1/13 17:39
* @param inMap
* @return void
**/
void finishRoll(Map<String, Object> inMap);
/** /**
* TODO 工具的使用的数量 * TODO 工具的使用的数量
* @author LR * @author LR
@ -482,4 +465,22 @@ public interface ScheduleService {
* @return void * @return void
**/ **/
void connectMaterialRoll(SearchScheduleData inData); void connectMaterialRoll(SearchScheduleData inData);
/**
* @Author LR 结束卷校验--非FQC和最后一道
* @Description
* @DateTime 2022/1/25 13:32
* @Param [inMap]
* @return java.util.Map<java.lang.String,java.lang.Object>
**/
Map<String, Object> checkFinishRollWithNoFqc(Map<String, Object> inMap);
/**
* @Author LR
* @Description 结束卷操作--非FQC和最后一道
* @DateTime 2022/1/25 13:33
* @Param [inMap]
* @return void
**/
void finishRollNoWithNoFqc(Map<String, Object> inMap);
} }

572
src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java

@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException;
import java.util.*; import java.util.*;
/** /**
@ -63,6 +64,14 @@ public class ScheduleServiceImpl implements ScheduleService {
if(!searchFlag){ if(!searchFlag){
return new ArrayList<ScheduleData>(); return new ArrayList<ScheduleData>();
} }
//把查询时间结束参数添加一天
Date planStartTime2 = inData.getPlanStartTime2();
//判断是否是null
if(planStartTime2 != null){
planStartTime2 = DateUtils.addDateDays(planStartTime2, 1);
//重置参数
inData.setPlanStartTime2(planStartTime2);
}
return scheduleMapper.getProduceScheduleData(inData); return scheduleMapper.getProduceScheduleData(inData);
} }
@ -196,7 +205,8 @@ public class ScheduleServiceImpl implements ScheduleService {
Float totalDowntimeTimeSetup = Float.parseFloat(strTotalDowntimeTimeSetup); Float totalDowntimeTimeSetup = Float.parseFloat(strTotalDowntimeTimeSetup);
//减法算净调机时间 //减法算净调机时间
Float totalPureSetupTime = totalSetupTime - totalDowntimeTimeSetup; Float totalPureSetupTime = totalSetupTime - totalDowntimeTimeSetup;
BigDecimal bgTotalPureSetupTime = new BigDecimal(totalPureSetupTime).setScale(2, BigDecimal.ROUND_UP);
totalPureSetupTime = bgTotalPureSetupTime.floatValue();
//处理生产的时间 //处理生产的时间
String strTotalProdTime = String.valueOf(result.get("totalProdTime")); String strTotalProdTime = String.valueOf(result.get("totalProdTime"));
//判断null //判断null
@ -352,7 +362,7 @@ public class ScheduleServiceImpl implements ScheduleService {
} }
@Override @Override
public Map<String, Object> getScheduleShiftData(SearchScheduleData inData) {
public Map<String, Object> getScheduleShiftData(SearchScheduleData inData) throws ParseException {
//设置查询的条件 //设置查询的条件
inData.setCurrentDate(DateUtil.getStringDate(new Date(), "yyyy-MM-dd")); inData.setCurrentDate(DateUtil.getStringDate(new Date(), "yyyy-MM-dd"));
inData.setCurrentTime(DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss")); inData.setCurrentTime(DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
@ -362,7 +372,24 @@ public class ScheduleServiceImpl implements ScheduleService {
List<Map<String, Object>> resultList = scheduleMapper.getScheduleShiftData(inData); List<Map<String, Object>> resultList = scheduleMapper.getScheduleShiftData(inData);
//判断是否查询到结果数据 //判断是否查询到结果数据
if(resultList.size() > 0){ if(resultList.size() > 0){
result = resultList.get(0);
//循环处理数据
for (int i = 0; i < resultList.size(); i++){
Map<String, Object> tempMap = resultList.get(i);
Float curTime = Float.parseFloat(String.valueOf(tempMap.get("curTime")));
Float startTime = Float.parseFloat(String.valueOf(tempMap.get("startTime")));
Float endTime = Float.parseFloat(String.valueOf(tempMap.get("endTime")));
//区分各类情况
if (curTime < startTime){
result.put("code", "500");
result.put("shiftDesc", "无班次");
break;
}else if (curTime >= startTime && curTime <= endTime){
result = resultList.get(i);
break;
}else{
result = resultList.get(i);
}
}
result.put("code", "200"); result.put("code", "200");
}else{ }else{
result.put("code", "500"); result.put("code", "500");
@ -1462,125 +1489,6 @@ public class ScheduleServiceImpl implements ScheduleService {
procedureMapper.execProduceData("endTuning", params); procedureMapper.execProduceData("endTuning", params);
} }
@Override
public Map<String, Object> checkFinishRoll(@RequestBody Map<String, Object> inMap) {
String strPageData = String.valueOf(inMap.get("pageData"));
SearchScheduleData pageData = JSON.parseObject(strPageData, SearchScheduleData.class);
String strSfdcMaterialList = String.valueOf(inMap.get("materialList"));
List<SfdcMaterialData> sfdcMaterialList = JSON.parseArray(strSfdcMaterialList, SfdcMaterialData.class);
//公共参数
String site = pageData.getSite();
String orderNo = pageData.getOrderNo();
Integer itemNo = pageData.getItemNo();
String seqNo = pageData.getSeqNo();
String rollNo = pageData.getRollNo();
String resourceId = pageData.getResourceId();
String shiftNo = pageData.getShiftNo();
Float approvedQty = pageData.getApprovedQty();
Date scheduleDate = pageData.getScheduleDate();
String scheduleTime = DateUtil.getStringDate(scheduleDate, "yyyy-MM-dd");
String reportedTime = pageData.getReportedTime();
//判断报工的数量是否为正整数
Double remainderQty = approvedQty % 1.0;
if(remainderQty > 0){
throw new RRException("总良品数量不允许输入小数!");
}
//先循环验证参数是否符合规则
for (int i = 0; i < sfdcMaterialList.size(); i++){
SfdcMaterialData sfdcMaterialData = sfdcMaterialList.get(0);
Float transQty = sfdcMaterialData.getTransQty();
Float netIssueQty = sfdcMaterialData.getNetIssueQty();
//判断是否符合规则
if (netIssueQty == null){
throw new RRException("材料上本卷耗用数量不能为空!");
}
if (netIssueQty <= 0){
throw new RRException("材料上本卷耗用数量必须大于0!");
}
if (netIssueQty > transQty){
throw new RRException("材料上本卷耗用数量大于发料数量!");
}
}
//首先检查材料是否可以开始生产
Map<String, Object> materialMap = this.checkCompleteMaterialRoll(site, orderNo, itemNo, seqNo, rollNo);
//判断是否可以
String materialCode = String.valueOf(materialMap.get("resultCode"));
if (!"200".equalsIgnoreCase(materialCode)){
String materialMsg = String.valueOf(materialMap.get("resultMsg"));
throw new RRException(materialMsg);
}
//其次检查工具是否可以开始生产
Map<String, Object> toolMap = this.checkCompleteToolId(site, orderNo, itemNo, seqNo, rollNo);
//判断是否可以
String toolCode = String.valueOf(materialMap.get("resultCode"));
if (!"200".equalsIgnoreCase(toolCode)){
String toolMsg = String.valueOf(toolMap.get("resultMsg"));
throw new RRException(toolMsg);
}
//检查是否可以开始生产
Map<String, Object> resultMap = this.checkFinishRoll(site, orderNo, itemNo, seqNo, rollNo, scheduleTime, resourceId, shiftNo);
//判断是否是异常
String resultCode = String.valueOf(resultMap.get("resultCode"));
if ("400".equalsIgnoreCase(resultCode)){
String resultMsg = String.valueOf(resultMap.get("resultMsg"));
throw new RRException(resultMsg);
}
return resultMap;
}
/**
* TODO 结束卷校验
* @author LR
* @date 2022/1/13 18:11
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> checkFinishRoll(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String scheduleTime, String resourceId, String shiftNo) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(scheduleTime);
params.add(resourceId);
params.add(shiftNo);
//执行存储过程
List<Map<String, Object>> resultList = procedureMapper.getProcedureData("checkFinishRoll", params);
//返回执行的结果
return resultList.get(0);
}
@Override
@Transactional
public void finishRoll(Map<String, Object> inMap) {
//先验证是否可以结束卷的操作
this.checkFinishRoll(inMap);
//结束
String strPageData = String.valueOf(inMap.get("pageData"));
SearchScheduleData pageData = JSON.parseObject(strPageData, SearchScheduleData.class);
String strSfdcMaterialList = String.valueOf(inMap.get("materialList"));
List<SfdcMaterialData> sfdcMaterialList = JSON.parseArray(strSfdcMaterialList, SfdcMaterialData.class);
//公共参数
String site = pageData.getSite();
String orderNo = pageData.getOrderNo();
Integer itemNo = pageData.getItemNo();
String seqNo = pageData.getSeqNo();
String rollNo = pageData.getRollNo();
Float approvedQty = pageData.getApprovedQty();
Date scheduleDate = pageData.getScheduleDate();
String scheduleTime = DateUtil.getStringDate(scheduleDate, "yyyy-MM-dd");
//判断报工的数量是否为正整数
Double remainderQty = approvedQty % 1.0;
if(remainderQty > 0){
throw new RRException("总良品数量不允许输入小数!");
}
}
@Override @Override
public Float countToolUsedQty(SearchScheduleData inData) { public Float countToolUsedQty(SearchScheduleData inData) {
Float usedQty = scheduleMapper.countToolUsedQty(inData); Float usedQty = scheduleMapper.countToolUsedQty(inData);
@ -1806,4 +1714,424 @@ public class ScheduleServiceImpl implements ScheduleService {
procedureMapper.execProduceData( "connectMaterialRoll", params); procedureMapper.execProduceData( "connectMaterialRoll", params);
} }
@Override
public Map<String, Object> checkFinishRollWithNoFqc(Map<String, Object> inMap) {
String strPageData = String.valueOf(inMap.get("pageData"));
SearchScheduleData pageData = JSON.parseObject(strPageData, SearchScheduleData.class);
String strSfdcMaterialList = String.valueOf(inMap.get("materialList"));
List<SfdcMaterialData> sfdcMaterialList = JSON.parseArray(strSfdcMaterialList, SfdcMaterialData.class);
//公共参数
String site = pageData.getSite();
String orderNo = pageData.getOrderNo();
Integer itemNo = pageData.getItemNo();
String seqNo = pageData.getSeqNo();
String rollNo = pageData.getRollNo();
String username = pageData.getOperatorId();
Float approvedQty = pageData.getApprovedQty();
Float editReportQty = pageData.getSfdcReportedQty();
Float editTotalReportQty = pageData.getTotalQty();//总数量
Float editTotalApprovedQty = pageData.getApprovedQty();//总量数量
Float otherRollQty = pageData.getOtherRollQty();
Float editNewRollQty = pageData.getEditNewRollQty();
String scheduledDate = pageData.getScheduledDate();
String shiftDesc = pageData.getShiftDesc();
//判断报工的数量是否为正整数
Double remainderQty = approvedQty % 1.0;
if(remainderQty > 0){
throw new RRException("总良品数量不允许输入小数!");
}
//首先检查材料是否可以开始生产
Map<String, Object> materialMap = this.checkCompleteMaterialRoll(site, orderNo, itemNo, seqNo, rollNo);
//判断是否可以
String materialCode = String.valueOf(materialMap.get("resultCode"));
if (!"200".equalsIgnoreCase(materialCode)){
String materialMsg = String.valueOf(materialMap.get("resultMsg"));
throw new RRException(materialMsg);
}
//其次检查工具是否可以开始生产
Map<String, Object> toolMap = this.checkCompleteToolId(site, orderNo, itemNo, seqNo, rollNo);
//判断是否可以
String toolCode = String.valueOf(materialMap.get("resultCode"));
if (!"200".equalsIgnoreCase(toolCode)){
String toolMsg = String.valueOf(toolMap.get("resultMsg"));
throw new RRException(toolMsg);
}
//判断是否有主材上机
if (sfdcMaterialList.size() == 0){
throw new RRException("为扫描主材不可结束卷!");
}
//1.调用存储过程 校验工单 派工单 上机卷 信息是否符合条件
Map<String, Object> checkMap1 = this.checkFinishRollWithScheduleOpsShift(site, orderNo, itemNo, seqNo, rollNo, scheduledDate, shiftDesc);
//判断是否检验成功
String code1 = String.valueOf(checkMap1.get("resultCode"));
if ("400".equalsIgnoreCase(code1)){
String msg = String.valueOf(checkMap1.get("resultMsg"));
throw new RRException(msg);
}
//2.调用存储过程 校验是否可以下机卷
Map<String, Object> checkMap2 = this.checkFinishRollWithSfdcRoll(site, orderNo, itemNo, seqNo, rollNo);
//判断是否检验成功
String code2 = String.valueOf(checkMap2.get("resultCode"));
if ("400".equalsIgnoreCase(code2)){
String msg = String.valueOf(checkMap2.get("resultMsg"));
throw new RRException(msg);
}
//3.调用存储过程 校验不同工序间数量大小
Map<String, Object> checkMap3 = this.checkFinishRollWithSoRoutingQty(site, orderNo, itemNo, editReportQty);
//判断是否检验成功
String code3 = String.valueOf(checkMap3.get("resultCode"));
if ("400".equalsIgnoreCase(code3)){
String msg = String.valueOf(checkMap3.get("resultMsg"));
throw new RRException(msg);
}
//4.调用存储过程 上机的主材依次校验
//先循环验证参数是否符合规则
for (int i = 0; i < sfdcMaterialList.size(); i++){
SfdcMaterialData sfdcMaterialData = sfdcMaterialList.get(0);
Float transQty = sfdcMaterialData.getTransQty();
Float netIssueQty = sfdcMaterialData.getNetIssueQty();
Integer histSeqNo = sfdcMaterialData.getHistSeqNo();
//判断是否符合规则
if (netIssueQty == null){
throw new RRException("材料上本卷耗用数量不能为空!");
}
if (netIssueQty <= 0){
throw new RRException("材料上本卷耗用数量必须大于0!");
}
if (netIssueQty > transQty){
throw new RRException("材料上本卷耗用数量大于发料数量!");
}
//调用存储过程校验每一个卷的数量
Map<String, Object> resultMap = this.checkFinishRollWithSfdcMaterialHist(site, orderNo, itemNo, rollNo, seqNo, editTotalReportQty, otherRollQty, editNewRollQty, netIssueQty, histSeqNo, username);
//区分是否抛出异常的信息
String resultCode = String.valueOf(resultMap.get("resultCode"));
if ("400".equalsIgnoreCase(resultCode)){
String msg = String.valueOf(resultMap.get("resultMsg"));
throw new RRException(msg);
}
return resultMap;
}
return null;
}
/**
* @Author LR
* @Description 存储过程校验 单个材料的校验数据
* @DateTime 2022/1/25 15:05
* @Param [site, orderNo, itemNo, rollNo, seqNo, editTotalReportQty, otherRollQty, editNewRollQty, netIssueQty, histSeqNo]
* @return java.util.Map<java.lang.String,java.lang.Object>
**/
public Map<String, Object> checkFinishRollWithSfdcMaterialHist(String site, String orderNo, Integer itemNo, String rollNo, String seqNo, Float editTotalReportQty, Float otherRollQty,
Float editNewRollQty, Float netIssueQty, Integer histSeqNo, String username) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(editTotalReportQty);
params.add(otherRollQty);
params.add(editNewRollQty);
params.add(netIssueQty);
params.add(histSeqNo);
params.add(username);
//执行存储过程
List<Map<String, Object>> resultList = procedureMapper.getProcedureData( "checkFinishRollWithSfdcMaterialHist", params);
//返回执行的结果
return resultList.get(0);
}
/**
* @Author LR
* @Description 调用存储过程 校验工单 派工单 上机卷 信息是否符合条件
* @DateTime 2022/1/25 13:44
* @Param [site, orderNo, itemNo, seqNo, rollNo]
* @return java.util.Map<java.lang.String,java.lang.Object>
**/
public Map<String, Object> checkFinishRollWithScheduleOpsShift(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String scheduledDate, String shiftDesc) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(scheduledDate);
params.add(shiftDesc);
//执行存储过程
List<Map<String, Object>> resultList = procedureMapper.getProcedureData( "checkFinishRollWithScheduleOpsShift", params);
//返回执行的结果
return resultList.get(0);
}
/**
* @Author LR
* @Description
* @DateTime 2022/1/25 13:55
* @Param [site, orderNo, itemNo, seqNo, rollNo]
* @return java.util.Map<java.lang.String,java.lang.Object>
**/
public Map<String, Object> checkFinishRollWithSfdcRoll(String site, String orderNo, Integer itemNo, String seqNo, String rollNo) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
//执行存储过程
List<Map<String, Object>> resultList = procedureMapper.getProcedureData( "checkFinishRollWithSfdcRoll", params);
//返回执行的结果
return resultList.get(0);
}
/**
* @Author LR
* @Description 调用存储过程 校验不同工序间数量大小
* @DateTime 2022/1/25 14:13
* @Param [site, orderNo, itemNo, editReportQty]
* @return java.util.Map<java.lang.String,java.lang.Object>
**/
public Map<String, Object> checkFinishRollWithSoRoutingQty(String site, String orderNo, Integer itemNo, Float editReportQty) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(editReportQty);
//执行存储过程
List<Map<String, Object>> resultList = procedureMapper.getProcedureData( "checkFinishRollWithSoRoutingQty", params);
//返回执行的结果
return resultList.get(0);
}
@Override
@Transactional
public void finishRollNoWithNoFqc(Map<String, Object> inMap) {
String strPageData = String.valueOf(inMap.get("pageData"));
SearchScheduleData pageData = JSON.parseObject(strPageData, SearchScheduleData.class);
String strSfdcMaterialList = String.valueOf(inMap.get("materialList"));
List<SfdcMaterialData> sfdcMaterialList = JSON.parseArray(strSfdcMaterialList, SfdcMaterialData.class);
//公共参数
String site = pageData.getSite();
String orderNo = pageData.getOrderNo();
Integer itemNo = pageData.getItemNo();
String seqNo = pageData.getSeqNo();
String rollNo = pageData.getRollNo();
String username = pageData.getOperatorId();
Float editTotalReportQty = pageData.getTotalQty();//总数量
Float totalApprovedQty = pageData.getApprovedQty();//总良数量
Float otherRollQty = pageData.getOtherRollQty();
Float defectedQty = pageData.getDefectedQty();
Float editNewRollQty = pageData.getEditNewRollQty();
String reportedTime = pageData.getReportedTime();
Float sfdcReportedQty = pageData.getSfdcReportedQty();//报告数量
Float sfdcApprovedQty = pageData.getSfdcApprovedQty();//合格数量
Float sfdcSetupTime = pageData.getSfdcSetupTime();//调机时间
Float sfdcProdTime = pageData.getSfdcProdTime(); //生产时间
Float sfdcDownTime = pageData.getSfdcDownTime();//停机时间
String eventTime = pageData.getEventTime();//开工时间
String tillTime = pageData.getTillTime();//完工时间
String remark = pageData.getRemark();//备注
Float sfdcSetupDownTime = pageData.getSfdcSetupDownTime();//调机停机
Float sfdcProdSetupTime = pageData.getSfdcProdSetupTime();//生产调机
Float sfdcManufactureTime = pageData.getSfdcManufactureTime();//制造时间
String exceptionFlag = pageData.getExceptionFlag();
String exceptionReason = pageData.getExceptionReason();
//首先调用校验的方法
this.checkFinishRollWithNoFqc(inMap);
//1.调用存储过程 处理SfdcTimeHist的信息
this.finishRollProcessSfdcTimeHist(site, orderNo, itemNo, seqNo, rollNo, username, reportedTime);
//2.调用存储过程 处理SfdcToolHist的信息
this.finishRollProcessSfdcToolHist(site, orderNo, itemNo, seqNo, rollNo, editTotalReportQty, username, reportedTime);
//3.调用存储过程 处理SfdcMaterialHist的信息 --主材
//循环for循环处理
for (int i = 0; i < sfdcMaterialList.size(); i++){
SfdcMaterialData sfdcMaterialData = sfdcMaterialList.get(0);
Float netIssueQty = sfdcMaterialData.getNetIssueQty();
Integer histSeqNo = sfdcMaterialData.getHistSeqNo();
this.finishRollProcessSfdcMaterialHistWithKeyRm(site, orderNo, itemNo, seqNo, rollNo, netIssueQty, histSeqNo, username, reportedTime);
}
//4.调用存储过程 处理SfdcMaterialHist的信息 --非主材
this.finishRollProcessSfdcMaterialHistWithNotKeyRm(site, orderNo, itemNo, seqNo, rollNo, username, reportedTime);
//5.调用存储过程 处理SfdcRoll和SfdcRoollOps
this.finishRollProcessSfdcRollAndOps(site, orderNo, itemNo, seqNo, rollNo, totalApprovedQty, sfdcApprovedQty, defectedQty, username, reportedTime);
//6.调用存储过程 处理Sfdc和派工单
this.finishRollProcessSfdcAndSchedule(site, orderNo, itemNo, seqNo, rollNo, sfdcReportedQty, sfdcApprovedQty,
sfdcSetupTime, sfdcProdTime, sfdcDownTime, eventTime, tillTime, remark,
sfdcSetupDownTime, sfdcProdSetupTime, defectedQty, sfdcManufactureTime, username);
//7.调用存储过程 处理异常信息
if("Y".equalsIgnoreCase(exceptionFlag)){
this.finishRollProcessException(site, orderNo, itemNo, seqNo, rollNo, exceptionReason, username);
}
}
/**
* @Author LR
* @Description 调用存储过程 处理异常信息
* @DateTime 2022/1/26 14:00
* @Param [site, orderNo, itemNo, seqNo, rollNo, exceptionReason]
* @return void
**/
public void finishRollProcessException(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String exceptionReason, String username) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(exceptionReason);
params.add(username);
//执行存储过程
procedureMapper.execProduceData( "finishRollProcessException", params);
}
/**
* @Author LR
* @Description 处理Sfdc和派工单
* @DateTime 2022/1/25 17:50
* @return void
**/
public void finishRollProcessSfdcAndSchedule(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, Float sfdcReportedQty, Float sfdcApproveQty,
Float sfdcSetupTime, Float sfdcProdTime, Float sfdcDownTime, String eventTime, String tillTime, String remark,
Float sfdcSetupDownTime, Float sfdcProdSetupTime, Float defectedQty, Float sfdcManufactureTime, String username) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(sfdcReportedQty);
params.add(sfdcApproveQty);
params.add(sfdcSetupTime);
params.add(sfdcProdTime);
params.add(sfdcDownTime);
params.add(eventTime);
params.add(tillTime);
params.add(remark);
params.add(sfdcSetupDownTime);
params.add(sfdcProdSetupTime);
params.add(defectedQty);
params.add(sfdcManufactureTime);
params.add(username);
//执行存储过程
procedureMapper.execProduceData( "finishRollProcessSfdcAndSchedule", params);
}
/**
* @Author LR
* @Description 调用存储过程 处理SfdcRoll和SfdcRoollOps
* @DateTime 2022/1/25 16:53
* @Param [site, orderNo, itemNo, seqNo, rollNo, totalApprovedQty, sfdcApproveQty, defectedQty]
* @return void
**/
public void finishRollProcessSfdcRollAndOps(String site, String orderNo, Integer itemNo, String seqNo, String rollNo,
Float totalApprovedQty, Float sfdcApproveQty, Float defectedQty, String username, String reportedTime) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(totalApprovedQty);
params.add(sfdcApproveQty);
params.add(defectedQty);
params.add(username);
params.add(reportedTime);
//执行存储过程
procedureMapper.execProduceData( "finishRollProcessSfdcRollAndOps", params);
}
/**
* @Author LR
* @Description 调用存储过程 处理SfdcMaterialHist的信息 --非主材
* @DateTime 2022/1/25 15:39
* @Param [site, orderNo, itemNo, seqNo, rollNo, username, reportedTime]
* @return void
**/
public void finishRollProcessSfdcMaterialHistWithNotKeyRm(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String username, String reportedTime) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(username);
params.add(reportedTime);
//执行存储过程
procedureMapper.execProduceData( "finishRollProcessSfdcMaterialHistWithNotKeyRm", params);
}
/**
* @Author LR
* @Description 处理SfdcMaterialHist的信息 --主材 一次处理一个
* @DateTime 2022/1/25 15:36
* @Param [site, orderNo, itemNo, seqNo, rollNo, netIssueQty, histSeqNo, username, reportedTime]
* @return void
**/
public void finishRollProcessSfdcMaterialHistWithKeyRm(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, Float netIssueQty, Integer histSeqNo, String username, String reportedTime) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(netIssueQty);
params.add(histSeqNo);
params.add(username);
params.add(reportedTime);
//执行存储过程
procedureMapper.execProduceData( "finishRollProcessSfdcMaterialHistWithKeyRm", params);
}
/**
* @Author LR
* @Description 调用存储过程 处理SfdcToolHist的信息
* @DateTime 2022/1/25 15:31
* @Param [site, orderNo, itemNo, seqNo, rollNo, editTotalReportQty, username, reportedTime]
* @return void
**/
public void finishRollProcessSfdcToolHist(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, Float editTotalReportQty, String username, String reportedTime) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(editTotalReportQty);
params.add(username);
params.add(reportedTime);
//执行存储过程
procedureMapper.execProduceData( "finishRollProcessSfdcToolHist", params);
}
/**
* @Author LR
* @Description 调用存储过程 处理sfdcTime的信息
* @DateTime 2022/1/25 15:24
* @Param [site, orderNo, itemNo, seqNo, rollNo, username, reportedTime]
* @return void
**/
public void finishRollProcessSfdcTimeHist(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String username, String reportedTime) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
params.add(seqNo);
params.add(rollNo);
params.add(username);
params.add(reportedTime);
//执行存储过程
procedureMapper.execProduceData( "finishRollProcessSfdcTimeHist", params);
}
} }

4
src/main/resources/mapper/schedule/ScheduleMapper.xml

@ -675,8 +675,8 @@
<!--查询派工单的班次信息数据--> <!--查询派工单的班次信息数据-->
<select id="getScheduleShiftData" parameterType="SearchScheduleData" resultType="java.util.HashMap"> <select id="getScheduleShiftData" parameterType="SearchScheduleData" resultType="java.util.HashMap">
Select WR.ResourceID resourceId, CE.ScheduleDate scheduledDate, CES.ShiftNo shiftNo, CES.ShiftDesc shiftDesc, Select WR.ResourceID resourceId, CE.ScheduleDate scheduledDate, CES.ShiftNo shiftNo, CES.ShiftDesc shiftDesc,
(CONVERT(Decimal(20,6),CE.ScheduleDate) + CONVERT(Decimal(20,6),CES.StartTime / 24.0)) starttime,
(CONVERT(Decimal(20,6),CE.ScheduleDate) + CONVERT(Decimal(20,6),CES.EndTime / 24.0) + (case when CES.EndTime <![CDATA[<]]> CES.StartTime then 1.0 else 0.0 end)) endtime,
(CONVERT(Decimal(20,6),CE.ScheduleDate) + CONVERT(Decimal(20,6),CES.StartTime / 24.0)) startTime,
(CONVERT(Decimal(20,6),CE.ScheduleDate) + CONVERT(Decimal(20,6),CES.EndTime / 24.0) + (case when CES.EndTime <![CDATA[<]]> CES.StartTime then 1.0 else 0.0 end)) endTime,
(CONVERT(Decimal(20,6),Convert(datetime, #{currentTime}))) curTime (CONVERT(Decimal(20,6),Convert(datetime, #{currentTime}))) curTime
from WorkCenterResource as WR from WorkCenterResource as WR
,Calendar_Exception as CE,Calendar_Exception_Shift CES ,Calendar_Exception as CE,Calendar_Exception_Shift CES

Loading…
Cancel
Save