|
@@ -620,9 +620,9 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
vo.setInitValue(0L);
|
|
|
Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
|
|
|
heatNumber = codeData.get("code").toString();
|
|
|
- if (StringUtils.isNotBlank(heatNumber)){
|
|
|
+ if (StringUtils.isNotBlank(heatNumber)) {
|
|
|
//判断如果heatNumber如果为000时再次调用序列号接口/修复跨月流水号问题
|
|
|
- if ("000".equals(heatNumber)){
|
|
|
+ if ("000".equals(heatNumber)) {
|
|
|
codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
|
|
|
heatNumber = codeData.get("code").toString();
|
|
|
}
|
|
@@ -909,7 +909,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(apsBlankOrderDo.getProductionorderid());
|
|
|
//合并加工作业开工之后进行报工,同步更新一起开工的其他作业的加工参数
|
|
|
if (ObjectUtil.isNotEmpty(apsReportMachiningDoList)) {
|
|
|
- syncOtherEquRecords(apsProcessOperationDo,apsProcessOperationProcessEquDo,nowReportRecordsDo.getProcessequid(),apsReportMachiningDoList,currentUser);
|
|
|
+ syncOtherEquRecords(apsProcessOperationDo, apsProcessOperationProcessEquDo, nowReportRecordsDo.getProcessequid(), apsReportMachiningDoList, currentUser);
|
|
|
}
|
|
|
|
|
|
//如果工序作业是否坯料工序=是,检查每个报工输出物料批次号
|
|
@@ -970,6 +970,35 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
processEquWrapper.set(ApsProcessOperationProcessEquDo::getWaitreportid, null)
|
|
|
.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, null);
|
|
|
|
|
|
+ //更新作业明细报工料卷批次号,如果输入物料有批次号,报工料卷批次号后面拼接{输入物料批次号}
|
|
|
+ String reportBatchNumber = apsProcessOperationProcessEquDo.getReportbatchnumber();
|
|
|
+ if (StringUtils.isNotBlank(nowReportRecordsDo.getBatchnumber())){
|
|
|
+ if (StringUtils.isNotBlank(reportBatchNumber)){
|
|
|
+ if (!reportBatchNumber.contains(nowReportRecordsDo.getBatchnumber())){
|
|
|
+ reportBatchNumber = reportBatchNumber+","+nowReportRecordsDo.getBatchnumber();
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ reportBatchNumber = nowReportRecordsDo.getBatchnumber();
|
|
|
+ }
|
|
|
+ processEquWrapper.set(ApsProcessOperationProcessEquDo::getReportbatchnumber, reportBatchNumber);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 如果该作业是该坯料计划第一道作业。并且作业是否坯料工序=是,需要更新当前作业明细的坯料批次号=当前作业明细输出物料批次号
|
|
|
+ * 如果作业是否坯料工序=是,则更新该作业明细所有后道作业明细的坯料批次号=该作业明细输出物料批次号。
|
|
|
+ * 如果作业是否坯料工序=否,则更新该作业明细所有后道作业明细的坯料批次号=该作业明细输入物料批次号。
|
|
|
+ */
|
|
|
+ if (StringUtils.isBlank(apsProcessOperationProcessEquDo.getPreviousprocessesids())){
|
|
|
+ //取出当前报工记录的输出物料编号列表
|
|
|
+ List<String> outputNumbers = apsReportOutputDoList.stream().map(ApsReportOutputDo::getOutputnumber).collect(Collectors.toList());
|
|
|
+ String outPutNumber = "";
|
|
|
+ if (!outputNumbers.isEmpty()){
|
|
|
+ outPutNumber = String.join(",",outputNumbers);
|
|
|
+ if (StringUtils.isNotBlank(apsProcessOperationDo.getIfblankprocess()) && "是".equals(apsProcessOperationDo.getIfblankprocess())){
|
|
|
+ processEquWrapper.set(ApsProcessOperationProcessEquDo::getBlankbatchnumber, outPutNumber);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ updateAfterBlankByBatchAndOutPutNumber(apsProcessOperationDo,nowReportRecordsDo,apsProcessOperationProcessEquDo,outPutNumber);
|
|
|
+ }
|
|
|
//更新
|
|
|
apsProcessOperationProcessEquService.update(processEquWrapper);
|
|
|
|
|
@@ -1135,7 +1164,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
String outputdesc = "";
|
|
|
outputdesc += outputDo.getOutputmaterial().split(" ")[0];
|
|
|
outputdesc += " 厚" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getThickness()) + "*宽" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getWidth());
|
|
|
- if (ObjectUtil.isNotEmpty(outputDo.getLength())) {
|
|
|
+ if (ObjectUtil.isNotEmpty(outputDo.getLength())
|
|
|
+ && !CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getLength()).equals("0")) {
|
|
|
outputdesc += "*长" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getLength());
|
|
|
}
|
|
|
outputdesc += " mm " + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getWeight()) + "吨";
|
|
@@ -1710,6 +1740,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
startWorkLock.remove(req.getUseDeviceId());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
@NotNull
|
|
|
private String toSortBatchNumber(@NotNull String batchNumber) {
|
|
|
String[] parts = batchNumber.split("-");
|
|
@@ -1733,18 +1764,18 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
|
- private int sortAsc(List<String> parts1,List<String> parts2){
|
|
|
+ private int sortAsc(List<String> parts1, List<String> parts2) {
|
|
|
int length1 = parts1.size();
|
|
|
int length2 = parts2.size();
|
|
|
- if(length1 == 0){
|
|
|
+ if (length1 == 0) {
|
|
|
return -1;
|
|
|
}
|
|
|
- if(length2 == 0){
|
|
|
+ if (length2 == 0) {
|
|
|
return 1;
|
|
|
}
|
|
|
if (Integer.parseInt(parts1.get(0).replace("*", "")) != Integer.parseInt(parts2.get(0).replace("*", ""))) {
|
|
|
return Integer.parseInt(parts1.get(0).replace("*", "")) - Integer.parseInt(parts2.get(0).replace("*", ""));
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
parts1.remove(0);
|
|
|
parts2.remove(0);
|
|
|
return sortAsc(parts1, parts2);
|
|
@@ -1754,34 +1785,35 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
|
|
|
/**
|
|
|
* 更新合并加工的工序作业明细相关的报工记录下面的报工记录加工参数子表数据
|
|
|
+ *
|
|
|
* @param apsProcessOperationDo
|
|
|
* @param apsProcessOperationProcessEquDo
|
|
|
* @param processEquId
|
|
|
* @param apsReportMachiningDoList
|
|
|
*/
|
|
|
- private void syncOtherEquRecords(ApsProcessOperationDo apsProcessOperationDo,ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo,String processEquId,List<ApsReportMachiningDo> apsReportMachiningDoList,SysUserVo currentUser){
|
|
|
+ private void syncOtherEquRecords(ApsProcessOperationDo apsProcessOperationDo, ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo, String processEquId, List<ApsReportMachiningDo> apsReportMachiningDoList, SysUserVo currentUser) {
|
|
|
List<ApsReportMachiningDo> machList = apsReportMachiningService.list();
|
|
|
List<String> mainRecordIds = machList.stream().map(ApsReportMachiningDo::getMainid).distinct().collect(Collectors.toList());
|
|
|
- if ("合并加工".equals(apsProcessOperationDo.getProcessway())){
|
|
|
+ if ("合并加工".equals(apsProcessOperationDo.getProcessway())) {
|
|
|
List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
.eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, apsProcessOperationProcessEquDo.getProcessdeviceid())
|
|
|
- .eq(ApsProcessOperationProcessEquDo::getPlanstartdate,apsProcessOperationProcessEquDo.getPlanstartdate())
|
|
|
- .eq(ApsProcessOperationProcessEquDo::getProcessid,apsProcessOperationDo.getId())
|
|
|
- .notIn(ApsProcessOperationProcessEquDo::getId,processEquId)
|
|
|
- .and(qw-> qw.gt(ApsProcessOperationProcessEquDo::getActualfinishdate,apsProcessOperationProcessEquDo.getActualstartdate()).or().isNull(ApsProcessOperationProcessEquDo::getActualfinishdate)));
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getPlanstartdate, apsProcessOperationProcessEquDo.getPlanstartdate())
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getProcessid, apsProcessOperationDo.getId())
|
|
|
+ .notIn(ApsProcessOperationProcessEquDo::getId, processEquId)
|
|
|
+ .and(qw -> qw.gt(ApsProcessOperationProcessEquDo::getActualfinishdate, apsProcessOperationProcessEquDo.getActualstartdate()).or().isNull(ApsProcessOperationProcessEquDo::getActualfinishdate)));
|
|
|
List<String> equIds = list.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
|
|
|
- log.info("待同步工序作业主键数据:{}",equIds);
|
|
|
- if (!equIds.isEmpty()){
|
|
|
+ log.info("待同步工序作业主键数据:{}", equIds);
|
|
|
+ if (!equIds.isEmpty()) {
|
|
|
List<ApsReportRecordsDo> recordsDos = this.list(new LambdaQueryWrapper<ApsReportRecordsDo>()
|
|
|
.eq(ApsReportRecordsDo::getDeleted, "0")
|
|
|
.in(ApsReportRecordsDo::getProcessequid, equIds)
|
|
|
- .in(ApsReportRecordsDo::getReportworkstatus,"已开工","已报工"));
|
|
|
- recordsDos.forEach(info ->{
|
|
|
- if (mainRecordIds.contains(info.getId())){
|
|
|
+ .in(ApsReportRecordsDo::getReportworkstatus, "已开工", "已报工"));
|
|
|
+ recordsDos.forEach(info -> {
|
|
|
+ if (mainRecordIds.contains(info.getId())) {
|
|
|
apsReportMachiningService.remove(new LambdaUpdateWrapper<ApsReportMachiningDo>()
|
|
|
.eq(ApsReportMachiningDo::getMainid, info.getId()));
|
|
|
}
|
|
|
- apsReportMachiningDoList.forEach(mach->{
|
|
|
+ apsReportMachiningDoList.forEach(mach -> {
|
|
|
mach.setId(SecurityUtil.getUUID());
|
|
|
mach.setMainid(info.getId());
|
|
|
mach.setCreatedate(new Date());
|
|
@@ -1791,7 +1823,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
mach.setModifyuserid(currentUser.getId());
|
|
|
mach.setModifyusername(currentUser.getName());
|
|
|
});
|
|
|
- if (!apsReportMachiningDoList.isEmpty()){
|
|
|
+ if (!apsReportMachiningDoList.isEmpty()) {
|
|
|
apsReportMachiningService.saveBatch(apsReportMachiningDoList);
|
|
|
}
|
|
|
});
|
|
@@ -1799,6 +1831,31 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 递归所有后道工序作业明细
|
|
|
+ * @param apsProcessOperationDo
|
|
|
+ * @param nowReportRecordsDo
|
|
|
+ * @param processOperationProcessEquDo
|
|
|
+ */
|
|
|
+ private void updateAfterBlankByBatchAndOutPutNumber(ApsProcessOperationDo apsProcessOperationDo,ApsReportRecordsDo nowReportRecordsDo,ApsProcessOperationProcessEquDo processOperationProcessEquDo,String outPutNumber) {
|
|
|
+ if (StringUtils.isNotBlank(processOperationProcessEquDo.getNextprocessesids())) {
|
|
|
+ List<ApsProcessOperationProcessEquDo> processOperationProcessEquDos = apsProcessOperationDao.getNextProcessOperationEqusByNextIds(processOperationProcessEquDo.getNextprocessesids().replace(",", "','"));
|
|
|
+ for (ApsProcessOperationProcessEquDo processOperationEquDo : processOperationProcessEquDos) {
|
|
|
+ if (StringUtils.isNotBlank(apsProcessOperationDo.getIfblankprocess()) && "是".equals(apsProcessOperationDo.getIfblankprocess())){
|
|
|
+ //是否坯料工序为是则更新该作业明细所有后道作业明细的坯料批次号=该作业明细输出物料批次号。
|
|
|
+ if (StringUtils.isNotBlank(outPutNumber)){
|
|
|
+ processOperationEquDo.setBlankbatchnumber(outPutNumber);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //是否坯料工序为否则更新该作业明细所有后道作业明细的坯料批次号=该作业明细输入物料批次号。
|
|
|
+ processOperationEquDo.setBlankbatchnumber(nowReportRecordsDo.getBatchnumber());
|
|
|
+ }
|
|
|
+ apsProcessOperationProcessEquService.updateById(processOperationEquDo);
|
|
|
+ updateAfterBlankByBatchAndOutPutNumber(apsProcessOperationDo,nowReportRecordsDo,processOperationEquDo,outPutNumber);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|