From 09f1d20a8524a2e648203990cfb2199ff99ddb36 Mon Sep 17 00:00:00 2001 From: zhangzq Date: Wed, 27 Nov 2024 13:12:58 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E5=90=88=E6=A0=BC?= =?UTF-8?q?=E8=AF=81=E5=AD=97=E6=AE=B5=E5=8F=8A=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pda_manage/iostorage/PdaInController.java | 11 +- .../iostorage/server/dto/PdaFormInMst.java | 101 ++++++++++ .../iostorage/sevice/PdaInIOService.java | 172 ++++++++++++++++++ 3 files changed, 281 insertions(+), 3 deletions(-) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/PdaInController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/PdaInController.java index a769e0a1..fa977b8e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/PdaInController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/PdaInController.java @@ -11,8 +11,10 @@ import org.nl.common.utils.MapOf; 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.pda_manage.iostorage.server.dto.PdaFormInMst; 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.iostorage.sevice.PdaInIOService; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery; import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto; @@ -38,15 +40,18 @@ import java.util.Map; @SaIgnore public class PdaInController { + @Autowired + private PdaInIOService pdaInIOService; + @Autowired private PdaIOService pdaIOService; @PostMapping("/confirm") @Log("单据入库组盘确认") - public ResponseEntity confirm(@RequestBody PdaFormOutMst pdaFormOutMst) { + public ResponseEntity confirm(@RequestBody PdaFormInMst pdaFormInMst) { RedissonUtils.lock(() -> { - //pdaIOService.PpdaOrderInStorage(pdaFormOutMst); - }, pdaFormOutMst.getCode(), null); + + }, pdaFormInMst.getBillNo(), 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/PdaFormInMst.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java new file mode 100644 index 00000000..e70bec11 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java @@ -0,0 +1,101 @@ +package org.nl.wms.pda_manage.iostorage.server.dto; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import org.springframework.util.CollectionUtils; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + *

+ * 表单信息表 + *

+ * + * @author generator + * @since 2024-03-25 + */ +@Data +public class PdaFormInMst implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 载具编码 + */ + private String vehicle_code; + /** + * 单据编码 + */ + private String billNo; + /** + * 条码 + */ + private String bar_code; + /** + * 订单号 + */ + private String MONumber; + + /** + * 订单号 + */ + private String MOSeq; + + /** + * 物料id + */ + private String material_id; + /** + * 物料code + */ + private String material_code; + + /** + * 物料name + */ + private String material_name; + + /** + * 物料规格 + */ + private String material_spec; + /** + * 单位id + */ + private String unit_id; + + /** + * 单位name + */ + private String unit_name; + /** + * 入库数量 + */ + private String qty; + + /** + * 组织 + */ + private String StockOrgId; + + /** + * 货主 + */ + private String OwnerId_Id; + + /** + * ERP仓库 + */ + private String stockId; + /** + * 单重 + */ + private String single_weight; + /** + * 批次 + */ + private String pcsn; + +} 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 new file mode 100644 index 00000000..cd3da931 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java @@ -0,0 +1,172 @@ +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 com.kingdee.bos.webapi.entity.IdentifyInfo; +import com.kingdee.bos.webapi.sdk.K3CloudApi; +import org.apache.commons.lang3.ObjectUtils; +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.external_system.erp.dto.ErpQuery; +import org.nl.wms.external_system.erp.dto.ErpSec; +import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutDtl; +import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutMst; +import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; +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.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.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +@Service +public class PdaInIOService { + + @Autowired + ErpSec erpSec; + @Autowired + IBmFormStrucService iBmFormStrucService; + @Autowired + IStIvtIostorinvService iStIvtIostorinvService; + @Autowired + IStIvtIostorinvdtlService iStIvtIostorinvdtlService; + + + public void pdaInIostorUseCode(PdaFormOutMst pdaFormOutMst) { + 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; + } + + /** + * + */ + 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()); + } + } + } + +}