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 c8492d8..2a05341 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls differ diff --git a/lms/nladmin-ui/src/views/wms/basedata/material/index.vue b/lms/nladmin-ui/src/views/wms/basedata/material/index.vue index 3908729..8a28248 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/material/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/material/index.vue @@ -3,7 +3,7 @@
- + 物料类别: @@ -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 @@ - - - + + +