diff --git a/lms/nladmin-system/logPath_IS_UNDEFINED/XgAgvDeviceDriver/DEVICECODE_IS_UNDEFINED/2023-09-09.0.log b/lms/nladmin-system/logPath_IS_UNDEFINED/XgAgvDeviceDriver/DEVICECODE_IS_UNDEFINED/2023-09-09.0.log new file mode 100644 index 0000000..e69de29 diff --git a/lms/nladmin-system/nlsso-server/pom.xml b/lms/nladmin-system/nlsso-server/pom.xml index 549ab12..caa24a8 100644 --- a/lms/nladmin-system/nlsso-server/pom.xml +++ b/lms/nladmin-system/nlsso-server/pom.xml @@ -33,6 +33,25 @@ + + + com.yomahub + tlog-all-spring-boot-starter + 1.5.0 + + + + com.microsoft.sqlserver + mssql-jdbc + 6.4.0.jre8 + runtime + + + + com.oracle.database.jdbc + ojdbc5 + 11.2.0.4 + com.baomidou @@ -344,12 +363,6 @@ 2.5.14 - - com.oracle.database.jdbc - ojdbc5 - 11.2.0.4 - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java index bac4ab5..13a7e40 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java @@ -30,9 +30,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController @Api(hidden = true) @SpringBootApplication(exclude = { - org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class, - DataSourceAutoConfiguration.class, - DruidDataSourceAutoConfigure.class + org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class }) @ServletComponentScan //https://blog.csdn.net/qq_36850813/article/details/101194250 @EnableTransactionManagement diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java index 56034c3..b68e810 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java @@ -8,11 +8,13 @@ import java.util.*; public class CodeUtil { public static String getNewCode(String ruleCode){ - String flag = "1"; - HashMap map = new HashMap<>(); - map.put("flag",flag); - map.put("code",ruleCode); - return SpringContextHolder.getBean(ISysCodeRuleService.class).codeDemo(map); + synchronized (ruleCode){ + String flag = "1"; + HashMap map = new HashMap<>(); + map.put("flag",flag); + map.put("code",ruleCode); + return SpringContextHolder.getBean(ISysCodeRuleService.class).codeDemo(map); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java index 0456788..6cac540 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java @@ -38,4 +38,7 @@ public class LogMessageConstant { public final static String COLOR_RESET = "\u001B[0m"; /** 背景颜色:黄色 */ public final static String BACKGROUND_YELLOW = "\u001B[43m"; + + /** 索引路径 */ + public final static String INDEX_DIR = "D:\\lucene\\index"; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java index 980145d..09d844b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java @@ -27,12 +27,12 @@ public class LuceneAppender extends AppenderBase { private Directory index; private IndexWriter indexWriter; + @Override public void start() { super.start(); - String indexPath = "C:\\lucene\\index"; try { - index = FSDirectory.open(Paths.get(indexPath)); + index = FSDirectory.open(Paths.get(LogMessageConstant.INDEX_DIR)); } catch (IOException e) { e.printStackTrace(); } @@ -58,15 +58,11 @@ public class LuceneAppender extends AppenderBase { doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, formattedDateTime,Field.Store.YES)); doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName())); doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName())); - if (ObjectUtil.isNotEmpty(mdcPropertyMap)) { + if (ObjectUtil.isNotEmpty(mdcPropertyMap) && ObjectUtil.isNotEmpty(mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID))) { String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID); - if (ObjectUtil.isNotEmpty(traceId)) { - doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId,Field.Store.YES)); - } else { - doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID",Field.Store.YES)); - } + doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId, Field.Store.YES)); } else { - doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID",Field.Store.YES)); + doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID", Field.Store.YES)); } doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, message, Field.Store.YES)); try { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java index b8138f0..67f03b5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java @@ -46,7 +46,7 @@ public class Searcher { int start = pageNum * pageSize;// 当前页的起始条数 int end = start + pageSize;// 当前页的结束条数(不能包含) // 创建排序对象,需要排序字段SortField,参数:字段的名称、字段的类型、是否反转如果是false,升序。true降序 - Sort sort = new Sort(new SortField("timestamp", SortField.Type.DOC,true)); + Sort sort = new Sort(new SortField(LogMessageConstant.FIELD_TIMESTAMP, SortField.Type.DOC,true)); TopDocs docs = null; BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder(); @@ -110,7 +110,7 @@ public class Searcher { LogMessageConstant.COLOR_MAGENTA + doc.get(LogMessageConstant.FIELD_CLASS_NAME) + LogMessageConstant.COLOR_RESET + " - " + LogMessageConstant.COLOR_BLACK + highlightKeyword(doc.get(LogMessageConstant.FIELD_MESSAGE), whereJson.getString("message")); - System.out.println(logInfo); +// System.out.println(logInfo); list.add(logInfo); } reader.close(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java index 51ba327..de8cbe7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java @@ -20,6 +20,7 @@ import org.nl.system.service.coderule.dao.mapper.SysCodeRuleMapper; import org.nl.system.service.coderule.utils.CodeRuleTypeEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.Date; @@ -56,7 +57,8 @@ public class SysCodeRuleServiceImpl extends ServiceImpl().eq(SysCodeRule::getCode, code)).getId(); // 如果flag = 1就执行更新数据库的操作 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java index 234c641..e47816a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java @@ -12,6 +12,7 @@ import org.nl.system.service.quartz.dao.SysQuartzJob; import org.nl.system.service.quartz.dao.SysQuartzLog; import org.nl.system.service.quartz.dao.mapper.SysQuartzLogMapper; import org.nl.system.service.quartz.impl.SysQuartzJobServiceImpl; +import org.quartz.DisallowConcurrentExecution; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.annotation.Async; @@ -28,6 +29,7 @@ import java.util.concurrent.ThreadPoolExecutor; @Async @SuppressWarnings({"unchecked", "all"}) @Slf4j +@DisallowConcurrentExecution public class ExecutionJob extends QuartzJobBean { /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java index 1cd2125..d142429 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java @@ -39,6 +39,8 @@ public class MdBaseBrickInfo implements Serializable { @ApiModelProperty(value = "碾次") private String grinding_number; + @ApiModelProperty(value = "重量") + private String weight; @ApiModelProperty(value = "高度1") private String height1; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java index 36b3867..54b6b06 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java @@ -1,19 +1,16 @@ package org.nl.wms.database.brick.service.impl; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.SecurityUtils; import org.nl.wms.database.brick.service.IMdBaseBrickInfoService; -import org.nl.wms.database.brick.service.dao.mapper.MdBaseBrickInfoMapper; import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo; +import org.nl.wms.database.brick.service.dao.mapper.MdBaseBrickInfoMapper; import org.nl.wms.ext.acs.service.dto.BrickInfoDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -84,6 +81,7 @@ public class MdBaseBrickInfoServiceImpl extends ServiceImpl(HttpStatus.OK); } + + @PostMapping("/synchronize") + @Log("物料同步") + @ApiOperation("物料同步") + //@SaCheckPermission("materialtype:list") + public ResponseEntity synchronize(@RequestBody Map whereJson) { + wmsToMesService.synchronizeMaterialInfo(); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java index 7d147fa..27ab5ab 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java @@ -83,4 +83,19 @@ public class MdBaseMaterial implements Serializable { @ApiModelProperty(value = "外部标识") private String ext_id; + @ApiModelProperty(value = "外部时间") + private String ext_time; + @ApiModelProperty(value = "物料型号") + private String material_model; + @ApiModelProperty(value = "物料单重") + private String single_weight; + @ApiModelProperty(value = "A") + private String a_long_side; + @ApiModelProperty(value = "B") + private String b_short_side; + @ApiModelProperty(value = "H") + private String h_height; + @ApiModelProperty(value = "W") + private String w_thickness; + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java index 203a339..ddfcbdf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java @@ -16,8 +16,10 @@ import org.nl.common.utils.SecurityUtils; import org.nl.wms.database.material.service.IMdBaseMaterialService; import org.nl.wms.database.material.service.dao.MdBaseMaterial; import org.nl.wms.database.material.service.dao.mapper.MdBaseMaterialMapper; +import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -36,6 +38,8 @@ public class MdBaseMaterialServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page){ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java index 6e047dd..d66cf3a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java @@ -24,13 +24,11 @@ import org.springframework.web.bind.annotation.RestController; @Api(tags = "acs请求lms") @RequestMapping("/api/wms") @Slf4j -@SaIgnore public class AcsToWmsController { @Autowired private AcsToWmsService acsToWmsService; @PostMapping("/apply") - @Log("新增任务管理") @ApiOperation("新增任务管理") @SaIgnore public ResponseEntity apply(@RequestBody JSONObject param) { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BrickInfoDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BrickInfoDto.java index e53a48c..c3b6319 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BrickInfoDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BrickInfoDto.java @@ -20,6 +20,8 @@ public class BrickInfoDto extends BaseRequest { private String laser_marking_code; /** 碾次 **/ private String grinding_number; + /** 重量 */ + private String weight; /** 高度1 **/ private String height1; /** 高度2 **/ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java index 35bff22..2cf5063 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java @@ -17,6 +17,8 @@ public class ApplyTaskResponse extends BaseResponse { */ private String is_package; private String mix_number; + private String weight; + private String label_message; public static ApplyTaskResponse responseOk(String requestNo) { ApplyTaskResponse response = new ApplyTaskResponse(); @@ -27,4 +29,22 @@ public class ApplyTaskResponse extends BaseResponse { return response; } + public static ApplyTaskResponse responseOk(String requestNo, String message) { + ApplyTaskResponse response = new ApplyTaskResponse(); + response.setRequestNo(requestNo); + response.setMessage("任务申请成功"); + response.setResponseDate(DateUtil.now()); + response.setCode(HttpStatus.HTTP_OK); + response.setLabel_message(message); + return response; + } + public static ApplyTaskResponse responseError(String requestNo, String message) { + ApplyTaskResponse response = new ApplyTaskResponse(); + response.setRequestNo(requestNo); + response.setCode(HttpStatus.HTTP_BAD_REQUEST); + response.setMessage(message); + response.setResponseDate(DateUtil.now()); + return response; + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 6497bf1..e18db62 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -5,24 +5,26 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; -import org.nl.config.MapOf; import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.das.inspection.service.IDasQualityInspectionService; import org.nl.wms.database.brick.service.IMdBaseBrickInfoService; import org.nl.wms.database.material.service.IMdBaseMaterialService; import org.nl.wms.database.material.service.dao.MdBaseMaterial; -import org.nl.wms.ext.acs.service.dto.*; -import org.nl.wms.ext.acs.service.dto.to.wms.*; -import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.ext.acs.service.dto.BrickInfoDto; +import org.nl.wms.ext.acs.service.dto.PalletizeDto; +import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.acs.ApplyTaskResponse; import org.nl.wms.ext.acs.service.dto.to.acs.GetPalletizeResponse; +import org.nl.wms.ext.acs.service.dto.to.wms.*; +import org.nl.wms.ext.mes.service.WmsToMesService; +import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto; +import org.nl.wms.ext.mms.service.WmsToMmsService; import org.nl.wms.ext.record.service.ISysInteractRecordService; import org.nl.wms.pdm.consumption.service.IPdmBdMudConsumptionService; import org.nl.wms.pdm.consumption.service.dao.PdmBdMudConsumption; @@ -58,8 +60,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.PostConstruct; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; /** @@ -71,6 +76,9 @@ import java.util.concurrent.TimeUnit; @Service public class AcsToWmsServiceImpl implements AcsToWmsService { + // 反射类方法的缓存 + private Map methodCache = new ConcurrentHashMap<>(); + @Autowired private ISchBaseTaskService taskService; @Autowired @@ -83,7 +91,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired private TaskFactory taskFactory; - @Autowired private ISysNoticeService noticeService; @Autowired @@ -104,6 +111,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private IPdmBdVehicleBindingService vehicleBindingService; @Autowired private IPdmBdMudConsumptionService mudConsumptionService; + @Autowired + private WmsToMesService wmsToMesService; + @Autowired + private WmsToMmsService wmsToMmsService; + + // 初始化反射方法 + @PostConstruct + public void initCacheMethod() { + for (Method method : this.getClass().getMethods()) { + if (method.getParameterCount() == 1 && method.getParameterTypes()[0] == JSONObject.class) { + methodCache.put(method.getName(), method); + } + } + } @Override public BaseResponse acsApply(JSONObject param) { @@ -112,10 +133,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { BaseResponse result = BaseResponse.build(requestNo); try { String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名 - if (ObjectUtil.isEmpty(requestMethodCode)) { - throw new BadRequestException("请求参数错误"); + Method method = methodCache.get(StrUtil.toCamelCase(requestMethodCode)); + if (method == null) { + throw new BadRequestException("请求方法不存在"); } - Method method = this.getClass().getMethod(StrUtil.toCamelCase(requestMethodCode), JSONObject.class); result = (BaseResponse) method.invoke(this, param); } catch (Exception e) { String message = ObjectUtil.isEmpty(e.getMessage()) @@ -260,6 +281,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String configCode = basePoint.getRegion_code() + "MLTask"; // 组织参数 param.put("config_code", configCode); + param.put("special_param", specialHandling(basePoint.getRegion_code())); taskService.apply(param); } } finally { @@ -270,6 +292,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return ApplyTaskResponse.responseOk(requestNo); } + // todo: 特殊处理 + protected String specialHandling(String regionCode) { + if (regionCode.equals("FJ")) { + // 分拣需要在这设置特殊值 + } + return null; + } + /** * 任务:申请强制取走满料盅托盘(强制入库) * @@ -304,7 +334,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } /** - * 任务:申请强制满托入缓存 todo: 暂时 + * 任务:申请强制满托入缓存 todo: 暂时=分拣剩料回库 * * @param param: ApplyTaskRequest的json形式 * @return @@ -397,12 +427,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * 申请贴标 */ @Override - public BaseResponse applyLabelling(JSONObject param) { + public ApplyTaskResponse applyLabelling(JSONObject param) { // 木托盘号##物料编码##数量##吨量(单重X数量)##生产日期## todo: 成型工单号(未添加) String requestNo = param.getString("requestNo"); ApplyTaskRequest baseRequest = param.toJavaObject(ApplyTaskRequest.class); if (baseRequest.getVehicle_code() == null) { - return BaseResponse.responseError(requestNo, "载具编码不能为空!"); + return ApplyTaskResponse.responseError(requestNo, "载具编码不能为空!"); } StringBuilder sb = new StringBuilder(); SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(), @@ -414,7 +444,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .append(baseMaterial.getMaterial_code()).append("##") .append("吨量").append("##") .append(DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); - return BaseResponse.responseOk(requestNo, MapOf.of("labelling", sb.toString())); + return ApplyTaskResponse.responseOk(requestNo, sb.toString()); } /** @@ -493,15 +523,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { /** * 扫码成功申请 - 判断是否静置完成 + * todo: 需要返回泥料重量 */ @Override public ApplyTaskResponse isStandingFinish(ApplyTaskRequest baseRequest) { + log.info("扫码成功申请 - 判断是否静置完成: {}", baseRequest); String requestNo = baseRequest.getRequestNo(); ApplyTaskResponse taskResponse = ApplyTaskResponse.responseOk(requestNo); SchBasePoint basePoint = pointService.getById(baseRequest.getDevice_code()); if (ObjectUtil.isEmpty(baseRequest.getVehicle_code())) { throw new BadRequestException("载具编码不能为空!"); } + baseRequest.setVehicle_code(TaskUtils.defaultVehicleCode(baseRequest.getVehicle_code())); if (ObjectUtil.isEmpty(baseRequest.getVehicle_type())) { baseRequest.setVehicle_type(GeneralDefinition.MATERIAL_CUP); } @@ -518,7 +551,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isEmpty(productionTask)) { throw new BadRequestException("压机" + yjDeviceCode + "工单不存在!"); } - String rawMaterialCode = productionTask.getRaw_material_code(); + // 泥料 + // todo: 暂时写死 +// String rawMaterialCode = productionTask.getRaw_material_code(); + String rawMaterialCode = one.getRedundance_material_code(); if (!rawMaterialCode.equals(one.getRedundance_material_code())) { throw new BadRequestException("物料不一样!"); } @@ -535,18 +571,33 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { TaskUtils.setGroupUpdateByAcs(one); vehiclematerialgroupService.updateById(one); // 记录泥料 - PdmBdMudConsumption mudConsumption = new PdmBdMudConsumption(); - mudConsumption.setDevice_code(productionTask.getPoint_code()); - mudConsumption.setGroup_id(one.getGroup_id()); - mudConsumption.setMaterial_id(one.getMaterial_id()); - mudConsumption.setWeight(one.getMaterial_weight()); - mudConsumption.setCurrent_point(basePoint.getPoint_code()); - mudConsumption.setWorkorder_code(productionTask.getWorkorder_code()); - mudConsumption.setRaw_material_code(rawMaterialCode); - mudConsumptionService.create(mudConsumption); + MesMudConsumptionDto mesMudConsumptionDto = new MesMudConsumptionDto(); + mesMudConsumptionDto.setMSGID(IdUtil.simpleUUID()); + mesMudConsumptionDto.setPWORKSCHE_ID(productionTask.getWorkorder_code()); + mesMudConsumptionDto.setOUT_FINNUM(String.valueOf(one.getMaterial_weight())); + mesMudConsumptionDto.setPRESSUNIT(basePoint.getExt_point_code()); + mesMudConsumptionDto.setFBAGCODE("吨袋号未设置"); + mesMudConsumptionDto.setLOGT("仓库未知"); + mesMudConsumptionDto.setSENDTIM(DateUtil.now()); + mesMudConsumptionDto.setCREATE_TM(DateUtil.now()); + mesMudConsumptionDto.setOP_FLAG(GeneralDefinition.NO); + // 不在维护lms数据表 +// PdmBdMudConsumption mudConsumption = new PdmBdMudConsumption(); +// mudConsumption.setDevice_code(productionTask.getPoint_code()); +// mudConsumption.setGroup_id(one.getGroup_id()); +// mudConsumption.setMaterial_id(one.getMaterial_id()); +// mudConsumption.setWeight(one.getMaterial_weight()); +// mudConsumption.setCurrent_point(basePoint.getPoint_code()); +// mudConsumption.setWorkorder_code(productionTask.getWorkorder_code()); +// mudConsumption.setRaw_material_code(rawMaterialCode); +// String id = mudConsumptionService.create(mudConsumption); + // 回传给mes系统 + wmsToMesService.reportMudConsumption(mesMudConsumptionDto); + // 反馈数据给acs taskResponse.setMix_number(one.getMix_times()); taskResponse.setIs_standing_finish(GeneralDefinition.YES); taskResponse.setMessage("静置完成"); + taskResponse.setWeight(one.getMaterial_weight().toString()); return taskResponse; } else { taskResponse.setIs_standing_finish(GeneralDefinition.NO); @@ -560,9 +611,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { */ @Override public ApplyTaskResponse recordKilnTime(ApplyTaskRequest baseRequest) { + log.info("扫码成功申请 - 入窑记录时间的参数: {}", baseRequest); if (ObjectUtil.isEmpty(baseRequest.getVehicle_code())) { throw new BadRequestException("载具编码不能为空"); } + baseRequest.setVehicle_code(TaskUtils.defaultVehicleCode(baseRequest.getVehicle_code())); if (ObjectUtil.isEmpty(baseRequest.getVehicle_type())) { baseRequest.setVehicle_type(GeneralDefinition.STEEL_TRAY); } @@ -601,6 +654,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { */ @Override public BaseResponse pressRequestMaterial(JSONObject param) { + log.info("压机请求叫料的参数:{}", param); // 换成acs请求 ApplyTaskRequest request = param.toJavaObject(ApplyTaskRequest.class); String deviceCode = request.getDevice_code(); @@ -615,10 +669,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { SchBasePoint devicePoint = pointService.getById(basePoint.getParent_point_code()); // 1、校验是否有工单,是否需要叫料 PdmBdWorkorder deviceProductionTask = workorderService.getByCode(request.getOrder_code()); - if (ObjectUtil.isNotEmpty(deviceProductionTask)) { + if (ObjectUtil.isEmpty(deviceProductionTask)) { throw new BadRequestException("压机" + deviceCode + "暂无生产的工单"); } - // todo: 2、通知混碾机生产泥料 + // 2、通知混碾机生产泥料 - 直接存入混碾系统的数据库中 + try { + wmsToMmsService.addRequestMaterial(deviceProductionTask); + } catch (Exception e) { + log.error("发送混碾失败"); + throw new BadRequestException("发送混碾失败"); + } // 3、修改设备点位为空位,并且更新时间 PointUtils.setUpdateByAcs(devicePoint); PointUtils.clearPoint(devicePoint); @@ -767,7 +827,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { schBasePoint.setVehicle_type(vehicleType); } if (ObjectUtil.isNotEmpty(action)) { - schBasePoint.setIs_used(action.equals(GeneralDefinition.YES)); + schBasePoint.setIs_used(!action.equals(GeneralDefinition.NO)); } // move为空则表示无货 schBasePoint.setPoint_status(move == null ? PointStatusEnum.EMPTY_POINT.getCode() : move); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index f520aca..1b107ba 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.wms.ext.acs.service.impl; +import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.dto.ResultForAcs; @@ -31,6 +32,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { public AcsResponse order(List list) { String api = "api/wms/order"; AcsResponse resultForAcs = AcsUtil.notifyAcs2(api, IssueAcsRequest.buildRequestObj("下发工单", list)); + resultForAcs.setMessage(JSON.toJSONString(resultForAcs.getErrArr())); // 记录日志 interactRecordService.saveRecord("下发工单", list, resultForAcs, GeneralDefinition.LMS_ACS); return resultForAcs; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java index e318b59..e623796 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java @@ -13,5 +13,6 @@ public interface MesToWmsService { * @param param * @return */ + @Deprecated JSONObject downOrderForMes(JSONObject param); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java index 02db4cc..b3a3bcd 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java @@ -1,9 +1,24 @@ package org.nl.wms.ext.mes.service; +import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto; + /** * @Author: lyd * @Description: wms请求acs * @Date: 2023/8/3 */ public interface WmsToMesService { + /** + * wms上报mes泥料消耗记录 + */ + void reportMudConsumption(MesMudConsumptionDto mesMudConsumptionDto); + + /** + * 同步物料数据 + */ + void synchronizeMaterialInfo(); + /** + * 同步工单数据 + */ + void synchronizeWorkOrderInfo(); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java new file mode 100644 index 0000000..b199192 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java @@ -0,0 +1,30 @@ +package org.nl.wms.ext.mes.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.database.material.service.dao.MdBaseMaterial; +import org.nl.wms.ext.mes.service.dto.MesWorkOrderDto; +import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto; + +import java.util.List; + +/** + * @Author: lyd + * @Description: mes + * @Date: 2023/9/6 + */ +public interface MesRequestMapper { + MesMudConsumptionDto getMudConsumption(String mudId); + + @DS("oracle") + List getMesMaterialInfos(@Param("time") String time); + @DS("oracle") + List getMesMaterialInfos2(); + @DS("oracle") + List getMesWorkOrderInfos(); + @DS("oracle") + void updateWorkOrderRead(@Param("list") List list); + @DS("oracle") + void insertMudConsumptionInfo(MesMudConsumptionDto mudObject); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml new file mode 100644 index 0000000..d814b74 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml @@ -0,0 +1,73 @@ + + + + + INSERT INTO "LMSTELCOM"."RECEIVE_MUDMATERIEL_OUT"(MSGID, PWORKSCHE_ID, OUT_FINNUM, PRESSUNIT, FBAGCODE, LOGT, SENDTIM + , CREATE_TM, OP_FLAG) VALUES (#{MSGID}, #{PWORKSCHE_ID}, #{OUT_FINNUM}, #{PRESSUNIT}, #{FBAGCODE}, #{LOGT} + , #{SENDTIM}, #{CREATE_TM}, #{OP_FLAG}) + + + UPDATE "LMSTELCOM"."SEND_POP_SCHEDULE_PRESS" + SET OP_FLAG = '1' + WHERE PWORKSCHE_ID IN + + #{item} + + + + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java new file mode 100644 index 0000000..aa53cef --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java @@ -0,0 +1,34 @@ +package org.nl.wms.ext.mes.service.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author: lyd + * @Description: 泥料消耗记录 + * @Date: 2023/9/11 + */ +@Data +public class MesMudConsumptionDto implements Serializable { + // 唯一标识 + private String MSGID; + /** 压机作业计划号 */ + private String PWORKSCHE_ID; + /** */ + private String FWORKSCHE_ID; + private String FPROBATCH; + private String FBAGCODE; + /** 泥料仓库编号 */ + private String LOGT; + private String OUT_NUMBER; + private String OUT_FINNUM; + private String OUT_THEONUM; + private String PRESSUNIT; + private String SENDTIM; + private String SENDER; + private String CREATE_TM; + private String OP_FLAG; + private String OP_TM; + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesWorkOrderDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesWorkOrderDto.java new file mode 100644 index 0000000..d6cc680 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesWorkOrderDto.java @@ -0,0 +1,62 @@ +package org.nl.wms.ext.mes.service.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: lyd + * @Description: mes工单实体 + * @Date: 2023/9/9 + */ +@Data +public class MesWorkOrderDto { + /** 唯一标识 */ + private String MSGID; + /** 压机计划号 */ + private String PWORKSCHE_ID; + /** 日计划号 */ + private String FSCHEDULE_ID; + /** 生产订单号 */ + private String FORDER_NO; + /** 生产日期 */ + private String FPRODUCT_DATE; + /** 批次号 */ + private String BATCHNO; + /** 压机号 */ + private String PRESSUNIT; + /** 配料批次号 */ + private String FPROBATCH; + /** 物料编码 */ + private String FPRODUCT_MATERIAL_ID; + /** 物料名称 */ + private String FPRODUCT_MATERIAL_NAME; + /** 规格 */ + private String FMATSPEC; + /** 型号 */ + private String FMATMODEL; + /** 辅数量 */ + private BigDecimal FPRODUCT_SUBNUM; + /** 辅单位 */ + private String FPRODUCT_SUBUNIT; + /** 数量 */ + private String FPRODUCT_NUM; + /** 单位 */ + private String FPRODUCT_UNIT; + /** 重量 */ + private String FCONVERTRATE; + /** 班组 */ + private String FTEAM; + /** 开始时间 */ + private String BEGINTIME; + /** 结束时间 */ + private String ENDTIME; + /** 写入时间 */ + private String CREATE_TM; + /** 读取标志 */ + private String OP_FLAG; + /** 结果 */ + private String OP_REPLAY; + /** 读取时间 */ + private String OP_TM; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/ResultForMes.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/ResultForMes.java new file mode 100644 index 0000000..8205e6e --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/ResultForMes.java @@ -0,0 +1,29 @@ +package org.nl.wms.ext.mes.service.dto; + +import cn.hutool.http.HttpStatus; +import com.sun.org.apache.regexp.internal.RE; +import lombok.Data; + +/** + * @Author: lyd + * @Description: mes反馈实体 + * @Date: 2023/9/6 + */ +@Data +public class ResultForMes { + private int status; + private String message; + public static ResultForMes requestRefuse(String message) { + ResultForMes result = new ResultForMes(); + result.setStatus(HttpStatus.HTTP_BAD_REQUEST); + result.setMessage(message); + return result; + } + + public static ResultForMes requestSuccess() { + ResultForMes result = new ResultForMes(); + result.setStatus(HttpStatus.HTTP_OK); + result.setMessage("请求成功"); + return result; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java index ea9497d..5b1031d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java @@ -16,6 +16,9 @@ public class MesToWmsServiceImpl implements MesToWmsService { @Override public JSONObject downOrderForMes(JSONObject param) { log.info("mes传来工单信息:" + param); - return param; + JSONObject res = new JSONObject(); + res.put("code", 200); + res.put("message", "请求成功"); + return res; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java index 4c296a2..f596345 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java @@ -1,9 +1,34 @@ package org.nl.wms.ext.mes.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.nl.wms.database.material.service.IMdBaseMaterialService; +import org.nl.wms.database.material.service.dao.MdBaseMaterial; import org.nl.wms.ext.mes.service.WmsToMesService; +import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper; +import org.nl.wms.ext.mes.service.dto.MesWorkOrderDto; +import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto; +import org.nl.wms.ext.record.service.ISysInteractRecordService; +import org.nl.wms.pdm.consumption.service.dao.PdmBdMudConsumption; +import org.nl.wms.pdm.consumption.service.dao.mapper.PdmBdMudConsumptionMapper; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.sch.point.service.ISchBasePointService; +import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.stream.Collectors; + /** * @Author: lyd * @Description: @@ -12,4 +37,106 @@ import org.springframework.stereotype.Service; @Slf4j @Service public class WmsToMesServiceImpl implements WmsToMesService { + @Autowired + private MesRequestMapper mesRequestMapper; + @Autowired + private PdmBdMudConsumptionMapper mudConsumptionMapper; + @Autowired + private ISysInteractRecordService interactRecordService; + @Autowired + private IMdBaseMaterialService mdBaseMaterialService; + @Autowired + private ISchBasePointService pointService; + @Autowired + private IPdmBdWorkorderService pdmBdWorkorderService; + @Override + public void reportMudConsumption(MesMudConsumptionDto mudObject) { + log.info("上报mes消耗泥料记录的信息: {}", mudObject); + // 请求mes插入mes数据库 + // todo: 注意防止重复上报 + mesRequestMapper.insertMudConsumptionInfo(mudObject); + } + + @Override + public void synchronizeMaterialInfo() { + log.info("同步物料开始"); + // 获取lms数据库中的最后获取时间 + LambdaQueryWrapper lmsMaterialTabQuery = new QueryWrapper().lambda(); + lmsMaterialTabQuery.isNotNull(MdBaseMaterial::getExt_id).ne(MdBaseMaterial::getExt_id, "") + .orderByDesc(MdBaseMaterial::getExt_time); + List mdBaseMaterials = mdBaseMaterialService.list(lmsMaterialTabQuery); + String time = mdBaseMaterials.size() > 0 ? mdBaseMaterials.get(0).getExt_time() : "1970-01-01 00:00:00"; + log.info("上次更新同步时间:{}", time); + // 获取mes的物料数据 + List materials = mesRequestMapper.getMesMaterialInfos(time); + if (materials.size() == 0) { + // 没有需要同步的数据 + log.info("没有未同步物料"); + return; + } + log.info("获取MES物料:{}", materials); + // 插入 + mdBaseMaterialService.saveOrUpdateBatch(materials); + } + + @Override + public void synchronizeWorkOrderInfo() { + log.info("开始同步工单"); + // 获取未读取的工单 + List mesWorkOrderInfos = mesRequestMapper.getMesWorkOrderInfos(); + if (mesWorkOrderInfos.size() == 0) { + log.info("无需要同步的工单"); + return; + } + log.info("获取mes工单:{}", mesWorkOrderInfos); + // 插入lms工单表 + List mesWorkOrder = toWorkOrderList(mesWorkOrderInfos); + pdmBdWorkorderService.saveOrUpdateBatch(mesWorkOrder); + // 修改mes库 + // 获取所有的id + List collect = mesWorkOrderInfos.stream().map(MesWorkOrderDto::getPWORKSCHE_ID) + .collect(Collectors.toList()); + log.info("批量修改的数据: {}", collect); + mesRequestMapper.updateWorkOrderRead(collect); + } + + public List toWorkOrderList(List mesWorkOrderInfos) { + List list = new CopyOnWriteArrayList<>(); + mesWorkOrderInfos.forEach(mesWorkOrderDto -> { + // 半成品编码 + String fproductMaterialId = mesWorkOrderDto.getFPRODUCT_MATERIAL_ID(); + // 获取物料 + MdBaseMaterial materialDto = mdBaseMaterialService.getOne(new LambdaQueryWrapper() + .eq(MdBaseMaterial::getHalf_material_code, fproductMaterialId)); + // 获取压机点位 + SchBasePoint pointDto = pointService.getOne(new LambdaQueryWrapper() + .eq(SchBasePoint::getExt_point_code, mesWorkOrderDto.getPRESSUNIT())); + PdmBdWorkorder pdmBdWorkorder = new PdmBdWorkorder(); + pdmBdWorkorder.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr()); + pdmBdWorkorder.setWorkorder_code(mesWorkOrderDto.getPWORKSCHE_ID()); + pdmBdWorkorder.setPlan_qty(mesWorkOrderDto.getFPRODUCT_SUBNUM()); + pdmBdWorkorder.setMaterial_id(materialDto.getMaterial_id()); + pdmBdWorkorder.setRaw_material_code(materialDto.getRaw_material_code()); + pdmBdWorkorder.setProduce_order(mesWorkOrderDto.getFORDER_NO()); + pdmBdWorkorder.setBatch_no(mesWorkOrderDto.getBATCHNO()); + pdmBdWorkorder.setTeam(mesWorkOrderDto.getFTEAM()); + pdmBdWorkorder.setVehicle_type(GeneralDefinition.STEEL_TRAY); + pdmBdWorkorder.setPlanproducestart_date(mesWorkOrderDto.getBEGINTIME()); + pdmBdWorkorder.setPlanproduceend_date(mesWorkOrderDto.getENDTIME()); + pdmBdWorkorder.setProduce_date(mesWorkOrderDto.getFPRODUCT_DATE()); + pdmBdWorkorder.setPoint_code(pointDto.getPoint_code()); + pdmBdWorkorder.setPoint_name(pointDto.getPoint_name()); + pdmBdWorkorder.setRegion_code(pointDto.getRegion_code()); + pdmBdWorkorder.setRegion_name(pointDto.getRegion_name()); + pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.UNPRODUCED.getCode()); + pdmBdWorkorder.setExt_id(mesWorkOrderDto.getMSGID()); + pdmBdWorkorder.setExt_data(JSON.toJSONString(mesWorkOrderDto)); + pdmBdWorkorder.setCreate_id(GeneralDefinition.MES_ID); + pdmBdWorkorder.setCreate_name(GeneralDefinition.MES_NAME); + pdmBdWorkorder.setCreate_time(DateUtil.now()); + list.add(pdmBdWorkorder); + }); + return list; + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/WmsToMmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/WmsToMmsService.java new file mode 100644 index 0000000..77019f4 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/WmsToMmsService.java @@ -0,0 +1,12 @@ +package org.nl.wms.ext.mms.service; + +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; + +/** + * @Author: lyd + * @Description: wms与混碾系统 + * @Date: 2023/9/7 + */ +public interface WmsToMmsService { + void addRequestMaterial(PdmBdWorkorder workorder); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/dto/RequestMaterialDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/dto/RequestMaterialDto.java new file mode 100644 index 0000000..8e9ce6e --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/dto/RequestMaterialDto.java @@ -0,0 +1,26 @@ +package org.nl.wms.ext.mms.service.dao.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author: lyd + * @Description: 请求要料dto + * @Date: 2023/9/8 + */ +@Data +@TableName("压机要料表") +public class RequestMaterialDto implements Serializable { + @TableId(value = "id", type = IdType.AUTO) + public int id; + public String device_code; + public String material_code; + public String production_order; + public Date request_date; + public boolean is_used; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/mapper/MmsRequestMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/mapper/MmsRequestMapper.java new file mode 100644 index 0000000..2d5b106 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/mapper/MmsRequestMapper.java @@ -0,0 +1,14 @@ +package org.nl.wms.ext.mms.service.dao.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.nl.wms.ext.mms.service.dao.dto.RequestMaterialDto; + +/** + * @Author: lyd + * @Description: + * @Date: 2023/9/7 + */ +public interface MmsRequestMapper { + @DS("sqlserver") + void addRequestMaterial(RequestMaterialDto requestMaterialDto); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/mapper/MmsRequestMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/mapper/MmsRequestMapper.xml new file mode 100644 index 0000000..f40e691 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/dao/mapper/MmsRequestMapper.xml @@ -0,0 +1,9 @@ + + + + + + INSERT INTO 压机要料表(日期, 配方号, 压机号, 生产订单号, 已配料) VALUES (#{request_date}, #{material_code} + , #{device_code}, #{production_order}, #{is_used}) + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/impl/WmsToMmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/impl/WmsToMmsServiceImpl.java new file mode 100644 index 0000000..16a68a9 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/impl/WmsToMmsServiceImpl.java @@ -0,0 +1,41 @@ +package org.nl.wms.ext.mms.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.ext.mms.service.WmsToMmsService; +import org.nl.wms.ext.mms.service.dao.dto.RequestMaterialDto; +import org.nl.wms.ext.mms.service.dao.mapper.MmsRequestMapper; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + * @Author: lyd + * @Description: + * @Date: 2023/9/7 + */ +@Slf4j +@Service +public class WmsToMmsServiceImpl implements WmsToMmsService { + @Autowired + public MmsRequestMapper mmsRequestMapper; + @Override + public void addRequestMaterial(PdmBdWorkorder workorder) { + // 插入:压机、原材料、生产订单号、插入时间 + // 组合参数 + RequestMaterialDto requestMaterialDto = toRequestMaterialMapper(workorder); + log.info("插入混碾系统:{}", requestMaterialDto); + mmsRequestMapper.addRequestMaterial(requestMaterialDto); + } + + public RequestMaterialDto toRequestMaterialMapper(PdmBdWorkorder workorder) { + RequestMaterialDto requestMaterialDto = new RequestMaterialDto(); + requestMaterialDto.setDevice_code(workorder.getPoint_code().charAt(workorder.getPoint_code().length() - 1) + ""); + requestMaterialDto.setMaterial_code(workorder.getRaw_material_code()); + requestMaterialDto.setRequest_date(new Date()); + requestMaterialDto.setProduction_order(workorder.getProduction_order()); + requestMaterialDto.set_used(false); + return requestMaterialDto; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java index a3d90a8..e6006c6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java @@ -15,6 +15,7 @@ import org.nl.common.exception.BadRequestException; import org.nl.wms.ext.acs.service.dto.ResultForAcs; import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; +import org.nl.wms.ext.mes.service.dto.ResultForMes; import org.nl.wms.ext.record.service.ISysInteractRecordService; import org.nl.wms.ext.record.service.dao.mapper.SysInteractRecordMapper; import org.nl.wms.ext.record.service.dao.SysInteractRecord; @@ -134,6 +135,12 @@ public class SysInteractRecordServiceImpl extends ServiceImpl(HttpStatus.NO_CONTENT); } + + @PostMapping("/synchronize") + @Log("工单同步") + @ApiOperation("工单同步") + //@SaCheckPermission("materialtype:list") + public ResponseEntity synchronize(@RequestBody Map whereJson) { + wmsToMesService.synchronizeWorkOrderInfo(); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java index fed29d7..b586a85 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java @@ -6,6 +6,7 @@ import org.nl.common.domain.query.PageQuery; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery; +import java.util.Map; import java.util.Set; /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java index f5f7acc..ba27fbf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java @@ -41,6 +41,14 @@ public class PdmBdWorkorder implements Serializable { @ApiModelProperty(value = "原材料物料标识") private String raw_material_code; + @ApiModelProperty(value = "生产订单号") + private String produce_order; + @ApiModelProperty(value = "批次号") + private String batch_no; + @ApiModelProperty(value = "班组") + private String team; + @ApiModelProperty(value = "生产日期") + private String produce_date; @ApiModelProperty(value = "载具类型") private String vehicle_type; @@ -81,6 +89,11 @@ public class PdmBdWorkorder implements Serializable { @ApiModelProperty(value = "工单类型") private String workorder_type; + // todo: 字段未放开 + @ApiModelProperty(value = "生产订单号") + @TableField(exist = false) + private String production_order; + @ApiModelProperty(value = "回传MES状态") private String passback_status; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml index 473c01f..badb9da 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml @@ -36,16 +36,15 @@ w.point_code AS device_code, w.plan_qty, m.half_material_code AS material_code, - m.raw_material_code AS formula, - m.material_code AS product_code, - 0 AS brick_code, + 1 AS product_code, + m.material_spec AS brick_code, + "配方" AS formula, 0 AS a, 0 AS b, 0 AS h, 0 AS w, 0 AS size_error, 0 AS single_weight, - 0 AS drawing_address, 0 AS standard_size_height1, 0 AS standard_size_height2, 0 AS standard_size_height3, diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/vo/AcsWorkOrderVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/vo/AcsWorkOrderVo.java index 4a9fb0a..caa374e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/vo/AcsWorkOrderVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/vo/AcsWorkOrderVo.java @@ -12,8 +12,8 @@ public class AcsWorkOrderVo { private String workorder_code; // 工单编码 private String device_code; // 设备编码 private String material_code; // 半成品物料编码 - 工单物料编码 - private String product_code; // 产品代号 - 成品 - private String formula; // 配方-泥料 + private String product_code; // 产品代号 - 规格 + private String formula; // 配方 - 型号 private String brick_code; // 砖型编码 private String plan_qty; // 计划数量 private String a; // a边 @@ -22,7 +22,7 @@ public class AcsWorkOrderVo { private String w; // 宽度 private String size_error; // 尺寸允许误差 private String single_weight; // 单重允许误差 - private String drawing_address; // 图纸地址 +// private String drawing_address; // 图纸地址 private String standard_size_height1; // 标准尺寸1 private String standard_size_height2; // 标准尺寸2 private String standard_size_height3; // 标准尺寸3 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java index fac9f9a..91b874d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java @@ -31,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; @@ -65,7 +66,6 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl taskList) { AcsResponse resultForAcs = AcsResponse.requestOk(); //1、获取任务 @@ -94,6 +101,7 @@ public abstract class AbstractTask { if (ObjectUtil.isNotEmpty(responseParam)) { JSONObject jsonObject = JSONObject.parseObject(responseParam); taskDto.setDirection(jsonObject.getString("direction")); + taskDto.setPut_device_code(jsonObject.getString("fmj_device")); } taskDto.setExt_task_uuid(task.getTask_id()); taskDto.setTask_code(task.getTask_code()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java index 42e5c63..ee9df30 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java @@ -1,32 +1,32 @@ package org.nl.wms.sch.task_manage; -import cn.hutool.core.util.ObjectUtil; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.config.SpringContextHolder; import org.reflections.Reflections; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.List; import java.util.Set; @Slf4j @Component +@Order(value = 1) public class AutoCreateTask { - private Set> subTypes = null; + private static Set> subTypes = null; + // 类加载时候执行扫描 + static { + Reflections reflections = new Reflections("org.nl.wms.sch.task_manage.task.tasks"); + subTypes = reflections.getSubTypesOf(AbstractTask.class); + } @SneakyThrows public void run() { log.info("定时任务AutoCreateTask开始执行:"); - - if (ObjectUtil.isNull(subTypes) || subTypes.isEmpty()) { - Reflections reflections = new Reflections("org.nl"); - subTypes = reflections.getSubTypesOf(AbstractTask.class); - } this.doExecute(); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java index b33c719..5c72138 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java @@ -18,9 +18,9 @@ public class GeneralDefinition { public static final String NO = "0"; // 载具类型 /** 料盅 */ - public static final String MATERIAL_CUP = "1"; + public static final String MATERIAL_CUP = "LZ"; /** 钢托盘 */ - public static final String STEEL_TRAY = "2"; + public static final String STEEL_TRAY = "GTP"; // 账号定义 /** acs系统 */ public static final String ACS_ID = "2"; @@ -53,7 +53,7 @@ public class GeneralDefinition { /**MES->LMS**/ public static final String MES_LMS = "3"; /**LMS->MES**/ - public static final String LMS_LMS = "4"; + public static final String LMS_MES = "4"; // 区域定义 /** 料盅睏料线区域 */ public static final String LZKLX = "LZKLX"; @@ -69,6 +69,10 @@ public class GeneralDefinition { public static final String IS_CONNECT_ACS = "is_connect_acs"; /** ACS路径 */ public static final String ACS_URL = "acs_url"; + /** 是否连接 */ + public static final String IS_CONNECT_MES = "is_connect_mes"; + /** MES路径 */ + public static final String MES_URL = "mes_url"; // 完成/取消 /** 任务完成 */ public static final String TASK_FINISH = "任务完成"; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/GroupBindMaterialStatusEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/GroupBindMaterialStatusEnum.java index af5d088..506c1c9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/GroupBindMaterialStatusEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/GroupBindMaterialStatusEnum.java @@ -1,12 +1,7 @@ package org.nl.wms.sch.task_manage.enums; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AllArgsConstructor; import lombok.Getter; -import org.nl.config.SpringContextHolder; -import org.nl.system.service.dict.dao.Dict; -import org.nl.system.service.dict.impl.SysDictServiceImpl; - -import java.util.List; /** * @Author: lyd @@ -14,32 +9,33 @@ import java.util.List; * @Date: 2023/5/25 */ @Getter +@AllArgsConstructor public enum GroupBindMaterialStatusEnum { /** * 待绑定 */ - WAIT_BIND, + WAIT_BIND("1", "带绑定"), /** * 已绑定 */ - BOUND, + BOUND("2", "已绑定"), /** * 已解绑 */ - UNBOUND; + UNBOUND("3", "已解绑"); private String value; private String label; - static { // 只会初始化一次 - SysDictServiceImpl bean = SpringContextHolder.getBean(SysDictServiceImpl.class); - List taskDirection = bean.list(new LambdaQueryWrapper() - .eq(Dict::getCode, "group_bind_material_status") - .orderByAsc(Dict::getDict_sort)); - GroupBindMaterialStatusEnum[] values = GroupBindMaterialStatusEnum.values(); - for (int i = 0; i < values.length; i++) { - values[i].value = taskDirection.get(i).getValue(); - values[i].label = taskDirection.get(i).getLabel(); - } - } +// static { // 只会初始化一次 +// SysDictServiceImpl bean = SpringContextHolder.getBean(SysDictServiceImpl.class); +// List taskDirection = bean.list(new LambdaQueryWrapper() +// .eq(Dict::getCode, "group_bind_material_status") +// .orderByAsc(Dict::getDict_sort)); +// GroupBindMaterialStatusEnum[] values = GroupBindMaterialStatusEnum.values(); +// for (int i = 0; i < values.length; i++) { +// values[i].value = taskDirection.get(i).getValue(); +// values[i].label = taskDirection.get(i).getLabel(); +// } +// } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java index 9a31662..d39dc1d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java @@ -13,7 +13,7 @@ import lombok.Getter; public enum TaskFinishedTypeEnum { AUTO_ACS("1", "ACS自动完成"), - MANUAL_PC("2", "PC手完成"), + MANUAL_PC("2", "PC手动完成"), MANUAL_PDA("3", "PDA手持"); private final String code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java index 8ed00ac..b735be6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java @@ -35,9 +35,9 @@ import java.util.stream.Collectors; * @Date: 2023/6/21 */ @Component -@TaskType("CTQKTask") +@TaskType("DTKQKTask") public class CTQKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "CTQKTask"; + private static String TASK_CONFIG_CODE = "DTKQKTask"; @Autowired private ISchBasePointService pointService; @Autowired diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java index 2208ed1..3e84793 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java @@ -29,7 +29,7 @@ import java.util.stream.Collectors; /** * @Author: lyd - * @Description: 叠托送空盘任务:-> 拆盘机/货架 + * @Description: 叠托送空盘任务:-> 货架 * @Date: 2023/6/21 */ @Component diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml index 1b2f9fb..6c68cdf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml @@ -14,20 +14,13 @@ #{code} ORDER BY - - CASE - - WHEN p.region_code = #{innerRegion} THEN #{innerIndex} - - END - + p.in_empty_seq ASC diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java index e7d027e..e50c316 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java @@ -3,6 +3,7 @@ package org.nl.wms.sch.task_manage.task.tasks.fj; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -106,12 +107,21 @@ public class FJMKTask extends AbstractTask { int surplusNumber = fjMapper.getInventoryQuantity(); int total = sum + surplusNumber; // 现有总数 // 3 获取木托盘需要多少块 - int needFullNumber = 0; // todo: 具体未知如何获取 - // 4 校验是否够码满一托 - if (total > needFullNumber) { - // 可以叫空木托盘 + int needFullNumber = 255; // todo: 具体未知如何获取 + JSONObject response = new JSONObject(); + String responseParam = task.getResponse_param(); + if (ObjectUtil.isNotEmpty(responseParam)) { + response = JSON.parseObject(responseParam); } - + // 大于两托正常,大于1托给个1,小于1托给2 + // 4 校验是否够码满一托/两托 + if ((total % needFullNumber) == 0) { + // 不可以叫空木托盘 +// response.put("") + } else if ((total % needFullNumber) < 2) { + // 不可以叫空木托盘 + } + // 大于2就可以码 /** 覆膜机木托盘位 */ SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject); if (ObjectUtil.isEmpty(LaminatePoint)) { @@ -122,12 +132,12 @@ public class FJMKTask extends AbstractTask { // 消息通知 continue; } + // 把这个设备位放到任务中 + response.put("fmj_device", LaminatePoint.getPoint_code()); // 生产木托盘编码 - String vehicleCode = CodeUtil.getNewCode("VEHICLE_CODE"); // 设置终点并修改创建成功状态 task.setPoint_code3(LaminatePoint.getParent_point_code()); task.setPoint_code4(startPoint); - task.setVehicle_code2(vehicleCode); // 覆膜机下的木托盘编码 task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); taskService.updateById(task); @@ -138,7 +148,6 @@ public class FJMKTask extends AbstractTask { // 覆膜机对接位 SchBasePoint basePoint = pointService.getById(LaminatePoint.getParent_point_code()); basePoint.setIng_task_code(task.getTask_code()); - basePoint.setVehicle_code(vehicleCode); PointUtils.setUpdateByAcs(basePoint); pointService.updateById(basePoint); @@ -153,6 +162,7 @@ public class FJMKTask extends AbstractTask { // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 JSONObject stackParameters = param.getJSONObject("palletize"); String deviceCode = param.getString("device_code"); + String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); String isFull = param.getString("is_full"); if (isFull == null) { isFull = GeneralDefinition.YES; @@ -161,8 +171,7 @@ public class FJMKTask extends AbstractTask { Integer qty = param.getInteger("qty"); SchBasePoint basePoint = pointService.getById(deviceCode); PdmBdWorkorder workorderObject = workorderService.getDeviceProductionTask(basePoint.getParent_point_code()); - String vehicleCode = basePoint.getVehicle_code(); - String vehicleType = basePoint.getVehicle_type(); + String vehicleType = workorderObject.getVehicle_type(); // 从工单上获取 // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getGroupInfo(vehicleCode, vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue(), workorderObject.getMaterial_id()); @@ -222,10 +231,6 @@ public class FJMKTask extends AbstractTask { // 向ACS请求所需木托盘在那个栈拆盘机?已经实时更新,故只需要自己查询即可 SchBasePoint endPointObj = fjMapper.findPointForFJQK(startRegionStr, new JSONObject() .fluentPut("vehicleType", vehicleType).fluentPut("pointType", GeneralDefinition.DEVICE_POINT)); - // 请求ACS释放一个木托盘 - List list = CommonUtils.requestAcsReleaseVehicle(MapOf.of("to_command", "1"), - endPointObj.getDevice_code()); - wmsToAcsService.getVehicleForLaminatingMachine(list); // 这个点的父点位为起点 return ObjectUtil.isNotEmpty(endPointObj) ? endPointObj : null; } @@ -348,13 +353,15 @@ public class FJMKTask extends AbstractTask { SchBasePoint fmPointObj = pointService.getById(fmPoint); if (ObjectUtil.isNotEmpty(bzxPointObj)) { // 释放点位 - fmPointObj.setIng_task_code(""); bzxPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(fmPointObj, taskFinishedType); PointUtils.setUpdateByType(bzxPointObj, taskFinishedType); - pointService.updateById(fmPointObj); pointService.updateById(bzxPointObj); } + if (ObjectUtil.isNotEmpty(fmPointObj)) { + fmPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(fmPointObj, taskFinishedType); + pointService.updateById(fmPointObj); + } taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setRemark(GeneralDefinition.TASK_CANCEL); taskObj.setFinished_type(taskFinishedType.getCode()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java index ccabf15..aaaee43 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java @@ -1,6 +1,7 @@ package org.nl.wms.sch.task_manage.task.tasks.fj; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; @@ -78,20 +79,25 @@ public class FJQKTask extends AbstractTask { JSONObject extGroupData = JSONObject.parseObject(requestParam); SchBasePoint point = findStartPoint(startRegionStr, extGroupData); if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); + task.setRemark("覆膜机不可用!"); taskService.updateById(task); // 消息通知 noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode()); continue; } + // 将覆膜机设备放到任务中 + String responseParam = task.getResponse_param(); + JSONObject param = new JSONObject(); + if (ObjectUtil.isNotEmpty(responseParam)) { + param = JSON.parseObject(responseParam); + } + // 把这个设备位放到任务中 + param.put("fmj_device", point.getPoint_code()); // 设置起点并修改创建成功状态 task.setPoint_code1(point.getParent_point_code()); task.setTask_status(TaskStatus.CREATED.getCode()); - // 生产木托盘编码 - String vehicleCode = CodeUtil.getNewCode("VEHICLE_CODE"); // todo: 未确认是否放在1还是2,目前规定四点任务空盘的载具编码是2 - task.setVehicle_code(vehicleCode); task.setRemark(""); task.setGroup_id(point.getGroup_id()); taskService.updateById(task); @@ -99,7 +105,6 @@ public class FJQKTask extends AbstractTask { // 父点位锁住 SchBasePoint basePoint = pointService.getById(point.getParent_point_code()); basePoint.setIng_task_code(task.getTask_code()); - basePoint.setVehicle_code(vehicleCode); PointUtils.setUpdateByAcs(basePoint); pointService.updateById(basePoint); @@ -128,18 +133,6 @@ public class FJQKTask extends AbstractTask { // 向ACS请求所需木托盘在那个栈拆盘机?已经实时更新,故只需要自己查询即可 SchBasePoint endPointObj = fjMapper.findPointForFJQK(startRegionStr, new JSONObject() .fluentPut("vehicleType", vehicleType).fluentPut("pointType", GeneralDefinition.DEVICE_POINT)); - // 请求ACS释放一个木托盘 - List list = CommonUtils.requestAcsReleaseVehicle(MapOf.of("to_command", "1"), - endPointObj.getDevice_code()); -// SignalData signalData = SignalData.buildSignalData("to_command", "1"); -// List signalList = new ArrayList<>(); -// signalList.add(signalData); -// PutActionRequest putActionRequest = (PutActionRequest) BaseRequest.createRequest(); -// putActionRequest.setDevice_code(endPointObj.getDevice_code()); -// putActionRequest.setList(signalList); -// List list = new ArrayList<>(); -// list.add(putActionRequest); - wmsToAcsService.getVehicleForLaminatingMachine(list); // 这个点的父点位为起点 return ObjectUtil.isNotEmpty(endPointObj) ? endPointObj : null; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java index d5400a5..58377e2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java @@ -63,10 +63,6 @@ public class FJRKTask extends AbstractTask { .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { TaskUtils.setUpdateByAcs(task); - // 获取起点 回写载具编码 - String startPoint = task.getPoint_code1(); - SchBasePoint startPointObj = pointService.getById(startPoint); - task.setVehicle_code(startPointObj.getVehicle_code()); List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); // 找终点 SchBasePoint point = findNextPoint(nextRegionStr); @@ -115,16 +111,13 @@ public class FJRKTask extends AbstractTask { // 强制入库组盘 // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 String deviceCode = param.getString("device_code"); - String vehicleType = param.getString("vehicle_type"); JSONObject stackParameters = param.getJSONObject("palletize"); - if (vehicleType == null) { - vehicleType = GeneralDefinition.STEEL_TRAY; - } + String vehicleCode = param.getString("vehicle_code"); // 砖块数量 Integer qty = param.getInteger("qty"); SchBasePoint basePoint = pointService.getById(deviceCode); - String vehicleCode = basePoint.getVehicle_code(); PdmBdWorkorder workorderObject = workorderService.getDeviceProductionTask(basePoint.getParent_point_code()); + String vehicleType = workorderObject.getVehicle_type(); // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java index bd31555..186adc1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java @@ -128,9 +128,9 @@ public class FJSKTask extends AbstractTask { @Override public String setGroupPlate(JSONObject param) { // 查找组盘表信息,不做修改 - String vehicleCode = param.getString("vehicle_code"); + String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); String vehicleType = param.getString("vehicle_type"); - if (vehicleType == null) { + if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) { vehicleType = GeneralDefinition.STEEL_TRAY; } SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroupInfo(vehicleCode, @@ -168,16 +168,6 @@ public class FJSKTask extends AbstractTask { endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); PointUtils.setUpdateByType(endPointObj, taskFinishedType); pointService.updateById(endPointObj); - - // 将组盘解绑并设置当前位置 - // 组盘表数据改成已绑定 - SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(taskObj.getGroup_id()); - TaskUtils.setGroupUpdateByType(vehiclematerialgroup, taskFinishedType); - vehiclematerialgroup.setPoint_code(endPointObj.getPoint_code()); // 当前位置 - vehiclematerialgroup.setPoint_name(endPointObj.getPoint_name()); - vehiclematerialgroup.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); - vehiclematerialgroup.setMove_way(vehiclematerialgroup.getMove_way() + " -> " + endPointObj.getPoint_code()); - vehiclematerialgroupService.updateById(vehiclematerialgroup); } taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark(GeneralDefinition.TASK_FINISH); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java index baa5560..17dadb2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java @@ -111,13 +111,13 @@ public class FJSLTask extends AbstractTask { public String setGroupPlate(JSONObject param) { // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 // 查找 - String vehicleCode = param.getString("vehicle_code"); + String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); if (vehicleCode == null) { throw new BadRequestException("载具编码不能为空"); } String vehicleType = param.getString("vehicle_type"); JSONObject stackParameters = param.getJSONObject("palletize"); // 参数 - if (vehicleType == null) { + if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) { vehicleType = GeneralDefinition.STEEL_TRAY; } // 修改参数 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml index 66688b8..7dfc52f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml @@ -48,7 +48,7 @@