From d81d30bd72571df2c2316c88c02de6eb9162e965 Mon Sep 17 00:00:00 2001 From: zhangzq Date: Sun, 24 Nov 2024 19:27:33 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E6=89=8B=E6=8C=81=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E5=87=BA=E5=BA=93=EF=BC=9Brev:SpelUtil=E9=92=88=E5=AF=B9?= =?UTF-8?q?=E8=BD=A6=E9=97=B4=E7=9A=84=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/utils/SpelUtil.java | 12 ++ .../iostorage/PdaOutController.java | 17 ++- .../iostorage/server/dto/PdaFormOutDtl.java | 4 + .../iostorage/server/dto/PdaFormOutMst.java | 6 +- .../iostorage/sevice/PdaIOService.java | 108 ++++++++++++++++++ .../service/dao/mapper/PmFormDataMapper.java | 4 + .../dao/mapper/xml/PmFormDataMapper.xml | 47 +++++++- .../form_data/service/dto/PmFormDataDto.java | 4 + .../service/impl/PmFormDataServiceImpl.java | 15 ++- .../iostor_dtl/dao/StIvtIostorinvdtl.java | 2 +- .../dao/mapper/xml/StIvtStructattrMapper.xml | 4 +- wms_pro/qd/src/views/login.vue | 2 +- 12 files changed, 215 insertions(+), 10 deletions(-) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java 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 dc8f819d..d3b63314 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 @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import lombok.Data; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.formula.functions.T; import org.nl.common.domain.exception.BadRequestException; import org.springframework.expression.Expression; @@ -78,6 +79,10 @@ public class SpelUtil { // System.out.println(value); } //如果表达式为null,空则返回'' + private static Map Product_Area_Mapping = MapOf.of( + "","A1" + ,"","A2" + ,"","A3"); public static Map parse(JSONObject sourceData,Map fieldSkip){ StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("M",sourceData); @@ -88,6 +93,13 @@ public class SpelUtil { try { Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip); String value = expression.getValue(context, String.class); + if (field.contains("product_area")){ + String product_area = Product_Area_Mapping.get(value); + if (StringUtils.isEmpty(product_area)){ + throw new BadRequestException("当前业务数据product_area"+value+" 对应的车间数据"); + } + value = product_area; + } result.put(field,value); }catch (SpelEvaluationException ex){ ex.printStackTrace(); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/PdaOutController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/PdaOutController.java index f66be632..66fcc795 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/PdaOutController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/PdaOutController.java @@ -8,11 +8,14 @@ import org.nl.common.anno.Log; import org.nl.common.domain.entity.PageQuery; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.MapOf; +import org.nl.common.utils.RedisUtils; +import org.nl.common.utils.RedissonUtils; 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.flow_manage.flow.service.execution.IActRuExecutionService; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutMst; +import org.nl.wms.pda_manage.iostorage.sevice.PdaIOService; import org.nl.wms.pda_manage.palletio.service.dto.LabelValueVo; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery; @@ -40,9 +43,7 @@ import java.util.Map; public class PdaOutController { @Autowired - private IMdPbVehicleMaterService iMdPbVehicleMaterService; - @Autowired - private IActRuExecutionService iActRuExecutionService; + private PdaIOService pdaIOService; @Autowired private IBmFormStrucService iBmFormStrucService; @Autowired @@ -54,7 +55,7 @@ public class PdaOutController { public ResponseEntity> orderType() { List result = new ArrayList<>(); List list = iBmFormStrucService.list(new QueryWrapper() - .likeRight("form_desc","出库") + .like("form_desc","出库") .select("form_type","form_name")); for (BmFormStruc formStruc : list) { result.add(MapOf.of("text",formStruc.getForm_name(),"value",formStruc.getForm_type())); @@ -66,6 +67,11 @@ public class PdaOutController { @Log("查询单据数据") @SaIgnore public ResponseEntity> orderList(FormDataQuery query, PageQuery page) { + page.setPage(page.getPage()-1); + if (page.getSize()>20){ + page.setSize(20); + } + page.setSort("id,desc"); query.setStatus(new String[]{StatusEnum.FORM_STATUS.code("生成"),StatusEnum.FORM_STATUS.code("执行中")}); return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK); } @@ -73,6 +79,9 @@ public class PdaOutController { @Log("出库确认") @SaIgnore public ResponseEntity confirm(@RequestBody PdaFormOutMst pdaFormOutMst) { + RedissonUtils.lock(() -> { + pdaIOService.PpdaOrderOutStorage(pdaFormOutMst); + }, pdaFormOutMst.getCode(), null); return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormOutDtl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormOutDtl.java index dd48815d..bd54561e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormOutDtl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormOutDtl.java @@ -106,6 +106,10 @@ public class PdaFormOutDtl { * 批次号 */ private String pcsn; + /** + * 车间字段 + */ + private String product_area; /** * 载具 */ diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormOutMst.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormOutMst.java index cf82898b..aa071f81 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormOutMst.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormOutMst.java @@ -52,13 +52,17 @@ public class PdaFormOutMst implements Serializable { * 单据类型 */ private String form_type; + /** + * 出库仓库 + */ + private String stor_code; /** * 业务单据状态 */ private String status; /** - * 业务单据状态 + * 业务单据备注 */ private String remark; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java new file mode 100644 index 00000000..6afe86e9 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java @@ -0,0 +1,108 @@ +package org.nl.wms.pda_manage.iostorage.sevice; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +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.config_manage.form_struc.service.IBmFormStrucService; +import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; +import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutDtl; +import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutMst; +import org.nl.wms.stor_manage.io.service.iostor.IStIvtIostorinvService; +import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv; +import org.nl.wms.stor_manage.io.service.iostor_dtl.IStIvtIostorinvdtlService; +import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl; +import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class PdaIOService { + + @Autowired + IBmFormStrucService iBmFormStrucService; + @Autowired + IStIvtIostorinvService iStIvtIostorinvService; + @Autowired + IStIvtIostorinvdtlService iStIvtIostorinvdtlService; + + public void PpdaOrderOutStorage(PdaFormOutMst pdaFormOutMst){ + PdaIOService ioService = SpringContextHolder.getBean(PdaIOService.class); + //创建单据分配货位 + StIvtIostorinv ivtIostorinv = ioService.createPadIvtAndoutDispense(pdaFormOutMst); + //生成流程 + this.pdaTaskOpen(ivtIostorinv); + } + @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) { + dtl.setNow_assign_qty(dtl.getQty()); + BigDecimal assignQty = dtl.getNow_assign_qty(); + if (assignQty==null || assignQty.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()); + BigDecimal nowAssignQty = assignQty; + String productArea = dtl.getForm_data().getString("product_area"); + if (StringUtils.isEmpty(productArea) || !productArea.equals("A1") || !productArea.equals("A2") ||!productArea.equals("A3")){ + throw new BadRequestException("出库申请失败:明细数据车间字段未指定或不正确"); + } + HashMap map = MapOf.of("end_struct_code", "", "start_struct_code", "", "order", "", "product_area", ""); + ivtDtl.setForm_data(new JSONObject(map)); + ivtDtl.setQty(nowAssignQty); + ivtDtl.setPcsn(dtl.getPcsn()); + ivtDtl.setStor_code("FStockId");//pdaFormOutMst.getStor_code() + ivtDtl.setId(IdUtil.getStringId()); + ivtDtl.setInv_id(mst.getId()); + ivtDtl.setStatus(StatusEnum.FORM_STATUS.code("生成")); + list.add(ivtDtl); + } + 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)); + } +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java index 0bf20e04..dd928982 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java @@ -22,6 +22,10 @@ public interface PmFormDataMapper extends BaseMapper { List query(@Param("query") FormDataQuery query); List queryTree(@Param("query")FormDataQuery query); + + List queryTree2(@Param("query")FormDataQuery query); + + List selectChilds(List parents); @Update("${sql}") void dynamicSql(@Param("sql")String sql); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml index e87bf3cb..1c61fdcc 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml @@ -49,7 +49,6 @@ - + + diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java index 6c88a289..bc2ab50a 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java @@ -121,6 +121,10 @@ public class PmFormDataDto implements Serializable { * 批次号 */ private String pcsn; + /** + * 批次号 + */ + private String product_area; /** * 载具 */ 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 da1928df..6ba3fd0f 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 @@ -168,7 +168,20 @@ public class PmFormDataServiceImpl extends ServiceImpl queryTree(FormDataQuery query, PageQuery pageQuery) { Page page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize()); page.setOrderBy("id DESC"); - List pmFormDataDtos = this.baseMapper.queryTree(query); + List pmFormDataDtos = this.baseMapper.queryTree2(query); + if (!CollectionUtils.isEmpty(pmFormDataDtos)){ + List parents = pmFormDataDtos.stream().map(PmFormDataDto::getId).collect(Collectors.toList()); + List childs = this.baseMapper.selectChilds(parents); + Map> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id)); + for (PmFormDataDto dataDto : pmFormDataDtos) { + List children = childMap.get(dataDto.getId()); + for (PmFormDataDto child : children) { + String productArea = child.getForm_data().getString("product_area"); + child.setProduct_area(productArea); + } + dataDto.setChildren(children); + } + } com.baomidou.mybatisplus.extension.plugins.pagination.Page dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal()); dtoPage.setRecords(pmFormDataDtos); return dtoPage; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dao/StIvtIostorinvdtl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dao/StIvtIostorinvdtl.java index 934d8ab9..c67c929f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dao/StIvtIostorinvdtl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dao/StIvtIostorinvdtl.java @@ -2,7 +2,7 @@ package org.nl.wms.stor_manage.io.service.iostor_dtl.dao; import java.math.BigDecimal; -import cn.hutool.json.JSONObject; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml index edf72097..148f06a7 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml @@ -71,7 +71,9 @@ WHERE md_pb_vehicleMater.is_delete = false AND material_id = #{material_id} - AND pcsn = #{pcsn} + + AND pcsn = #{pcsn} + AND st_ivt_structattr.stor_code = #{stor_code} AND st_ivt_structattr.vehicle_code in diff --git a/wms_pro/qd/src/views/login.vue b/wms_pro/qd/src/views/login.vue index 03afd721..90a02af9 100644 --- a/wms_pro/qd/src/views/login.vue +++ b/wms_pro/qd/src/views/login.vue @@ -2,7 +2,7 @@