From 851c3b492f5844e042363fb2e976309be8f47f22 Mon Sep 17 00:00:00 2001 From: baoge <751575283@qq.com> Date: Sat, 25 Mar 2023 11:14:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=93=E5=AD=98=E7=BA=BFpad=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/MaterialbaseServiceImpl.java | 562 +++++++++--------- .../impl/CacheLineHandServiceImpl.java | 16 +- 2 files changed, 292 insertions(+), 286 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java index 58e8045b..432cc581 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java @@ -1,7 +1,5 @@ - package org.nl.wms.basedata.master.service.impl; - import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; @@ -14,8 +12,10 @@ import lombok.RequiredArgsConstructor; import org.json.XML; import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; +import org.nl.config.thread.ThreadPoolExecutorUtil; import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.utils.RedisUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; @@ -24,12 +24,15 @@ import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.basedata.master.service.MaterialbaseService; import org.nl.wms.basedata.master.service.dto.MaterialbaseDto; - +import org.nl.wms.pda.dto.MaterialDto; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * @author zhouz @@ -39,290 +42,295 @@ import java.util.*; @Service @RequiredArgsConstructor @Slf4j -public class MaterialbaseServiceImpl implements MaterialbaseService { - private final ClassstandardService classstandardService; - //private final WmsToErpService wmsToErpService; +public class MaterialbaseServiceImpl implements MaterialbaseService{ + private final ClassstandardService classstandardService; + //private final WmsToErpService wmsToErpService; + private final RedisUtils redisUtils; - @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"); + @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"); + 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; + } + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); + JSONArray arr = wo.query().getResultJSONArray(0); + List list = arr.toJavaList(MaterialbaseDto.class); + return list; + } - HashMap map = new HashMap<>(); - map.put("flag", "1"); + @Override + public MaterialbaseDto findById(Long material_id) { + WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); + JSONObject json = wo.query("material_id =" + material_id + "").uniqueResult(0); + String unit_name = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id= '" + json.getString("base_unit_id") + "'").uniqueResult(0).getString("unit_name"); + json.put("base_unit_name", unit_name); + final MaterialbaseDto obj = json.toJavaObject(MaterialbaseDto.class); + return obj; + } - if (!StrUtil.isEmpty(search)) { - //处理转义字符 - if (search.contains("\\")) { - search = search.replace("\\", "\\\\\\"); - } - map.put("search", "%" + search + "%"); - } + @Override + public MaterialbaseDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); + if(StrUtil.isNotEmpty(code) && code.contains("\\")) { + code = code.replace("\\", "\\\\"); + } + JSONObject json = wo.query("material_code ='" + code + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(json)) { + return null; + } + String unit_name = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id= '" + json.getString("base_unit_id") + "'").uniqueResult(0).getString("unit_name"); + json.put("base_unit_name", unit_name); + final MaterialbaseDto obj = json.toJavaObject(MaterialbaseDto.class); + return obj; + } - //处理物料当前节点的所有子节点 - 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); - } + @Override + @Transactional(rollbackFor = Exception.class) + public void create(MaterialbaseDto dto) { + ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + dto.setMaterial_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_id(currentUserId); + dto.setUpdate_name(nickName); + dto.setUpdate_time(DateUtil.now()); + dto.setCreate_time(DateUtil.now()); + WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + //子线程异步更新redis数据 + CompletableFuture updateMaterToRedis = CompletableFuture.runAsync(this::updateRedis, pool); + } - if (!StrUtil.isEmpty(class_code)) { - map.put("class_code", class_code + "%"); - } + @Override + @Transactional(rollbackFor = Exception.class) + public void update(MaterialbaseDto dto) { + ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); + MaterialbaseDto entity = this.findById(dto.getMaterial_id()); + if(entity == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + dto.setUpdate_time(DateUtil.now()); + dto.setUpdate_id(currentUserId); + dto.setUpdate_name(nickName); + WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + //子线程异步更新redis数据 + CompletableFuture updateMaterToRedis = CompletableFuture.runAsync(this::updateRedis, pool); + } - 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"); - } + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); + for(Long material_id : ids) { + JSONObject param = new JSONObject(); + param.put("material_id", String.valueOf(material_id)); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", DateUtil.now()); + wo.update(param); + } + //子线程异步更新redis数据 + CompletableFuture updateMaterToRedis = CompletableFuture.runAsync(this::updateRedis, pool); + } - JSONObject jo = WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id"); - return jo; - } + @Override + public boolean isAlongMaterType(String materOpt_code, String material_id, String material_type_id) { + if(ObjectUtil.isNotEmpty(material_id)) { + Long long_mater = Long.parseLong(material_id); + material_type_id = this.findById(long_mater).getMaterial_type_id() + ""; + } + if(ObjectUtil.isEmpty(material_type_id)) { + throw new BadRequestException("物料类型不能为空!"); + } + String class_idStr = MaterOptTypeEnum.getObj(materOpt_code).getString("class_idStr"); + Set set = classstandardService.getAllChildIdSet(class_idStr); + if(ObjectUtil.isNotEmpty(set)) { + return set.contains(material_type_id); + } + return false; + } - @Override - public List queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); - JSONArray arr = wo.query().getResultJSONArray(0); - List list = arr.toJavaList(MaterialbaseDto.class); - return list; - } + @Override + public JSONObject getMaterOptType(String materOpt_code) { + return MaterOptTypeEnum.getObj(materOpt_code); + } - @Override - public MaterialbaseDto findById(Long material_id) { - WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); - JSONObject json = wo.query("material_id =" + material_id + "").uniqueResult(0); - String unit_name = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id= '" + json.getString("base_unit_id") + "'").uniqueResult(0).getString("unit_name"); - json.put("base_unit_name", unit_name); - final MaterialbaseDto obj = json.toJavaObject(MaterialbaseDto.class); - return obj; - } + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject synchronize(JSONObject form) { + ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); + log.info("导入方法开始"); + JSONObject result = new JSONObject(); + String url = "http://192.168.0.82:8000/sap/bc/srt/rfc/sap/z_sd0002_send_mat_md/800/z_sd0002_send_mat_md/binding"; + String method = "ZSd0002SendMatMd"; + String bill_code1 = form.getString("bill_code1"); + String bill_code2 = form.getString("bill_code2"); + HashMap map = new HashMap(); + map.put("MatnrFr", bill_code1); + map.put("MatnrTo", bill_code2); + //非必填字段 + JSONObject ZfmGetSoResponse = null; + try { + //String response = WebServiceUtil.process(url, method, map); + String response = "24026697L软管外丝直接\\C46500\\S3/16*1/4M\\URGJ00124TH2023-03-01KDEALBVGCXKDEALBVGCZ009M2401KG0.01.0KG20X24026697L201200PCNORM201224026697L204000PCNORM24026697L206000PCNORM206024026697L220000PCNORM24026697L201224026697L204024026697L206024026697L220024026697L0000000000077876000000000010S01CHAR300类别美标软管管件X24026697L0000000000077876000000000011S02CHAR300牌号C46500X24026697L0000000000077876000000000012S03CHAR300规格S3/16*1/4MX24026697L0000000000077876000000000014S05CHAR300形状软管外丝直接X24026697L0000000000077876000000000015S06CHAR300标准URGJX24026697L0000000000077876000000000016S07CHAR300图号URGJ00124THX24026697L0000000000077876000000000017S08CHAR300监管性质保税来料X24026697L0000000000077876000000000020S11CHAR300客户牌号(下单时输入)24026697L0000000000077876000000000019S10CHAR300附加说明(下单时输入)24026697L0000000000077876000000000102S13CHAR300铜管内部牌号黄铜管件-黄铜管件24026697LKG1124026697LPC19125024026697L2012101PC1000.024026697S0010PC1000.024026697L2012101PC1000.035000715L9000KG15.1724026697L2060101PC1000.024026697S0010KG15.1724026697L2060101PC1000.035000715L9000KG15.1724026697L2060501PC1.024026697S0010KG15.1724026697L2060501PC1.035000715L9000KG15.17I000共输出1 条物料数据000000"; + JSONObject ret = JSONObject.parseObject(XML.toJSONObject(response).toString()); + System.out.println("getXML返回数据-----------------" + ret.toString()); + JSONObject Envelope = ret.getJSONObject("soap-env:Envelope"); + JSONObject Body = Envelope.getJSONObject("soap-env:Body"); + ZfmGetSoResponse = Body.getJSONObject("n0:ZSd0002SendMatMdResponse"); + } + catch(Exception e) { + e.printStackTrace(); + } + JSONObject TZtsalesorder = ZfmGetSoResponse.getJSONObject("Out"); + JSONObject TMara = TZtsalesorder.getJSONObject("TMara"); + JSONArray rows = TMara.getJSONArray("item"); + for(int i = 0; i < rows.size(); i++) { + JSONObject row = rows.getJSONObject(i); + String Matnr = row.getString("Matnr").replaceAll("^(0+)", ""); + //查询是否存在该物料 + JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + Matnr + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(mater_jo)) { + mater_jo = new JSONObject(); + mater_jo.put("material_id", IdUtil.getSnowflake(1, 1).nextId()); + mater_jo.put("material_code", Matnr); + mater_jo.put("material_name", row.getString("Maktx")); + mater_jo.put("material_model", row.getString("Mtart")); + String unit_code = row.getString("Meins"); + JSONObject unit_jo = WQLObject.getWQLObject("md_pb_measureunit").query("unit_name = '" + unit_code + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(unit_jo)) { + throw new BadRequestException("未查询到该物料对应的单位信息:" + unit_code); + } + mater_jo.put("base_unit_id", unit_jo.getString("measure_unit_id")); + JSONObject class_jo = WQLObject.getWQLObject("md_pb_classstandard").query("class_code = '" + row.getString("Mtart") + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(class_jo)) { + throw new BadRequestException("未查询到该物料对应的基础类别信息:" + row.getString("Mtart")); + } + mater_jo.put("material_type_id", class_jo.getString("class_id")); + mater_jo.put("create_id", SecurityUtils.getCurrentUserId()); + mater_jo.put("create_name", SecurityUtils.getCurrentNickName()); + mater_jo.put("create_time", DateUtil.now()); + mater_jo.put("update_optid", SecurityUtils.getCurrentUserId()); + mater_jo.put("update_optname", SecurityUtils.getCurrentNickName()); + mater_jo.put("update_time", DateUtil.now()); + mater_jo.put("is_used_time", DateUtil.now()); + mater_jo.put("is_used", "1"); + mater_jo.put("is_delete", "0"); + WQLObject.getWQLObject("md_me_materialbase").insert(mater_jo); + } + else{ + mater_jo.put("material_code", Matnr); + mater_jo.put("material_name", row.getString("Maktx")); + mater_jo.put("material_model", row.getString("Mtart")); + String unit_code = row.getString("Meins"); + JSONObject unit_jo = WQLObject.getWQLObject("md_pb_measureunit").query("unit_name = '" + unit_code + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(unit_jo)) { + throw new BadRequestException("未查询到该物料对应的单位信息:" + unit_code); + } + mater_jo.put("base_unit_id", unit_jo.getString("measure_unit_id")); + JSONObject class_jo = WQLObject.getWQLObject("md_pb_classstandard").query("class_code = '" + row.getString("Mtart") + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(class_jo)) { + throw new BadRequestException("未查询到该物料对应的基础类别信息:" + row.getString("Mtart")); + } + mater_jo.put("material_type_id", class_jo.getString("class_id")); + mater_jo.put("create_id", SecurityUtils.getCurrentUserId()); + mater_jo.put("create_name", SecurityUtils.getCurrentNickName()); + mater_jo.put("create_time", DateUtil.now()); + mater_jo.put("update_optid", SecurityUtils.getCurrentUserId()); + mater_jo.put("update_optname", SecurityUtils.getCurrentNickName()); + mater_jo.put("update_time", DateUtil.now()); + mater_jo.put("is_used_time", DateUtil.now()); + mater_jo.put("is_used", "1"); + mater_jo.put("is_delete", "0"); + WQLObject.getWQLObject("md_me_materialbase").update(mater_jo); + } + } + //子线程异步更新redis数据 + CompletableFuture updateMaterToRedis = CompletableFuture.runAsync(this::updateRedis, pool); + result.put("message", "导入成功!一共导入:" + rows.size() + "条数据!"); + return new JSONObject(); + } - @Override - public MaterialbaseDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); - if (StrUtil.isNotEmpty(code) && code.contains("\\")) { - code = code.replace("\\", "\\\\"); - } - JSONObject json = wo.query("material_code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json)) return null; - String unit_name = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id= '" + json.getString("base_unit_id") + "'").uniqueResult(0).getString("unit_name"); - json.put("base_unit_name", unit_name); - final MaterialbaseDto obj = json.toJavaObject(MaterialbaseDto.class); - return obj; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(MaterialbaseDto dto) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - - dto.setMaterial_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setCreate_id(currentUserId); - dto.setCreate_name(nickName); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); - dto.setUpdate_time(DateUtil.now()); - dto.setCreate_time(DateUtil.now()); - WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(MaterialbaseDto dto) { - MaterialbaseDto entity = this.findById(dto.getMaterial_id()); - if (entity == null) { - throw new BadRequestException("被删除或无权限,操作失败!"); - } - - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - - dto.setUpdate_time(DateUtil.now()); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); - WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(Long[] ids) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - - WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); - for (Long material_id : ids) { - JSONObject param = new JSONObject(); - param.put("material_id", String.valueOf(material_id)); - param.put("is_delete", "1"); - param.put("update_optid", currentUserId); - param.put("update_optname", nickName); - param.put("update_time", DateUtil.now()); - wo.update(param); - } - } - - @Override - public boolean isAlongMaterType(String materOpt_code, String material_id, String material_type_id) { - if (ObjectUtil.isNotEmpty(material_id)) { - Long long_mater = Long.parseLong(material_id); - material_type_id = this.findById(long_mater).getMaterial_type_id() + ""; - } - if (ObjectUtil.isEmpty(material_type_id)) { - throw new BadRequestException("物料类型不能为空!"); - } - String class_idStr = MaterOptTypeEnum.getObj(materOpt_code).getString("class_idStr"); - - Set set = classstandardService.getAllChildIdSet(class_idStr); - if (ObjectUtil.isNotEmpty(set)) { - return set.contains(material_type_id); - } - - return false; - } - - @Override - public JSONObject getMaterOptType(String materOpt_code) { - return MaterOptTypeEnum.getObj(materOpt_code); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public JSONObject synchronize(JSONObject form) { - log.info("导入方法开始"); - JSONObject result = new JSONObject(); - - String url = "http://192.168.0.82:8000/sap/bc/srt/rfc/sap/z_sd0002_send_mat_md/800/z_sd0002_send_mat_md/binding"; - String method = "ZSd0002SendMatMd"; - String bill_code1 = form.getString("bill_code1"); - String bill_code2 = form.getString("bill_code2"); - HashMap map = new HashMap(); - map.put("MatnrFr", bill_code1); - map.put("MatnrTo", bill_code2); - //非必填字段 - JSONObject ZfmGetSoResponse = null; - try { - //String response = WebServiceUtil.process(url, method, map); - String response = "24026697L软管外丝直接\\C46500\\S3/16*1/4M\\URGJ00124TH2023-03-01KDEALBVGCXKDEALBVGCZ009M2401KG0.01.0KG20X24026697L201200PCNORM201224026697L204000PCNORM24026697L206000PCNORM206024026697L220000PCNORM24026697L201224026697L204024026697L206024026697L220024026697L0000000000077876000000000010S01CHAR300类别美标软管管件X24026697L0000000000077876000000000011S02CHAR300牌号C46500X24026697L0000000000077876000000000012S03CHAR300规格S3/16*1/4MX24026697L0000000000077876000000000014S05CHAR300形状软管外丝直接X24026697L0000000000077876000000000015S06CHAR300标准URGJX24026697L0000000000077876000000000016S07CHAR300图号URGJ00124THX24026697L0000000000077876000000000017S08CHAR300监管性质保税来料X24026697L0000000000077876000000000020S11CHAR300客户牌号(下单时输入)24026697L0000000000077876000000000019S10CHAR300附加说明(下单时输入)24026697L0000000000077876000000000102S13CHAR300铜管内部牌号黄铜管件-黄铜管件24026697LKG1124026697LPC19125024026697L2012101PC1000.024026697S0010PC1000.024026697L2012101PC1000.035000715L9000KG15.1724026697L2060101PC1000.024026697S0010KG15.1724026697L2060101PC1000.035000715L9000KG15.1724026697L2060501PC1.024026697S0010KG15.1724026697L2060501PC1.035000715L9000KG15.17I000共输出1 条物料数据000000"; - JSONObject ret = JSONObject.parseObject(XML.toJSONObject(response).toString()); - System.out.println("getXML返回数据-----------------" + ret.toString()); - JSONObject Envelope = ret.getJSONObject("soap-env:Envelope"); - JSONObject Body = Envelope.getJSONObject("soap-env:Body"); - ZfmGetSoResponse = Body.getJSONObject("n0:ZSd0002SendMatMdResponse"); - } catch (Exception e) { - e.printStackTrace(); - } - - JSONObject TZtsalesorder = ZfmGetSoResponse.getJSONObject("Out"); - JSONObject TMara = TZtsalesorder.getJSONObject("TMara"); - JSONArray rows = TMara.getJSONArray("item"); - - for (int i = 0; i < rows.size(); i++) { - JSONObject row = rows.getJSONObject(i); - String Matnr = row.getString("Matnr").replaceAll("^(0+)", ""); - //查询是否存在该物料 - JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + Matnr + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(mater_jo)) { - mater_jo = new JSONObject(); - mater_jo.put("material_id", IdUtil.getSnowflake(1, 1).nextId()); - mater_jo.put("material_code", Matnr); - mater_jo.put("material_name", row.getString("Maktx")); - mater_jo.put("material_model", row.getString("Mtart")); - String unit_code = row.getString("Meins"); - JSONObject unit_jo = WQLObject.getWQLObject("md_pb_measureunit").query("unit_name = '" + unit_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(unit_jo)) { - throw new BadRequestException("未查询到该物料对应的单位信息:" + unit_code); - } - mater_jo.put("base_unit_id", unit_jo.getString("measure_unit_id")); - JSONObject class_jo = WQLObject.getWQLObject("md_pb_classstandard").query("class_code = '" + row.getString("Mtart") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(class_jo)) { - throw new BadRequestException("未查询到该物料对应的基础类别信息:" + row.getString("Mtart")); - } - mater_jo.put("material_type_id", class_jo.getString("class_id")); - mater_jo.put("create_id", SecurityUtils.getCurrentUserId()); - mater_jo.put("create_name", SecurityUtils.getCurrentNickName()); - mater_jo.put("create_time", DateUtil.now()); - mater_jo.put("update_optid", SecurityUtils.getCurrentUserId()); - mater_jo.put("update_optname", SecurityUtils.getCurrentNickName()); - mater_jo.put("update_time", DateUtil.now()); - mater_jo.put("is_used_time", DateUtil.now()); - mater_jo.put("is_used", "1"); - mater_jo.put("is_delete", "0"); - WQLObject.getWQLObject("md_me_materialbase").insert(mater_jo); - } else { - mater_jo.put("material_code", Matnr); - mater_jo.put("material_name", row.getString("Maktx")); - mater_jo.put("material_model", row.getString("Mtart")); - String unit_code = row.getString("Meins"); - JSONObject unit_jo = WQLObject.getWQLObject("md_pb_measureunit").query("unit_name = '" + unit_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(unit_jo)) { - throw new BadRequestException("未查询到该物料对应的单位信息:" + unit_code); - } - mater_jo.put("base_unit_id", unit_jo.getString("measure_unit_id")); - JSONObject class_jo = WQLObject.getWQLObject("md_pb_classstandard").query("class_code = '" + row.getString("Mtart") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(class_jo)) { - throw new BadRequestException("未查询到该物料对应的基础类别信息:" + row.getString("Mtart")); - } - mater_jo.put("material_type_id", class_jo.getString("class_id")); - mater_jo.put("create_id", SecurityUtils.getCurrentUserId()); - mater_jo.put("create_name", SecurityUtils.getCurrentNickName()); - mater_jo.put("create_time", DateUtil.now()); - mater_jo.put("update_optid", SecurityUtils.getCurrentUserId()); - mater_jo.put("update_optname", SecurityUtils.getCurrentNickName()); - mater_jo.put("update_time", DateUtil.now()); - mater_jo.put("is_used_time", DateUtil.now()); - mater_jo.put("is_used", "1"); - mater_jo.put("is_delete", "0"); - WQLObject.getWQLObject("md_me_materialbase").update(mater_jo); - } - } - result.put("message", "导入成功!一共导入:" + rows.size() + "条数据!"); - return new JSONObject(); - } - - @Override - public JSONArray getProductSeries(String parent_class_id) { - WQLObject wo = WQLObject.getWQLObject("MD_PB_ClassStandard"); - JSONArray parentArray = wo.query("is_delete = '0' and parent_class_id = '" + parent_class_id + "'").getResultJSONArray(0); - JSONArray newParentArray = new JSONArray(); - for (int i = 0; i < parentArray.size(); i++) { - JSONObject parentMap = parentArray.getJSONObject(i); - JSONObject newParentMap = new JSONObject(); - JSONArray children = this.getProductSeries(parentMap.getString("class_id")); - newParentMap.put("children", children); - newParentMap.put("label", parentMap.getString("class_name")); - newParentMap.put("id", parentMap.getString("class_id")); - newParentArray.add(newParentMap); - } - return newParentArray; - } + @Override + public JSONArray getProductSeries(String parent_class_id) { + WQLObject wo = WQLObject.getWQLObject("MD_PB_ClassStandard"); + JSONArray parentArray = wo.query("is_delete = '0' and parent_class_id = '" + parent_class_id + "'").getResultJSONArray(0); + JSONArray newParentArray = new JSONArray(); + for(int i = 0; i < parentArray.size(); i++) { + JSONObject parentMap = parentArray.getJSONObject(i); + JSONObject newParentMap = new JSONObject(); + JSONArray children = this.getProductSeries(parentMap.getString("class_id")); + newParentMap.put("children", children); + newParentMap.put("label", parentMap.getString("class_name")); + newParentMap.put("id", parentMap.getString("class_id")); + newParentArray.add(newParentMap); + } + return newParentArray; + } + public void updateRedis() { + JSONArray materialJsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "5").process().getResultJSONArray(0); + List finalMaterialList = materialJsonArray.toJavaList(MaterialDto.class); + redisUtils.set("materialList", finalMaterialList); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java index e0f7d740..99b111ad 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java @@ -70,27 +70,25 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ return getMaterialDto(materialList, param); } //2.查reids - // materialList = redisUtils.get("materialList", MaterialDto.class); - // if(null != materialList) { - // //设置本地缓存 - // cache.setLocalCache("materialList", materialList); - // return getMaterialDto(materialList, param); - // } + materialList = redisUtils.get("materialList", MaterialDto.class); + if(null != materialList) { + //设置本地缓存 + cache.setLocalCache("materialList", materialList); + return getMaterialDto(materialList, param); + } //3.查db JSONArray materialJsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "5").process().getResultJSONArray(0); materialList = materialJsonArray.toJavaList(MaterialDto.class); //缓存到redis List finalMaterialList1 = materialList; - CompletableFuture f1 = CompletableFuture.runAsync(() -> redisUtils.set("materialList", finalMaterialList1, 3600, TimeUnit.SECONDS), pool); + CompletableFuture f1 = CompletableFuture.runAsync(() -> redisUtils.set("materialList", finalMaterialList1), pool); //缓存到本地 List finalMaterialList = materialList; CompletableFuture f2 = CompletableFuture.runAsync(() -> cache.setLocalCache("materialList", finalMaterialList), pool); f1.exceptionally((e) -> { - log.error("物料信息缓存redis失败: {}", e.getMessage(), e); throw new BadRequestException("物料信息缓存redis失败"); }); f2.exceptionally((e) -> { - log.error("物料信息缓存本地失败: {}", e.getMessage(), e); throw new BadRequestException("物料信息缓存本地失败"); }); return materialList;