From 47624946eb446e30889c0a565347fc27c88079b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B1=9F=E7=8E=AE?= Date: Fri, 16 Dec 2022 14:53:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=A9=E6=96=99=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=20=E4=BF=AE=E6=94=B9=E8=AE=A1=E9=87=8F=E5=8D=95?= =?UTF-8?q?=E4=BD=8D=E7=95=8C=E9=9D=A2=20=E7=BC=96=E5=86=99=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=90=8C=E6=AD=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basedata/rest/MaterialbaseController.java | 15 +- .../basedata/service/MaterialbaseService.java | 2 +- .../basedata/service/dto/MaterialbaseDto.java | 2 +- .../service/impl/MaterialbaseServiceImpl.java | 142 ++++++++++++------ .../nl/wms/basedata/wql/QMD_ME_MATERIAL.wql | 48 +++--- .../src/main/java/org/nl/wms/wms.xls | Bin 300544 -> 272896 bytes .../src/views/wms/basedata/material/index.vue | 116 ++++++++++---- .../src/views/wms/basedata/measure/index.vue | 16 +- 8 files changed, 216 insertions(+), 125 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/MaterialbaseController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/MaterialbaseController.java index 742a3a9..1549fd1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/MaterialbaseController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/MaterialbaseController.java @@ -3,10 +3,13 @@ package org.nl.wms.basedata.rest; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.logging.annotation.Log; import org.nl.wms.basedata.eum.MaterOptTypeEnum; import org.nl.wms.basedata.service.MaterialbaseService; @@ -90,8 +93,16 @@ public class MaterialbaseController { @Log("物料同步") @ApiOperation("物料同步") //@SaCheckPermission("materialtype:list") - public ResponseEntity synchronize(@RequestBody Map whereJson) { - materialBaseService.synchronize(whereJson); + public ResponseEntity synchronize(@RequestBody JSONObject param) { + String start_time = param.getString("start_time"); + if (StrUtil.isEmpty(start_time)) { + throw new BadRequestException("开始日期不能为空"); + } + String end_time = param.getString("end_time"); + if (StrUtil.isEmpty(end_time)) { + throw new BadRequestException("结束日期不能为空"); + } + materialBaseService.synchronize(param); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/MaterialbaseService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/MaterialbaseService.java index e3dd259..784f836 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/MaterialbaseService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/MaterialbaseService.java @@ -89,7 +89,7 @@ public interface MaterialbaseService { */ JSONObject getMaterOptType(String materOpt_code); - void synchronize(Map whereJson); + void synchronize(JSONObject param); JSONArray getProductSeries(String parent_class_id); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java index b8b4ac8..1c31031 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java @@ -37,7 +37,7 @@ public class MaterialbaseDto implements Serializable { private String english_name; - private long base_unit_id; + private String unit_code; private long assist_unit_id; private String base_unit_name; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialbaseServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialbaseServiceImpl.java index 3628f32..beda90d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialbaseServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialbaseServiceImpl.java @@ -7,6 +7,8 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -14,8 +16,18 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; +import org.nl.modules.system.domain.Dict; +import org.nl.modules.system.domain.DictDetail; +import org.nl.modules.system.service.DictDetailService; +import org.nl.modules.system.service.DictService; +import org.nl.modules.system.service.ParamService; +import org.nl.modules.system.service.dto.DictDetailDto; +import org.nl.modules.system.service.dto.DictSmallDto; +import org.nl.modules.system.service.impl.DictDetailServiceImpl; +import org.nl.modules.system.service.impl.ParamServiceImpl; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.basedata.eum.MaterOptTypeEnum; import org.nl.wms.basedata.service.ClassstandardService; @@ -42,61 +54,20 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { private final ClassstandardService classstandardService; //private final WmsToErpService wmsToErpService; + private final ParamService paramService; + + private final DictDetailService dictDetailService; + @Override public Map queryAll(Map whereJson, Pageable page) { String search = MapUtil.getStr(whereJson, "search"); - //物料限制的时候使用,初始化页面 - String class_idStr = MapUtil.getStr(whereJson, "class_idStr"); - String material_type_id = MapUtil.getStr(whereJson, "material_type_id"); - String class_code = MapUtil.getStr(whereJson, "class_code"); - String ids = MapUtil.getStr(whereJson, "ids"); HashMap map = new HashMap<>(); map.put("flag", "1"); + map.put("search", search); - if (!StrUtil.isEmpty(search)) { - //处理转义字符 - if (search.contains("\\")) { - search = search.replace("\\", "\\\\\\"); - } - map.put("search", "%" + search + "%"); - } - - //处理物料当前节点的所有子节点 - if (!StrUtil.isEmpty(material_type_id)) { - map.put("material_type_id", material_type_id); - String classIds = classstandardService.getChildIdStr(material_type_id); - map.put("classIds", classIds); - } else if (ObjectUtil.isNotEmpty(class_idStr)) { - String classIds = classstandardService.getAllChildIdStr(class_idStr); - map.put("classIds", classIds); - } - - if (!StrUtil.isEmpty(class_code)) { - map.put("class_code", class_code + "%"); - } - - StringBuffer where = new StringBuffer(); - if (StrUtil.isNotEmpty(ids)) { - ids = ids.replaceAll("\'", ""); - String[] strs = ids.split(","); - where.append("("); - for (int i = 0; i < strs.length; ) { - where.append("class.class_code like '" + strs[i] + "%'"); - i++; - if (i < strs.length) { - where.append(" or "); - } - } - where.append(")"); - map.put("idssql", where.toString()); - } else { - map.put("idssql", "1=1"); - } - - JSONObject jo = WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id"); - return jo; + return WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id"); } @Override @@ -216,9 +187,80 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { } @Override - public void synchronize(Map whereJson) { - /* wmsToErpService.getClassInfo(null); - wmsToErpService.getMaterialInfo(null);*/ + public void synchronize(JSONObject param) { + // 获取 mes 地址,拼接请求地址 + String material_uri = paramService.findByCode("mes_url").getValue() + "api/mes/material"; + HttpResponse response = HttpRequest + .post(material_uri) + .body(param.toJSONString()) + .execute(); + if (response.getStatus() != 200) { + throw new BadRequestException("与 MES 通信错误"); + } + + JSONObject response_body = JSON.parseObject(response.body()); + if (ObjectUtil.isEmpty(response_body)) { + throw new BadRequestException("MES 响应为空"); + } + if (!response_body.getString("status").equals("200")) { + throw new BadRequestException(response_body.getString("message")); + } + + // 进行计量单位与物料的更新 + JSONArray data = response_body.getJSONArray("data"); + WQLObject unit_table = WQLObject.getWQLObject("md_pb_measureunit"); + WQLObject material_table = WQLObject.getWQLObject("md_me_materialbase"); + Long user_id = SecurityUtils.getCurrentUserId(); + String nick_name = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + for (Object o : data) { + JSONObject material = (JSONObject) o; + + // 查询是否存在这个计量单位 + String unit_code = material.getString("unit_code"); + JSONObject unit = unit_table + .query("unit_code = '" + unit_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(unit)) { + // 如果不存在则添加 + material.put("measure_unit_id", IdUtil.getSnowflake(1L, 1L)); + material.put("is_used", "1"); + material.put("create_id", user_id); + material.put("create_name", nick_name); + material.put("create_time", now); + unit_table.insert(material); + } else { + // 如果存在则修改 + unit.put("unit_name", material.getString("unit_name")); + unit.put("update_optid", user_id); + unit.put("update_optname", nick_name); + unit.put("update_time", now); + unit_table.update(unit); + } + + // 查询是否存在这个物料 + String material_code = material.getString("material_code"); + JSONObject existMaterial = material_table + .query("material_code = '" + material_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(existMaterial)) { + // 如果不存在则添加 + material.put("material_id", IdUtil.getSnowflake(1L, 1L)); + material.put("is_used", "1"); + material.put("create_id", user_id); + material.put("create_name", nick_name); + material.put("create_time", now); + material_table.insert(material); + } else { + // 如果存在则修改 + existMaterial.put("material_name", material.getString("material_name")); + existMaterial.put("unit_code", unit_code); + existMaterial.put("update_optid", user_id); + existMaterial.put("update_optname", nick_name); + existMaterial.put("update_time", now); + material_table.update(existMaterial); + } + } } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql index fb52826..7c85de0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql @@ -15,9 +15,6 @@ ################################################# 输入.flag TYPEAS s_string 输入.search TYPEAS s_string - 输入.class_code TYPEAS s_string - 输入.idssql TYPEAS f_string - 输入.classIds TYPEAS f_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -44,36 +41,25 @@ IF 输入.flag = "1" PAGEQUERY SELECT - mb.*, - class.class_code, - class.class_name, - unit_name, - '50' as standard_weight, - unit_name as base_unit_id_name, - class2.class_code as product_series_code, - class2.class_name as product_series_name - + material.material_id, + material.material_code, + material.material_name, + material.unit_code, + unit.unit_name AS 'unit_name', + material.is_used, + material.create_name, + material.create_time FROM - md_me_materialbase mb - LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id - LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = mb.base_unit_id - left join MD_PB_ClassStandard class2 on class2.class_id =mb.product_series + md_me_materialbase material + LEFT JOIN md_pb_measureunit unit ON material.unit_code = unit.unit_code WHERE - mb.is_delete = '0' - and 输入.idssql - OPTION 输入.search <> "" - ( - mb.material_code like 输入.search - OR - mb.material_name like 输入.search - ) - ENDOPTION - OPTION 输入.class_code <> "" - class.class_code like 输入.class_code - ENDOPTION - OPTION 输入.classIds <> "" - class.class_id in 输入.classIds - ENDOPTION + material.is_delete = '0' + OPTION 输入.search <> "" + ( + material.material_code LIKE CONCAT ( '%', 输入.search, '%' ) + OR material.material_name LIKE CONCAT ( '%', 输入.search, '%' ) + ) + ENDOPTION ENDSELECT ENDPAGEQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls index c8492d8113edc3df68d0d22893184f1c84ec4021..2a053411330f7d38a90a4e70b04b4c443dd75709 100644 GIT binary patch delta 29801 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 Q!bYCFRH!_#9EAIS03cEuJpcdz delta 60269 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
- + 物料类别: @@ -43,7 +43,7 @@ type="success" icon="el-icon-position" size="mini" - @click="synchronize()" + @click="show_sync_dialog = true" > 同步 @@ -54,7 +54,7 @@ :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" - width="1200px" + width="400px" > @@ -63,20 +63,48 @@ + + - + + + + + + + + + + + + + + + + + + + + - - @@ -100,7 +128,7 @@ - + - - - - - - @@ -142,12 +164,12 @@ > - - - + + + - - + + - - + + + + + + + + + + +
@@ -203,7 +252,7 @@ const defaultForm = { material_spec: null, material_model: null, english_name: null, - base_unit_id: null, + unit_code: null, approve_fileno: null, print_no: null, material_type_id: null, @@ -223,7 +272,7 @@ const defaultForm = { update_optname: null, update_time: null, is_used_time: null, - is_used: null, + is_used: '1', is_delete: null, ext_id: null, material_height_type: null, @@ -254,6 +303,8 @@ export default { measure_unit: [], productSeries: [], permission: {}, + show_sync_dialog: false, + sync_time: '', rules: { material_id: [ { required: true, message: '不能为空', trigger: 'blur' } @@ -264,9 +315,6 @@ export default { material_name: [ { required: true, message: '物料名称不能为空', trigger: 'blur' } ], - material_type_id: [ - { required: true, message: '物料分类不能为空', trigger: 'blur' } - ], create_id: [ { required: true, message: '不能为空', trigger: 'blur' } ], @@ -278,6 +326,9 @@ export default { ], material_height_type: [ { required: true, message: '不能为空', trigger: 'blur' } + ], + unit_code: [ + { required: true, message: '计量单位不能为空', trigger: 'blur' } ] } } @@ -344,22 +395,23 @@ export default { crudClassstandard.getClassSuperior(id).then(res => { const data = res.content that.buildTree(data) - if (type == '02') { + if (type === '02') { that.classes2 = data } - if (type == '03') { + if (type === '03') { that.classes3 = data } }) }, synchronize() { - this.fullscreenLoading = true - crudMaterialbase.synchronize(this.crud.query).then(res => { - this.fullscreenLoading = false + crudMaterialbase.synchronize({ start_time: this.sync_time[0], end_time: this.sync_time[1] }).then(res => { + this.show_sync_dialog = false + this.sync_time = '' this.crud.notify('同步成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) }).catch(() => { - this.fullscreenLoading = false + this.show_sync_dialog = false }) + console.log(this.sync_time) }, queryClassId() { const param = { diff --git a/lms/nladmin-ui/src/views/wms/basedata/measure/index.vue b/lms/nladmin-ui/src/views/wms/basedata/measure/index.vue index 9f0838e..3f3b031 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/measure/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/measure/index.vue @@ -17,16 +17,16 @@ - + - + - + - + @@ -36,7 +36,7 @@ @@ -44,9 +44,9 @@ - - - + + +