From 4664761145c04fc82fef83a5fcd10f654d7a40d1 Mon Sep 17 00:00:00 2001 From: zhangzq Date: Tue, 24 Sep 2024 17:52:42 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9Aliantiao1youhua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/constant/DictConstantPool.java | 11 ++ .../java/org/nl/common/utils/SpelUtil.java | 18 ++- .../controller/BmFormStrucController.java | 15 +- .../handler/decisioner/Decisioner.java | 2 + .../decisioner/impl/diy/PassRCLHandler.java | 2 +- .../handler/impl/PalletOutStorageTask.java | 137 ++++++++++++++++++ .../service/impl/PmFormDataServiceImpl.java | 49 ++++++- .../form_mapping/dao/SyncFormMapping.java | 4 + .../resources/config/application-dev3.yml | 4 +- .../src/main/resources/logback-spring.xml | 2 +- .../wms/sync_manage/form_mapping/index.vue | 1 + 11 files changed, 220 insertions(+), 25 deletions(-) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletOutStorageTask.java diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/constant/DictConstantPool.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/constant/DictConstantPool.java index 4da8c8a4..97088292 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/constant/DictConstantPool.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/constant/DictConstantPool.java @@ -17,4 +17,15 @@ public class DictConstantPool { public static final Map PRODUCT_OUT_POINT_TP = MapOf.of("A1","1131","A2","2127","A3","3110"); + public static Map BASE_FORM = MapOf.of( + "biz_id","业务单据单据id" + ,"biz_code","业务单据编号" + ,"biz_date","业务单据日期" + ,"biz_status","业务单据状态" + ,"biz_form_type","业务单据类型" + ,"material_id","物料id" + ,"qty","数量" + ,"unit_id","单位" + ,"pcsn","批次" + ,"vehicle_code","载具"); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java index a782121e..dc8f819d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java @@ -84,14 +84,20 @@ public class SpelUtil { Map result = new HashMap<>(); for (String field : fieldSkip.keySet()) { String skip = fieldSkip.get(field); - Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip); - try { - String value = expression.getValue(context, String.class); - result.put(field,value); - }catch (SpelEvaluationException ex){ - throw new BadRequestException("当前业务数据没有映射字段"+field+" 对应的数据"+skip); + if (skip.charAt(0) == '#'){ + try { + Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip); + String value = expression.getValue(context, String.class); + result.put(field,value); + }catch (SpelEvaluationException ex){ + ex.printStackTrace(); + throw new BadRequestException("当前业务数据没有映射字段"+field+" 对应的数据"+skip); + } + }else { + result.put(field,skip); } + } return result; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/controller/BmFormStrucController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/controller/BmFormStrucController.java index 6af38da5..44424c30 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/controller/BmFormStrucController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/controller/BmFormStrucController.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; +import org.nl.common.domain.constant.DictConstantPool; import org.nl.common.domain.entity.PageQuery; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.utils.IdUtil; @@ -39,16 +40,6 @@ import java.util.stream.Collectors; @SaIgnore public class BmFormStrucController { - private static Map BASE_FORM = MapOf.of("biz_id","业务单据单据id" - ,"biz_code","业务单据编号" - ,"biz_date","业务单据日期" - ,"biz_status","业务单据状态" - ,"biz_form_type","业务单据类型" - ,"material_id","物料id" - ,"qty","数量" - ,"unit_id","单位" - ,"pcsn","批次" - ,"vehicle_code","载具"); @Autowired IBmFormStrucService iBmFormStrucService; @@ -158,7 +149,7 @@ public class BmFormStrucController { BmFormStruc form_struc = iBmFormStrucService.getOne(new QueryWrapper().eq("form_type", form_type)); HashMap result = MapOf.of("has_child",form_struc.getHas_child(),"form_type", form_struc.getForm_type(), "form_name", form_struc.getForm_name(), "form_desc", form_struc.getForm_desc()); JSONObject form_param = form_struc.getForm_param(); - form_param.putAll(BASE_FORM); + form_param.putAll(DictConstantPool.BASE_FORM); List items = new ArrayList<>(); for (String key : form_param.keySet()) { items.add(MapOf.of("lable",form_param.get(key),"value",key)); @@ -170,7 +161,7 @@ public class BmFormStrucController { throw new BadRequestException("当前表单配置异常:无子表配置信息"); } JSONObject child_param = child_struc.getForm_param(); - child_param.putAll(BASE_FORM); + child_param.putAll(DictConstantPool.BASE_FORM); for (String key : child_param.keySet()) { dtl_items.add(MapOf.of("lable",child_param.get(key),"value",key)); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/Decisioner.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/Decisioner.java index 70166373..98cbc59d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/Decisioner.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/Decisioner.java @@ -23,6 +23,8 @@ public abstract class Decisioner implements InitializingBean { public StStrategyConfig strategyConfig; @Autowired private IStStrategyConfigService iStStrategyConfigService; + @Autowired + private SpringContextHolder springContextHolder; public abstract List handler(List list, P param); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/PassRCLHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/PassRCLHandler.java index 3d3dc768..3e6ce407 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/PassRCLHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/PassRCLHandler.java @@ -21,7 +21,7 @@ import java.util.stream.Stream; * 手动过滤XYZ排信息 * {"y":[1,2,3,104,103,102]} */ -@Service("passRCL") +//@Service("passRCL") @Slf4j public class PassRCLHandler extends Decisioner { //现场1/4排深位 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletOutStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletOutStorageTask.java new file mode 100644 index 00000000..79ac389d --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletOutStorageTask.java @@ -0,0 +1,137 @@ +package org.nl.wms.dispatch_manage.task.handler.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.domain.constant.DictConstantPool; +import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.enums.StatusEnum; +import org.nl.common.utils.*; +import org.nl.wms.dispatch_manage.task.handler.AbstractTask; +import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; +import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; +import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler; +import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; +import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; +import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; +import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; +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 org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +/* + * @author ZZQ + * @Date 2024/5/6 14:34 + * 托盘拣选出库 + */ +@Service +@Slf4j +public class PalletOutStorageTask extends AbstractTask { + + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private MoveStorageTask moveStorageTask; + + @Autowired + private IStIvtStructattrService iStIvtStructattrService; + @Autowired + private IMdPbVehicleMaterService iMdPbVehicleMaterService; + + @Override + @Transactional + public JSONObject createTask(JSONObject from) { + String vehicle_code = from.getString("vehicle_code"); + String target_point = from.getString("target_point"); + //通过全局变量获取目标位置 + String product_area = from.getString("product_area"); + if (StringUtils.isNotEmpty(product_area)){ + String configTarget; + if (vehicle_code.contains("T")){ + configTarget = DictConstantPool.PRODUCT_OUT_POINT_TP.get(product_area); + }else { + configTarget = DictConstantPool.PRODUCT_OUT_POINT.get(product_area); + } + if (StringUtils.isEmpty(configTarget)){ + throw new BadRequestException("创建任务失败:出库点车间点位对应关系配置异常"); + } + target_point=configTarget; + } + if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)){ + throw new BadRequestException("创建任务失败:方法请求参数不能为空"); + } + List list = taskService.list(new QueryWrapper() + .eq("vehicle_code", vehicle_code) + .ne("task_type",StatusEnum.IOBILL_TYPE_MOVE.code("移库")) + .lt("status", StatusEnum.FORM_STATUS.code("完成"))); + if (!CollectionUtils.isEmpty(list)){ + throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); + } + StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper().eq("vehicle_code", vehicle_code)); + log.info("OutStorgeTask出入分配货位信息:{}",struct.toString()); + String end_struct_code = struct.getStruct_code(); + SchBaseTask task = new SchBaseTask(); + task.setId(IdUtil.getStringId()); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setStatus(StatusEnum.FORM_STATUS.code("生成")); + task.setHandle_class(this.getClass().getName()); + task.setAcs_type(StatusEnum.ACS_TYPE.code("立库")); + task.setCreate_time(DateUtil.now()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setTask_type(from.getString("task_type")); + task.setVehicle_code(vehicle_code); + task.setPoint_code1(end_struct_code); + task.setPoint_code2(target_point); + taskService.save(task); + iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() + .set(MdPbVehicleMater::getTask_code,task.getTask_code()) + .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code()) + .eq(MdPbVehicleMater::getIs_delete,false)); + //TODO:是否下发 + Boolean isSend = from.getBoolean("is_send"); + if (isSend){ + //参数封装,调acs接口 + } + return (JSONObject)JSON.toJSON(task); + } + + + @Override + public void updateStatus(JSONObject data) { + this.updateTask(data); + } + + @Override + public void finish(JSONObject data) { + data.put("status",StatusEnum.FORM_STATUS.code("完成")); + this.updateTask(data); + SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper().eq("task_code", data.getString("task_code"))); + iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code1(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.FALSE); + } + + @Override + public void cancel(JSONObject data) { + this.updateTask(data); + //更新起点终点状态 + } + + private static String getZdPoint(int row,String source_code) { + if (row == 2 || row == 3) { + return source_code; + } + int blockRow = row == 1 ? 2 : 3; + String replace = source_code.replaceFirst("L0" + row, "L0%s"); + return String.format(replace, blockRow); + } +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java index 2dc3be7a..db163703 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java @@ -8,6 +8,7 @@ import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; +import org.nl.common.domain.constant.DictConstantPool; import org.nl.common.domain.entity.PageQuery; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.utils.*; @@ -77,8 +78,11 @@ public class PmFormDataServiceImpl extends ServiceImpl result = new ArrayList<>(); + Boolean dtlSplit = formMapping.getDtl_split(); JSONObject sourceData = JSONObject.parseObject(sourceString).getJSONObject("Model"); - List items_arr = mappingParseList(formMapping.getMapping_json(), one, sourceData); + + if (!dtlSplit){ + List items_arr = mappingParseList(formMapping.getMapping_json(), one, sourceData); for (int i = 0; i < items_arr.size(); i++) { JSONObject itemTarget = items_arr.get(i); itemTarget.put("id", IdUtil.getStringId()); @@ -88,6 +92,38 @@ public class PmFormDataServiceImpl extends ServiceImpl fields = ListOf.ofSet(formStruc.getBiz_code(), formStruc.getBiz_id(), formStruc.getBiz_code(), formStruc.getBiz_status(), formStruc.getMaterial_id(), formStruc.getPcsn(), formStruc.getVehicle_code(), formStruc.getVehicle_id(),formStruc.getUnit_id(), formStruc.getQty()); - JSONObject data = fieldMapping(fields, fieldMapping, sourceData); + JSONObject JFormStruct = (JSONObject)JSONObject.toJSON(formStruc); + HashMap bizMap = new HashMap<>(); + for (String key : DictConstantPool.BASE_FORM.keySet()) { + String value = JFormStruct.getString(key); + if (StringUtils.isNotEmpty(value)){ + bizMap.put(key,value); + } + } + JSONObject data = fieldMapping(bizMap.keySet(), fieldMapping, sourceData); data.put("form_type",formStruc.getForm_type()); JSONObject form_param = formStruc.getForm_param(); if (form_param != null) { diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/dao/SyncFormMapping.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/dao/SyncFormMapping.java index 0ac525c8..fbed1cca 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/dao/SyncFormMapping.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/dao/SyncFormMapping.java @@ -77,6 +77,10 @@ public class SyncFormMapping implements Serializable { * 修改人 */ private String update_name; + /** + * 明细拆分 + */ + private Boolean dtl_split; } diff --git a/wms_pro/hd/nladmin-system/src/main/resources/config/application-dev3.yml b/wms_pro/hd/nladmin-system/src/main/resources/config/application-dev3.yml index 424fb1af..d5b76700 100644 --- a/wms_pro/hd/nladmin-system/src/main/resources/config/application-dev3.yml +++ b/wms_pro/hd/nladmin-system/src/main/resources/config/application-dev3.yml @@ -7,8 +7,8 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://${DB_HOST:192.168.8.218}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false -# url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false +# url: jdbc:mysql://${DB_HOST:192.168.8.218}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:123456} diff --git a/wms_pro/hd/nladmin-system/src/main/resources/logback-spring.xml b/wms_pro/hd/nladmin-system/src/main/resources/logback-spring.xml index 2d4dbffe..91cd9776 100644 --- a/wms_pro/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/wms_pro/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -108,7 +108,7 @@ - + diff --git a/wms_pro/qd/src/views/wms/sync_manage/form_mapping/index.vue b/wms_pro/qd/src/views/wms/sync_manage/form_mapping/index.vue index 6a4362a6..26f81b53 100644 --- a/wms_pro/qd/src/views/wms/sync_manage/form_mapping/index.vue +++ b/wms_pro/qd/src/views/wms/sync_manage/form_mapping/index.vue @@ -178,6 +178,7 @@ +