From 9e00dc5d2b48391724c2aa55d7430b6b7e55bf2a Mon Sep 17 00:00:00 2001 From: zhangzq Date: Wed, 27 Nov 2024 20:03:59 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E4=BF=AE=E6=94=B9=E5=9B=9E=E4=BC=A0?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/GateWayActivityBehavior.java | 2 +- .../nodeType/excess/impl/MappingHandler.java | 75 +++++-- .../service/impl/MdGruopDickServiceImpl.java | 18 +- .../pda_manage/group/dto/MaterGroupDto.java | 8 + .../pda_manage/iostorage/PdaInController.java | 2 +- .../iostorage/server/dto/PdaFormInMst.java | 12 +- .../iostorage/sevice/PdaInIOService.java | 191 ++++++------------ 7 files changed, 160 insertions(+), 148 deletions(-) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/GateWayActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/GateWayActivityBehavior.java index 27202c0c..93abb966 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/GateWayActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/GateWayActivityBehavior.java @@ -44,7 +44,7 @@ public class GateWayActivityBehavior extends FlowNodeActivityBehavior { Map formDataSpelMap = new HashMap<>(); JSONObject form_data = new JSONObject(); for (String item : form_param.keySet()) { - String value = ""; + Object struc = form_param.get(item); if (formDataMapping!=null){ - JSONObject formDataMappingJson = (JSONObject) formDataMapping; - String skip = formDataMappingJson.getString(item); - if (StringUtils.isNotEmpty(skip)){ - if (skip.contains("#M")){ - formDataSpelMap.put(item,skip); - continue; - } - if(skip.contains("#V[]")){ - //直接指定参数 - value = sourceFormData.getString(skip); - continue; - } - value = sourceFormData.getString(skip); - } + Object value = velueMapping(sourceFormData, item, struc, (JSONObject) formDataMapping); + form_data.put(item,value); + }else { + form_data.put(item,""); } - form_data.put(item,value); } form_data.putAll(SpelUtil.parse(sourceFormData, formDataSpelMap)); t.put("form_data",form_data); @@ -118,4 +108,57 @@ public class MappingHandler extends TypeHandler { resultT.put("t",t); return resultT; } + private Object velueMapping(JSONObject sourceFormData,String key,Object valueStruc,JSONObject formDataMapping){ + Object value = null; + String skip = formDataMapping.getString(key); + if (valueStruc instanceof String){ + if (StringUtils.isNotEmpty(skip)){ + if (skip.contains("#M")){ + value = SpelUtil.parse(sourceFormData, skip, String.class); + }else if(skip.contains("#V[")){ + //直接指定参数#V['value'] = value + value = skip.split("'")[1]; + }else { + value = sourceFormData.getString(skip); + } + } + } + if (valueStruc instanceof Map){ + Map valueStrucMap = (Map) valueStruc; + Map valueMap = new HashMap<>(); + + if (StringUtils.isNotEmpty(skip)){ + if (skip.contains("#M")){ + value = SpelUtil.parse(sourceFormData, skip, String.class); + }else if(skip.contains("#V[")){ + //直接指定参数#V['value'] = value + value = skip.split("'")[1]; + }else { + value = sourceFormData.getString(skip); + } + for (String innerKey : valueStrucMap.keySet()) { + valueMap.put(innerKey,value); + } + }else { + for (String innerKey : valueStrucMap.keySet()) { + Object innerValueStruc = valueStrucMap.get(innerKey); + Object innerValue = this.velueMapping(sourceFormData, innerKey, innerValueStruc, formDataMapping); + valueMap.put(innerKey,innerValue); + } + } + value = valueMap; + } + return value; + } + + public static void main(String[] args) { + + String struc = "{\"Model\":{\"FBillTypeID\":\"单据类型\",\"FStockOrgId\":{\"FNumber\":\"入库日期\"}}}"; + JSONObject strucJson = JSON.parseObject(struc); + JSONObject sourceData = new JSONObject(MapOf.of("Model", MapOf.of("FBillTypeID", "123", "FStockOrgId", MapOf.of("FNumber", "shouliao")))); + JSONObject formDataMapping = new JSONObject(MapOf.of("FBillTypeID", "#M['Model']['FBillTypeID']", "FStockOrgId", "#M['Model']['FStockOrgId']['FNumber']")); + MappingHandler handler = new MappingHandler(); + Object result = handler.velueMapping(sourceData, "Model", strucJson.get("Model"), formDataMapping); + System.out.println(result); + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java index 4234169e..35843539 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java @@ -75,20 +75,29 @@ public class MdGruopDickServiceImpl extends ServiceImpl tableData = (List)forms.remove("item"); + if (CollectionUtils.isEmpty(forms)){ + throw new BadRequestException("入库失败:入库明细数据不能为空"); + } + JSONObject item0 = new JSONObject(tableData.get(0)); + String vehicle0 = item0.getString("vehicle_code"); + BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicle0); + Integer h = vehicleInfo.getH(); RedissonUtils.lock(()->{ QueryWrapper query = new QueryWrapper() .eq("is_used", true) .eq("lock_type", StatusEnum.LOCK.code("无锁")) .eq("stor_code", forms.getString("stor_code")) - .isNull("vehicle_code");; + .isNull("vehicle_code"); + if (h!=null){ + query.ge("h",h); + } int structCount = iStIvtStructattrService.count(query); if (structCount< DictConstantPool.STRUCT_COUNT){ throw new BadRequestException("入库失败:当前仓库可用库位小于"+DictConstantPool.STRUCT_COUNT); } }, StatusEnum.STRATEGY_TYPE.code("入库")+forms.getString("stor_code"),5); - List tableData = (List)forms.remove("item"); String now = DateUtil.now(); forms.put("create_name",SecurityUtils.getCurrentNickName()); forms.put("create_time", now); @@ -101,7 +110,6 @@ public class MdGruopDickServiceImpl extends ServiceImpl confirm(@RequestBody PdaFormInMst pdaFormInMst) { RedissonUtils.lock(() -> { pdaInIOService.pdaInIostorUseCode(pdaFormInMst); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java index e70bec11..fe1e3244 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java @@ -1,6 +1,7 @@ package org.nl.wms.pda_manage.iostorage.server.dto; import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import org.springframework.util.CollectionUtils; @@ -36,11 +37,13 @@ public class PdaFormInMst implements Serializable { /** * 订单号 */ + @JsonProperty("MONumber") private String MONumber; /** * 订单号 */ + @JsonProperty("MOSeq") private String MOSeq; /** @@ -73,22 +76,29 @@ public class PdaFormInMst implements Serializable { /** * 入库数量 */ - private String qty; + private Integer qty; /** * 组织 */ + @JsonProperty("StockOrgId") private String StockOrgId; /** * 货主 */ + @JsonProperty("OwnerId_Id") private String OwnerId_Id; /** * ERP仓库 */ private String stockId; + + /** + * 入库仓库 + */ + private String stor_code; /** * 单重 */ diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java index 6b2b1329..9c1ad03d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java @@ -10,10 +10,20 @@ import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.*; +import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService; +import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase; +import org.nl.wms.base_manage.measure.service.IBmMeasureUnitService; +import org.nl.wms.base_manage.measure.service.dao.BmMeasureUnit; +import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService; +import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo; import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService; import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; import org.nl.wms.external_system.erp.dto.ErpQuery; import org.nl.wms.external_system.erp.dto.ErpSec; +import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService; +import org.nl.wms.pda_manage.group.dto.GroupItemData; +import org.nl.wms.pda_manage.group.dto.MaterGroupDto; +import org.nl.wms.pda_manage.group.dto.MaterItem; import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormInMst; import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutDtl; import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutMst; @@ -26,6 +36,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; @@ -37,137 +48,67 @@ import java.util.List; public class PdaInIOService { @Autowired - ErpSec erpSec; + IMdGruopDickService iMdGruopDickService; + @Autowired - IBmFormStrucService iBmFormStrucService; + IMdMeMaterialbaseService iMdMeMaterialbaseService; @Autowired - IStIvtIostorinvService iStIvtIostorinvService; + IBmVehicleInfoService iBmVehicleInfoService; + @Autowired - IStIvtIostorinvdtlService iStIvtIostorinvdtlService; - - - public void pdaInIostorUseCode(PdaFormInMst pdaFormInMst) { -// PdaInIOService ioService = SpringContextHolder.getBean(PdaInIOService.class); -// //创建单据分配货位 -// StIvtIostorinv ivtIostorinv = ioService.createPadIvtAndoutDispense(pdaFormOutMst); -// StIvtIostorinv byId = iStIvtIostorinvService.getById(ivtIostorinv.getId()); -// //生成流程 -// this.pdaTaskOpen(byId); - } - - @Transactional - public StIvtIostorinv createPadIvtAndoutDispense(PdaFormOutMst pdaFormOutMst) { - // || StringUtils.isEmpty(pdaFormOutMst.getStor_code()) - if (pdaFormOutMst == null || !pdaFormOutMst.getHasChildren()) { - throw new BadRequestException("出库申请失败:请求参数异常"); - } - List dtls = pdaFormOutMst.getChildren(); - if (CollectionUtils.isEmpty(dtls)) { - throw new BadRequestException("出库申请失败:出库明细不能为空"); - } - BmFormStruc formType = iBmFormStrucService.getFormType(pdaFormOutMst.getForm_type()); - String billType = StatusEnum.IOBILL_TYPE_OUT.code(formType.getForm_desc()); - - StIvtIostorinv mst = new StIvtIostorinv(); - mst.setId(IdUtil.getStringId()); - mst.setCreate_name(SecurityUtils.getCurrentNickName()); - mst.setCreate_time(DateUtil.now()); - mst.setCode(CodeUtil.getNewCode("IO_CODE")); - mst.setStatus(StatusEnum.FORM_STATUS.code("生成")); - mst.setSource_form_id(pdaFormOutMst.getId()); - mst.setSource_form_type(pdaFormOutMst.getForm_type()); - mst.setProduct_area(mst.getForm_data().getString("product_area")); - mst.setBill_type(billType); - mst.setIn_storage(false); - mst.setForm_data(new JSONObject(MapOf.of("shipper",null,"product_area",null))); - List list = new ArrayList<>(); - for (PdaFormOutDtl dtl : dtls) { - BigDecimal now_assign_qty = dtl.getNow_assign_qty(); - if (now_assign_qty==null || now_assign_qty.intValue()==0){ - throw new BadRequestException("出库申请失败:当前"+dtl.getMaterial_name()+"明细申请数量为0"); - } - StIvtIostorinvdtl ivtDtl = new StIvtIostorinvdtl(); - ivtDtl.setSource_form_id(dtl.getId()); - ivtDtl.setSource_form_type(dtl.getForm_type()); - ivtDtl.setMaterial_id(dtl.getMaterial_id()); - String productArea = dtl.getProduct_area(); - if (StringUtils.isEmpty(productArea) || !"A1A2A3".contains(productArea)){ - throw new BadRequestException("出库申请失败:明细数据车间字段未指定或不正确"); - } - String storCode = dtl.getStor_code(); - if (StringUtils.isEmpty(storCode)){ - throw new BadRequestException("出库申请失败:明细数据仓库字段未指定"); - } - HashMap map = MapOf.of("end_struct_code", "", "start_struct_code", "", "order", "", "product_area", productArea); - ivtDtl.setForm_data(new JSONObject(map)); - ivtDtl.setQty(now_assign_qty); - ivtDtl.setPcsn(dtl.getPcsn()); - ivtDtl.setStor_code(storCode);//pdaFormOutMst.getStor_code() - ivtDtl.setId(IdUtil.getStringId()); - ivtDtl.setInv_id(mst.getId()); - ivtDtl.setStatus(StatusEnum.FORM_STATUS.code("生成")); - list.add(ivtDtl); - } - if (CollectionUtils.isEmpty(list)){ - throw new BadRequestException("出库申请失败:出库入明细不能为空"); - } - iStIvtIostorinvdtlService.saveBatch(list); - iStIvtIostorinvService.save(mst); - for (StIvtIostorinvdtl stIvtIostorinvdtl : list) { - iStIvtIostorinvService.outDispense((JSONObject) JSON.toJSON(stIvtIostorinvdtl)); - } - return mst; - } - - private void pdaTaskOpen(StIvtIostorinv mst) { - iStIvtIostorinvService.taskOpen((JSONObject) JSONObject.toJSON(mst)); - } - - public PmFormData getCertificateInfo(String id) { - PmFormData result = new PmFormData(); - try { - if (id.contains("OP")||id.contains("op")) { - getOpBills(id, result); - } else { - - } - } catch (Exception e) { - throw new BadRequestException("未查询到对应合格证信息!"); - } - return result; - } + IBmMeasureUnitService iBmMeasureUnitService; /** - * + * 合格证入库 + * 确认参数完整性 + * 生成组盘单子 + * 走组盘入库流程 + * 回传代码 */ - private void getOpBills(String id, PmFormData result) throws Exception { - IdentifyInfo identifyInfo = new IdentifyInfo(); - BeanUtils.copyProperties(erpSec, identifyInfo); - K3CloudApi cloudApi = new K3CloudApi(identifyInfo); - String filterString = "FBillNo = '" + id + "'"; - ErpQuery query = new ErpQuery(); - query.setFilterString(filterString); - query.setFormId("SFC_OperationPlanning"); - query.setFieldKeys("FBillNo,FProOrgId,FProductId,FProductName,FProSpecification,FMOQty,FMOUnitId,FOwnerId,FLot,FProDepartmentId,FStockInOrgId"); - query.setLimit(1); - String jsonString = JSON.toJSONString(query); - List> lists = cloudApi.executeBillQuery(jsonString); - if (ObjectUtils.isNotEmpty(lists)) { - List dataList = lists.get(0); - if (dataList != null && !dataList.isEmpty()) { - result.setCode(dataList.get(0).toString()); - result.setPrdOrgId(dataList.get(1).toString()); - result.setMaterial_id(dataList.get(2).toString()); - result.setMaterial_name(dataList.get(3).toString()); - result.setMaterial_spec(dataList.get(4).toString()); - result.setQty(new BigDecimal(dataList.get(5).toString())); - result.setUnit_id(dataList.get(6).toString()); - result.setOwnerId(dataList.get(7).toString()); - result.setPcsn(dataList.get(8).toString()); - result.setProduct_area(dataList.get(9).toString()); - //result.setStockId(dataList.get(10).toString()); - } + public void pdaInIostorUseCode(PdaFormInMst mst) { + String materialId = mst.getMaterial_id(); + String vehicleCode = mst.getVehicle_code(); + String unitId = mst.getUnit_id(); + Assert.noNullElements(new Object[]{mst.getStor_code(),mst.getQty(),mst.getMaterial_code(),mst.getBar_code(), materialId,mst.getQty(),mst.getSingle_weight(),mst.getOwnerId_Id(),mst.getStockId(),mst.getStockOrgId()},"入库失败:请求参数不全"); + MaterGroupDto groupDto = new MaterGroupDto(); + groupDto.setStor_code(mst.getStor_code()); + String form_type; + if (mst.getBillNo().contains("OP")||mst.getBillNo().contains("op")) { + form_type = "PRD_INSTOCK"; + }else { + form_type = "STK_InStock"; } + MdMeMaterialbase meMaterialbase = iMdMeMaterialbaseService.getById(materialId); + if (meMaterialbase==null){ + throw new BadRequestException("入库失败,物料id在系统中不存在"); + } + BmMeasureUnit measureUnit = iBmMeasureUnitService.getById(unitId); + if (measureUnit==null){ + throw new BadRequestException("入库失败,物料单位ID在系统中不存在"); + } + BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicleCode); + if (vehicleInfo==null){ + throw new BadRequestException("入库失败,载具编码在基础信息中不存在"); + } + groupDto.setSource_form_type(form_type); + groupDto.setSource_form_id(mst.getBar_code()); + groupDto.setForm_data((JSONObject) JSONObject.toJSON(mst)); + MaterItem materItem = new MaterItem(); + materItem.setMaterial_id(materialId); + materItem.setMaterial_code(mst.getMaterial_code()); + materItem.setMaterial_name(mst.getMaterial_name()); + materItem.setMaterial_spec(mst.getMaterial_spec()); + materItem.setQty(mst.getQty()); + materItem.setPcsn(mst.getPcsn()); + materItem.setVehicle_code(vehicleCode); + materItem.setSingle_weight(mst.getSingle_weight()); + materItem.setUnit_id(unitId); + materItem.setStor_code(mst.getStor_code()); + GroupItemData groupItemData = new GroupItemData(); + groupItemData.setSingle_weight(mst.getSingle_weight()); + groupItemData.setFMoBillNo(mst.getBillNo()); + materItem.setForm_data(groupItemData); + groupDto.setItem(ListOf.of(materItem)); + iMdGruopDickService.groupDick((JSONObject) JSONObject.toJSON(groupDto)); } - }