From ae1446e7b3f4fd110ce370aa95a9ff24895698ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B1=9F=E7=8E=AE?= Date: Thu, 20 Apr 2023 10:23:05 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=B7=A5=E5=8D=95=E6=93=8D=E4=BD=9C=20de?= =?UTF-8?q?l=20loki?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/modules/loki/rest/LokiController.java | 40 ------ .../nl/modules/loki/service/LokiService.java | 25 ---- .../loki/service/impl/LokiServiceImpl.java | 114 ------------------ .../impl/MaterialDetailServiceImpl.java | 2 +- .../service/impl/MaterialbaseServiceImpl.java | 9 +- .../nl/wms/basedata/wql/QMD_ME_MATERIAL.wql | 2 +- .../wms/ext/acs/rest/AcsToWmsController.java | 2 +- .../wms/ext/acs/service/AcsToWmsService.java | 2 +- .../acs/service/impl/AcsToWmsServiceImpl.java | 14 ++- .../pdm/service/impl/DeviceServiceImpl.java | 7 +- .../service/impl/WorkorderServiceImpl.java | 63 +++++----- .../src/main/java/org/nl/wms/wms.xls | Bin 266752 -> 267264 bytes .../resources/config/application-prod.yml | 4 - .../src/main/resources/config/application.yml | 2 +- 14 files changed, 59 insertions(+), 227 deletions(-) delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java b/lms/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java deleted file mode 100644 index e498cb6..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.nl.modules.loki.rest; - -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.annotation.RateLimiter; -import org.nl.modules.loki.service.LokiService; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -/** - * @Author: lyd - * @Description: 日志监控 - * @Date: 2022-08-15 - */ -@RestController -@RequiredArgsConstructor -@Api(tags = "日志监控") -@RequestMapping("/api/loki") -@Slf4j -public class LokiController { - - private final LokiService lokiService; - - @GetMapping("/labels/values") - @ApiOperation("获取标签") - public ResponseEntity labelsValues() { - return new ResponseEntity<>(lokiService.getLabelsValues(), HttpStatus.OK); - } - - @PostMapping("/logs") - @ApiOperation("获取日志") - @RateLimiter(value = 1, timeout = 300) // 限流 - public ResponseEntity getLogData(@RequestBody JSONObject json) { - return new ResponseEntity<>(lokiService.getLogData(json), HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java b/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java deleted file mode 100644 index 10101c9..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.nl.modules.loki.service; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; - -/** - * @Author: lyd - * @Description: 服务类 - * @Date: 2022-08-15 - */ -public interface LokiService { - - /** - * 获取日志信息 - * @param json - * @return - */ - JSONObject getLogData(JSONObject json); - - /** - * 获取labels和values树 - * @return - */ - JSONArray getLabelsValues(); -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java deleted file mode 100644 index eab56ac..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java +++ /dev/null @@ -1,114 +0,0 @@ -package org.nl.modules.loki.service.impl; - -import cn.hutool.core.util.CharsetUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import org.nl.modules.loki.service.LokiService; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -/** - * @Author: lyd - * @Description: 实现类 - * @Date: 2022-08-15 - */ -@Service -@RequiredArgsConstructor -public class LokiServiceImpl implements LokiService { - - @Value("${loki.url}") - private String lokiUrl; - - @Value("${loki.systemName}") - private String systemName; - - @Override - public JSONObject getLogData(JSONObject json) { - String logLabel = ""; - String logLabelValue = ""; - Long start = 0L; - Long end = 0L; - String text = ""; - String limit = "100"; - String direction = "backward"; - if (ObjectUtil.isNotEmpty(json.get("logLabel"))) logLabel = json.getString("logLabel"); - if (ObjectUtil.isNotEmpty(json.get("logLabelValue"))) logLabelValue = json.getString("logLabelValue"); - if (ObjectUtil.isNotEmpty(json.get("text"))) text = json.getString("text"); - if (ObjectUtil.isNotEmpty(json.get("start"))) start = json.getLong("start"); - if (ObjectUtil.isNotEmpty(json.get("end"))) end = json.getLong("end"); - if (ObjectUtil.isNotEmpty(json.get("limits"))) limit = json.getString("limits"); - if (ObjectUtil.isNotEmpty(json.get("direction"))) direction = json.getString("direction"); - /** - * 组织参数 - * 纳秒数 - * 1660037391880000000 - * 1641453208415000000 - * http://localhost:3100/loki/api/v1/query_range?query={host="localhost"} |= ``&limit=1500&start=1641453208415000000&end=1660027623419419002 - */ - JSONObject parse = null; - String query = lokiUrl + "/query_range?query={system=\"" + systemName + "\", " + logLabel + "=\"" + logLabelValue + "\"} |= `" + text + "`"; - String result = ""; - if (start==0L) { - result = HttpUtil.get(query + "&limit=" + limit + "&direction=" + direction, CharsetUtil.CHARSET_UTF_8); - } else { - result = HttpUtil.get(query + "&limit=" + limit + "&start=" + start + "&end=" + end + "&direction=" + direction, CharsetUtil.CHARSET_UTF_8); - } - try { - parse = (JSONObject) JSONObject.parse(result); - } catch (Exception e) { -// reslut的值可能为:too many outstanding requests,无法转化成Json - System.out.println("reslut:" + result); -// e.printStackTrace(); - } - return parse; - } - - /** - * 获取labels和values树 - * - * @return - */ - @Override - public JSONArray getLabelsValues() { - /** - * [{ - * label: - * value: - * children:[{ - * label - * value - * }] - * }] - */ - JSONArray result = new JSONArray(); - // 获取所有标签 - String labelString = HttpUtil.get(lokiUrl + "/labels", CharsetUtil.CHARSET_UTF_8); - JSONObject parse = (JSONObject) JSONObject.parse(labelString); - JSONArray labels = parse.getJSONArray("data"); - for (int i=0; i queryAll(Map whereJson, Pageable page) { WQLObject wo = WQLObject.getWQLObject("md_me_material_detail"); - ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "1=1", "update_time desc"); + ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "is_delete = '0'", "update_time desc"); final JSONObject json = rb.pageResult(); return json; } 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 546303c..d90e462 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 @@ -164,8 +164,13 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { @Transactional(rollbackFor = Exception.class) public void deleteAll(Long[] ids) { String ids_str = CommonUtils.idsArrayToInStr(ids); - WQLObject.getWQLObject("md_me_materialbase").delete("material_id IN " + ids_str); - WQLObject.getWQLObject("md_me_material_detail").delete("material_id IN " + ids_str); + JSONObject material_update = new JSONObject(); + material_update.put("is_delete", "1"); + material_update.put("update_optid", SecurityUtils.getCurrentUserId()); + material_update.put("update_optname", SecurityUtils.getCurrentNickName()); + material_update.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("md_me_materialbase").update(material_update, "material_id IN " + ids_str); + WQLObject.getWQLObject("md_me_material_detail").update(material_update, "material_id IN " + ids_str); } @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 34abc0f..fc9468f 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 @@ -48,7 +48,7 @@ FROM md_me_materialbase mb WHERE - 1 = 1 + is_delete = '0' OPTION 输入.search <> "" ( mb.material_code like '%' 输入.search '%' diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 8149ea7..5b596a8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -98,7 +98,7 @@ public class AcsToWmsController { @Log("排产单确认") @ApiOperation("排产单确认") @SaIgnore - public ResponseEntity sureProduceTask(@RequestBody Map whereJson) { + public ResponseEntity sureProduceTask(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(acsToWmsService.sureWorkOrder(whereJson), HttpStatus.OK); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 02a1c5d..21aee0d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -79,7 +79,7 @@ public interface AcsToWmsService { * @param whereJson * @return */ - Map sureWorkOrder(Map whereJson); + Map sureWorkOrder(JSONObject whereJson); /** * 根据木托盘类型获取对应所在的点位 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 711c5e0..ff637f4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -544,12 +544,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { */ @Override @Transactional(rollbackFor = Exception.class) - public Map sureWorkOrder(Map jsonObject) { - String type = (String) jsonObject.get("type"); + public Map sureWorkOrder(JSONObject jsonObject) { + String type = jsonObject.getString("type"); if (StrUtil.isEmpty(type)) { throw new BadRequestException("类型不能为空!"); } - String workorder_code = (String) jsonObject.get("workorder_code"); + String workorder_code = jsonObject.getString("workorder_code"); if (StrUtil.isEmpty(type)) { throw new BadRequestException("工单编码不能为空!"); } @@ -563,11 +563,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (workorder.getIntValue("order_status") < 3) { workorder.put("order_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.value()); workorder.put("realproducestart_date", DateUtil.now()); + TaskUtils.addACSUpdateColum(workorder); workorder_table.update(workorder); } } else if ("2".equals(type)) { // 工单完成 - String qty = (String) jsonObject.get("qty"); + String qty = jsonObject.getString("qty"); if (StrUtil.isBlank(qty)) { throw new BadRequestException("数量不能为空!"); } @@ -575,11 +576,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (workorder.getIntValue("order_status") < 5) { workorder.put("order_status", WorkOrderEnum.ORDER_STATUS_FINISH.value()); workorder.put("real_qty", qty); - String unqualified_qty = (String) jsonObject.get("unqualified_qty"); + String unqualified_qty = jsonObject.getString("unqualified_qty"); if (StrUtil.isNotBlank(unqualified_qty) && !"0".equals(unqualified_qty)) { workorder.put("unqualified_qty", unqualified_qty); } - String qualified_qty = (String) jsonObject.get("qualified_qty"); + String qualified_qty = jsonObject.getString("qualified_qty"); if (StrUtil.isNotBlank(qualified_qty) && !"0".equals(qualified_qty)) { workorder.put("qualified_qty", qualified_qty); } else { @@ -587,6 +588,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } workorder.put("realproduceend_date", DateUtil.now()); + TaskUtils.addACSUpdateColum(workorder); workorder_table.update(workorder); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DeviceServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DeviceServiceImpl.java index 1cd5f90..72ba106 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DeviceServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DeviceServiceImpl.java @@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.CommonUtils; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; @@ -119,10 +120,8 @@ public class DeviceServiceImpl implements DeviceService { @Override @Transactional(rollbackFor = Exception.class) public void deleteAll(Long[] ids) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_device"); - for (Long device_id : ids) { - wo.delete("device_id = '" + device_id + "'"); - } + String s = CommonUtils.idsArrayToInStr(ids); + WQLObject.getWQLObject("pdm_bi_device").delete("device_id IN " + s); } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java index 5e03d77..bfbc454 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java @@ -22,7 +22,9 @@ import org.nl.wms.basedata.eum.VehicleType; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.pdm.service.WorkordeService; import org.nl.wms.pdm.service.dto.WorkorderDto; +import org.nl.wms.sch.manage.Region; import org.nl.wms.sch.manage.WorkOrderEnum; +import org.nl.wms.sch.task.util.TaskUtils; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -31,6 +33,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; +import static cn.hutool.db.sql.SqlExecutor.query; + /** * @author qinx * @description 服务实现 @@ -111,12 +115,14 @@ public class WorkorderServiceImpl implements WorkordeService { work_order.put("planproducestart_date", dto.getPlanproducestart_date()); work_order.put("planproduceend_date", dto.getPlanproduceend_date()); work_order.put("material_id", dto.getMaterial_id()); - String device_code = dto.getDevice_code(); + Long device_id = dto.getDevice_id(); + JSONObject device = WQLObject.getWQLObject("pdm_bi_device").query("device = " + device_id).uniqueResult(0); + String device_region_code = device.getString("region_code"); String vehicle_type = dto.getVehicle_type(); - if (!device_code.startsWith("FJ")) { - if (device_code.startsWith("YJ")) { + if (!Region.FJ.value().equals(device_region_code)) { + if (Region.YZ.value().equals(device_region_code)) { vehicle_type = VehicleType.STEEL_TRAY.value(); - } else if (device_code.startsWith("HL")) { + } else if (Region.HL.value().equals(device_region_code)) { vehicle_type = VehicleType.CUP.value(); } } @@ -404,29 +410,32 @@ public class WorkorderServiceImpl implements WorkordeService { @Override @Transactional(rollbackFor = Exception.class) public void finish(JSONObject param) { - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String now = DateUtil.now(); - JSONObject row = param.getJSONObject("row"); - String workorder_id = row.getString("workorder_id"); - WQLObject wo = WQLObject.getWQLObject("PDM_BD_WORKORDER"); - JSONObject produceorderMap = new JSONObject(); - produceorderMap.put("workorder_id",workorder_id); - produceorderMap.put("order_status","5"); - produceorderMap.put("update_optid", currentUserId); - produceorderMap.put("device_id", null); - produceorderMap.put("update_optname", nickName); - produceorderMap.put("update_time", now); - produceorderMap.put("realproduceend_date", now); - wo.update(produceorderMap); - //wms向acs发送请求 工单强制完成 - // TODO - JSONArray array = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("ext_order_id",workorder_id); - map.put("type","3"); - array.add(map); - wmsToAcsService.orderStatusUpdate(array); + String workorder_id = param.getString("workorder_id"); + WQLObject workorder_table = WQLObject.getWQLObject("pdm_bd_workorder"); + JSONObject workorder = workorder_table.query("workorder_id = " + workorder_id).uniqueResult(0); + + if (workorder.getIntValue("order_status") < 5) { + workorder.put("order_status", WorkOrderEnum.ORDER_STATUS_FINISH.value()); + String qty = param.getString("qty"); + if (StrUtil.isBlank(qty)) { + throw new BadRequestException("数量不能为空!"); + } + workorder.put("real_qty", qty); + String unqualified_qty = param.getString("unqualified_qty"); + if (StrUtil.isNotBlank(unqualified_qty) && !"0".equals(unqualified_qty)) { + workorder.put("unqualified_qty", unqualified_qty); + } + String qualified_qty = param.getString("qualified_qty"); + if (StrUtil.isNotBlank(qualified_qty) && !"0".equals(qualified_qty)) { + workorder.put("qualified_qty", qualified_qty); + } else { + workorder.put("qualified_qty", Integer.parseInt(qty) - workorder.getIntValue("unqualified_qty")); + } + + workorder.put("realproduceend_date", DateUtil.now()); + TaskUtils.addCurrentUpdateColum(workorder); + workorder_table.update(workorder); + } } @Override 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 b18c843dbe2e9d63086aa6ff5083b88c21f5db4a..c38050f1f10dc1d6a6856ac737735328b50357e7 100644 GIT binary patch delta 13482 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 aDJvspvImEsm(F#q(MS~rT?gqQ`Tqlvn=bnR delta 13551 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 diff --git a/lms/nladmin-system/src/main/resources/config/application-prod.yml b/lms/nladmin-system/src/main/resources/config/application-prod.yml index 3a8b115..11cca72 100644 --- a/lms/nladmin-system/src/main/resources/config/application-prod.yml +++ b/lms/nladmin-system/src/main/resources/config/application-prod.yml @@ -158,7 +158,3 @@ sa-token: jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq # token 前缀 token-prefix: Bearer - -loki: - url: http://192.168.4.220:3100/loki/api/v1 - systemName: lms diff --git a/lms/nladmin-system/src/main/resources/config/application.yml b/lms/nladmin-system/src/main/resources/config/application.yml index 6f01423..942ceff 100644 --- a/lms/nladmin-system/src/main/resources/config/application.yml +++ b/lms/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: dev + active: prod jackson: time-zone: GMT+8 data: