|
@@ -29,6 +29,10 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.io.BufferedWriter;
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileWriter;
|
|
|
+import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.time.LocalDateTime;
|
|
@@ -264,7 +268,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 更新排程明细数据锁定状态为否
|
|
|
/*processOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().set(ApsProcessOperationProcessEquDo::getLockmark,"n")
|
|
|
.in(ApsProcessOperationProcessEquDo::getBlankid,blankOrderIds));*/
|
|
|
- apsBlankOrderDao.setProDetailLockMark(blankidStrs,currentUser.getId(),currentUser.getName());
|
|
|
+ apsBlankOrderDao.setProDetailLockMark(blankidStrs, currentUser.getId(), currentUser.getName());
|
|
|
}
|
|
|
// 排程
|
|
|
List<ProductionScheduleVo> productionScheduleVos = new ArrayList<>();
|
|
@@ -638,7 +642,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 更新排程明细数据锁定状态为否
|
|
|
/*processOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().set(ApsProcessOperationProcessEquDo::getLockmark,"n")
|
|
|
.in(ApsProcessOperationProcessEquDo::getBlankid,blankOrderIds));*/
|
|
|
- apsBlankOrderDao.setProDetailLockMark(blankidStrs,currentUser.getId(),currentUser.getName());
|
|
|
+ apsBlankOrderDao.setProDetailLockMark(blankidStrs, currentUser.getId(), currentUser.getName());
|
|
|
}
|
|
|
// 排程
|
|
|
List<ProductionScheduleVo> productionScheduleVos = new ArrayList<>();
|
|
@@ -765,6 +769,8 @@ public class ApsServiceImpl implements ApsService {
|
|
|
logger.info("排程数据:" + JSONUtil.toJsonStr(apsProductionSchedule, jsonConfig));
|
|
|
// APS平台排程接口调用
|
|
|
ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(apsProductionSchedule);
|
|
|
+ //日志写入文件
|
|
|
+ logWriter(JSONUtil.toJsonStr(apsProductionSchedule, jsonConfig), JSONUtil.toJsonStr(productionScheduleRetVo, jsonConfig), apsType.getScheduleType());
|
|
|
if (!"200".equals(productionScheduleRetVo.getCode())) {
|
|
|
logger.info("排程异常,坯料计划ID:" + blankOrderIds);
|
|
|
// 排程异常后恢复历史排程结果为锁定状态
|
|
@@ -786,7 +792,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
apsBlankOrderService.apsAfter(productionScheduleRetVo, apsBlankOrders, currentUser, apsType);
|
|
|
}
|
|
|
//还原排程过程中,开工/报工的作业的计划时间
|
|
|
- apsProcessOperationProcessEquDao.repairePlanStartDate(currentUser.getId(),currentUser.getName());
|
|
|
+ apsProcessOperationProcessEquDao.repairePlanStartDate(currentUser.getId(), currentUser.getName());
|
|
|
|
|
|
if (StrUtil.isNotBlank(productionScheduleRetVo.getMsg())) {
|
|
|
// 排程异常后恢复历史排程结果为锁定状态
|
|
@@ -809,6 +815,37 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private static void logWriter(String req, String res, String scheduleType) {
|
|
|
+ String fileName = "";
|
|
|
+ if (scheduleType.equals("dd")) {
|
|
|
+ fileName = "调度";
|
|
|
+ } else {
|
|
|
+ fileName = "预排程";
|
|
|
+ }
|
|
|
+ String now = DateUtil.format(DateUtil.date(), "yyyy-MM-dd");
|
|
|
+ fileName += DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss");
|
|
|
+ String filePath = "../rw-aps/" + now + "/" + fileName + ".txt";
|
|
|
+ String content = req + "\r\n" + res;
|
|
|
+ // 创建File对象
|
|
|
+ File file = new File(filePath);
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 如果文件不存在,则创建新文件
|
|
|
+ if (!file.exists()) {
|
|
|
+ file.getParentFile().mkdirs(); // 确保父目录存在
|
|
|
+ file.createNewFile();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用BufferedWriter写入内容
|
|
|
+ BufferedWriter writer = new BufferedWriter(new FileWriter(file));
|
|
|
+ writer.write(content);
|
|
|
+ writer.close();
|
|
|
+
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 计算合并退火的个数
|
|
|
*
|
|
@@ -1516,7 +1553,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
item.getProcessid().equals(operationDo.getId())
|
|
|
&& ObjectUtil.isNotEmpty(item.getProcessdeviceid())
|
|
|
&& !"".equals(item.getProcessdeviceid())
|
|
|
- && !(ObjectUtil.isNotEmpty(item.getCancelroll()) && item.getCancelroll() >= item.getPlanprocessrall()))
|
|
|
+ && !(ObjectUtil.isNotEmpty(item.getCancelroll()) && item.getCancelroll() >= item.getPlanprocessrall()))
|
|
|
.sorted(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate))
|
|
|
.collect(Collectors.toList());
|
|
|
for (ApsProcessOperationProcessEquDo processDetail : processDetails) {
|
|
@@ -1722,7 +1759,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
} else {
|
|
|
for (Integer i = 0; i < operationDo.getPlanprocessrall() - operationDo.getCancelrollsum(); i++) {
|
|
|
- if (processEquDos != null && i >= processEquDos.size() && !processEquDos.isEmpty()){
|
|
|
+ if (processEquDos != null && i >= processEquDos.size() && !processEquDos.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
|