From d3bcf0cd73947069caf247f0781f90dab7d2247a Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Fri, 10 Jan 2025 09:06:38 +0800 Subject: [PATCH] =?UTF-8?q?add:1.=E5=A2=9E=E5=8A=A0=E5=90=8C=E6=AD=A5ERP?= =?UTF-8?q?=E5=BA=93=E5=AD=98=EF=BC=8C=E7=AB=8B=E5=BA=93=E5=8D=95=E7=89=A9?= =?UTF-8?q?=E6=96=99=E6=80=BB=E5=BA=93=E5=AD=98=EF=BC=8CERP=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=90=8C=E6=AD=A5=E6=9D=A1=E4=BB=B6=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=EF=BC=8C=E7=AB=8B=E5=BA=93=E5=BA=93=E5=AD=98=E5=B7=AE=E5=BC=82?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=EF=BC=9B=20=20=20=20=202.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=BA=93=E5=AD=98=E5=8F=98=E5=8A=A8=EF=BC=8C?= =?UTF-8?q?ERP=E5=9B=9E=E4=BC=A0=E6=9F=A5=E8=AF=A2=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=EF=BC=9B=20fix=EF=BC=9A1.=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BB=93=E5=BA=93id=E5=8A=A8=E6=80=81=E5=8F=96=E5=80=BC?= =?UTF-8?q?=EF=BC=8C=E6=90=9C=E7=B4=A2=E6=9D=A1=E4=BB=B6bug;=20=20=20=20?= =?UTF-8?q?=20=202.=E4=BF=AE=E5=A4=8D=E6=8B=A3=E9=80=89=E5=8F=96=E5=80=BCb?= =?UTF-8?q?ug=EF=BC=8C=E6=A0=B8=E5=AF=B9=E5=A4=9A=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=9A=84=E9=A2=86=E6=96=99=E5=8D=95=E7=89=A9=E6=96=99=E6=95=B0?= =?UTF-8?q?=E5=80=BC=EF=BC=8CERP=E5=8D=95=E6=8D=AE=E5=B9=B3=E8=B4=A6;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/common/utils/ErpServiceUtils.java | 36 ++++ .../wms/external_system/erp/dto/ErpQuery.java | 8 +- .../external_system/erp/dto/ErpQueryJson.java | 43 ++++ .../iostorage/sevice/PdaIOService.java | 1 + .../service/PalletIostorinvService.java | 2 +- .../io/service/iostor/dao/StIvtIostorinv.java | 6 + .../impl/StIvtIostorinvServiceImpl.java | 1 + .../controller/StIvtStructattrController.java | 2 +- .../dao/mapper/xml/StIvtStructattrMapper.xml | 5 +- .../impl/StIvtStructattrServiceImpl.java | 76 ++++++- wms_pro/qd/public/config.js | 2 +- .../wms/pm_manage/feedback_data/index.vue | 2 +- .../wms/stor_manage/storIvtInfo/index.vue | 187 +++++++++--------- 13 files changed, 267 insertions(+), 104 deletions(-) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/dto/ErpQueryJson.java diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ErpServiceUtils.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ErpServiceUtils.java index aeba099b..e8ff955c 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ErpServiceUtils.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ErpServiceUtils.java @@ -4,12 +4,14 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.github.javaparser.utils.Log; +import com.google.gson.JsonObject; import com.kingdee.bos.webapi.entity.*; import com.kingdee.bos.webapi.sdk.K3CloudApi; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; import org.nl.wms.external_system.erp.dto.ErpQuery; +import org.nl.wms.external_system.erp.dto.ErpQueryJson; import org.nl.wms.external_system.erp.dto.ErpSec; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -42,6 +44,7 @@ public class ErpServiceUtils { } /** + * 查询单据-单据明细 * @param query 查询条件 */ public JSONArray queryBills(ErpQuery query) { @@ -92,6 +95,39 @@ public class ErpServiceUtils { return JSON.parseArray(JSON.toJSONString(result)); } + /** + * 查询单据指定结果 + */ + public List queryResult(ErpQueryJson query) { + if (StringUtils.isBlank(query.getFormId())) { + throw new BadRequestException("参数异常"); + } + boolean islock = lock.tryLock(); + List result = new ArrayList<>(); + try { + if (islock) { + String jsonString = JSON.toJSONString(query); + K3CloudApi cloudApi = getCloudApi(); + List> lists = cloudApi.executeBillQuery(jsonString); + for (List list : lists) { + JSONObject jsonObject =new JSONObject(); + jsonObject.put("material_code",list.get(0)); + jsonObject.put("erpCounts",list.get(1)); + result.add(jsonObject); + } + } else { + throw new BadRequestException("当前同步操作正在执行,稍后再试"); + } + } catch (Exception ex) { + throw new BadRequestException(ex.getMessage()); + } finally { + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); + } + } + return result; + } + /** * 单据保存 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/dto/ErpQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/dto/ErpQuery.java index d889946b..1007d78c 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/dto/ErpQuery.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/dto/ErpQuery.java @@ -2,6 +2,9 @@ package org.nl.wms.external_system.erp.dto; import lombok.Data; +import java.util.List; +import java.util.Map; + @Data public class ErpQuery { /** @@ -12,16 +15,17 @@ public class ErpQuery { * 需查询的字段key集合,字符串类型,格式:"key1,key2,..."(必录) 注(查询单据体内码,需加单据体Key和下划线,如:FEntryKey_FEntryId) */ private String FieldKeys = "FID"; + /** - * 过滤条件,数组类型,如:[{"Left":"(","FieldName":"Field1","Compare":"67","Value":"111","Right":")","Logic":"0"},{"Left":"(","FieldName":"Field2","Compare":"67","Value":"222","Right":")","Logic":"0"}] + * 过滤条件,字符串 */ private String FilterString; + /** * 排序字段,字符串类型(非必录) */ private String OrderString; /** - * * 返回总行数,整型(非必录) */ private Integer TopRowCount; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/dto/ErpQueryJson.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/dto/ErpQueryJson.java new file mode 100644 index 00000000..6c036848 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/dto/ErpQueryJson.java @@ -0,0 +1,43 @@ +package org.nl.wms.external_system.erp.dto; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class ErpQueryJson { + /** + * 业务对象表单Id(必录) + */ + private String FormId; + /** + * 需查询的字段key集合,字符串类型,格式:"key1,key2,..."(必录) 注(查询单据体内码,需加单据体Key和下划线,如:FEntryKey_FEntryId) + */ + private String FieldKeys = "FID"; + + /** + * 过滤条件,数组类型,如:[{"Left":"(","FieldName":"Field1","Compare":"67","Value":"111","Right":")","Logic":"0"},{"Left":"(","FieldName":"Field2","Compare":"67","Value":"222","Right":")","Logic":"0"}] + */ + private List> FilterString; + /** + * 排序字段,字符串类型(非必录) + */ + private String OrderString; + /** + * 返回总行数,整型(非必录) + */ + private Integer TopRowCount; + /** + * 开始行索引,整型(非必录) + */ + private Integer StartRow = 0; + /** + * 行数 + */ + private Integer Limit = 100; + /** + * 表单所在的子系统内码,字符串类型(非必录) + */ + private Integer SubSystemId; +} 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 index 1a5e470a..d26c931b 100644 --- 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 @@ -267,6 +267,7 @@ public class PdaIOService { dtlJ.putAll((Map) dtlJ.remove("form_data")); sourceFormData.putAll(dtlJ); sourceFormData.put("pcsn",disPcsn); + sourceFormData.put("stock_code", "FStockId".equals(ivtDtl.getStor_code())?"25":"24"); ivtDtl.setSource_form_data(sourceFormData); } list.add(ivtDtl); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/palletio/service/PalletIostorinvService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/palletio/service/PalletIostorinvService.java index 0c101976..9ddfdd19 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/palletio/service/PalletIostorinvService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/palletio/service/PalletIostorinvService.java @@ -52,7 +52,7 @@ public class PalletIostorinvService { String material_id = form.getString("material_id"); BmVehicleInfo vehicleInfo = iBmVehicleInfoService.getOne(new QueryWrapper().eq("vehicle_code", vehicle_code)); if (vehicleInfo ==null ){ - throw new BadRequestException("入库失败:载具信息不存在已经存在"); + throw new BadRequestException("入库失败:载具信息未注册,请录入载具信息"); } int count = iMdPbVehicleMaterService.count(new QueryWrapper() .eq("vehicle_code", vehicle_code) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/dao/StIvtIostorinv.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/dao/StIvtIostorinv.java index 5fc07d67..d559b476 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/dao/StIvtIostorinv.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/dao/StIvtIostorinv.java @@ -109,5 +109,11 @@ public class StIvtIostorinv implements Serializable { @TableField(insertStrategy = FieldStrategy.NEVER,updateStrategy = FieldStrategy.NEVER) private Boolean in_storage; + /** + * 仓库编号 + */ + @TableField(exist = false) + private String stor_code; + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java index 35547948..0cbb64af 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java @@ -109,6 +109,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl @@ -64,12 +68,15 @@ public class StIvtStructattrServiceImpl extends ServiceImpl getStructIvt(StructattrQuery query, PageQuery pageQuery) { + if (StringUtils.isNotBlank(query.getMaterial()) || StringUtils.isNotBlank(query.getPcsn())) { + if (StringUtils.isNotBlank(query.getMaterial())) { + query.setMaterial(query.getMaterial().trim()); + } else { + query.setPcsn(query.getPcsn().trim()); + } + pageQuery.setSize(5000); + } Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); page.setOrderBy("struct.update_time DESC"); List mst_detail = this.baseMapper.getStructIvt(query, pageQuery); + if (ObjectUtil.isNotEmpty(mst_detail)) { + if ((StringUtils.isNotBlank(query.getMaterial()) || StringUtils.isNotBlank(query.getPcsn()))) { + ErpQueryJson erpQuery = new ErpQueryJson(); + erpQuery.setFormId("STK_Inventory"); + erpQuery.setFieldKeys("FMaterialId.FNumber,FBaseQty"); + erpQuery.setLimit(1000); + String filterString = ""; + if (StringUtils.isNotBlank(query.getMaterial())) { + filterString = "[{\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"67\",\"Value\":\"" + mst_detail.get(0).get("material_code").toString() + "\",\"Left\":\"\",\"Right\":\"\",\"Logic\":\"0\"},{\"FieldName\":\"FStockId.FNumber\",\"Compare\":\"67\",\"Value\":\"25\",\"Left\":\"\",\"Right\":\"\",\"Logic\":\"0\"}]"; + } else { + filterString = "[{\"FieldName\":\"FLot.FNumber\",\"Compare\":\"67\",\"Value\":\"" + mst_detail.get(0).get("pcsn").toString() + "\",\"Left\":\"\",\"Right\":\"\",\"Logic\":\"0\"},{\"FieldName\":\"FStockId.FNumber\",\"Compare\":\"67\",\"Value\":\"25\",\"Left\":\"\",\"Right\":\"\",\"Logic\":\"0\"}]"; + } + ObjectMapper objectMapper = new ObjectMapper(); + try { + List> filterList = objectMapper.readValue(filterString, objectMapper.getTypeFactory().constructCollectionType(List.class, Map.class)); + erpQuery.setFilterString(filterList); + } catch (JsonProcessingException e) { + throw new BadRequestException("erp库存查询条件错误"); + } + //根据物料编号或批次查询ERP即时库存 + List result = erpServiceUtils.queryResult(erpQuery); + Map erpCounts = result.stream() + .filter(item -> item.get("erpCounts") != null) + .collect(Collectors.groupingBy( + item -> (String) item.get("material_code"), + Collectors.reducing(BigDecimal.ZERO, item -> BigDecimal.valueOf((Double) item.get("erpCounts")), BigDecimal::add) + )); + Map totals = mst_detail.stream() + .filter(item -> item.get("qty") != null) + .filter(item -> item.get("material_code") != null) + .collect(Collectors.groupingBy( + item -> (String) item.get("material_code"), + Collectors.reducing(BigDecimal.ZERO, item -> (BigDecimal) item.get("qty"), BigDecimal::add) + )); + for (Map item : mst_detail) { + String key = (String) item.get("material_code"); + BigDecimal totalQty = totals.getOrDefault(key, BigDecimal.ZERO); + BigDecimal totalErpQty = erpCounts.getOrDefault(key, BigDecimal.ZERO); + BigDecimal differCount = totalQty.subtract(totalErpQty); + item.put("differCount", differCount); + item.put("counts", totalQty); + item.put("erpCounts", totalErpQty); + } + } else { + for (Map item : mst_detail) { + item.put("differCount", null); + item.put("counts", null); + item.put("erpCounts", null); + } + } + } TableDataInfo build = TableDataInfo.build(mst_detail); build.setTotalElements(page.getTotal()); return build; diff --git a/wms_pro/qd/public/config.js b/wms_pro/qd/public/config.js index d9339fdd..00104431 100644 --- a/wms_pro/qd/public/config.js +++ b/wms_pro/qd/public/config.js @@ -3,7 +3,7 @@ window.g = { VUE_APP_BASE_API: 'http://127.0.0.1:8012' }, prod: { - VUE_APP_BASE_API: 'http://127.0.0.1:8012' + VUE_APP_BASE_API: 'http://192.168.18.218:8012' } } diff --git a/wms_pro/qd/src/views/wms/pm_manage/feedback_data/index.vue b/wms_pro/qd/src/views/wms/pm_manage/feedback_data/index.vue index 3b44779b..dd0aacd8 100644 --- a/wms_pro/qd/src/views/wms/pm_manage/feedback_data/index.vue +++ b/wms_pro/qd/src/views/wms/pm_manage/feedback_data/index.vue @@ -173,7 +173,7 @@ - + diff --git a/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/index.vue b/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/index.vue index f1bf7420..c7d96674 100644 --- a/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/index.vue +++ b/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/index.vue @@ -3,90 +3,90 @@
- - - - - - - - - - - - - - - - - - - - - - - - 导出库存 - - + + + + + + + + + + + + + + + + + + + + + + + 导出库存 + +
@@ -103,10 +103,13 @@ - + - + + + + @@ -139,7 +142,7 @@ import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import structattr from './structattr' -import { downloadFile,downloadFile2 } from '@/utils/index' +import { downloadFile, downloadFile2 } from '@/utils/index' const defaultForm = { id: null, @@ -187,24 +190,24 @@ export default { methods: { // 钩子:在获取表格数据之前执行,false 则代表不获取数据 [CRUD.HOOK.beforeRefresh]() { - if (this.query.datepick){ + if (this.query.datepick) { this.query.start_time = this.query.datepick[0] - if (this.query.datepick.length>1){ + if (this.query.datepick.length > 1) { this.query.end_time = this.query.datepick[1] } - }else { + } else { this.query.start_time = '' this.query.end_time = '' } return true }, downloadMethod() { - if (this.query.datepick){ + if (this.query.datepick) { this.query.start_time = this.query.datepick[0] - if (this.query.datepick.length>1){ + if (this.query.datepick.length > 1) { this.query.end_time = this.query.datepick[1] } - }else { + } else { this.query.start_time = '' this.query.end_time = '' }