diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/rest/LmsToBigScreenController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/rest/LmsToBigScreenController.java index 6c93e1f2e..45266d01b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/rest/LmsToBigScreenController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/rest/LmsToBigScreenController.java @@ -29,4 +29,11 @@ public class LmsToBigScreenController { return new ResponseEntity<>(LmsToBigScreenService.getDeviceInfo(jo), HttpStatus.OK); } + @PostMapping("/getStructInfo") + @Log("数字孪生请求LMS获取设备信息") + @ApiOperation("数字孪生请求LMS获取设备信息") + public ResponseEntity getStructInfo(@RequestBody JSONObject jo) { + return new ResponseEntity<>(LmsToBigScreenService.getStructInfo(jo), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/service/LmsToBigScreenService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/service/LmsToBigScreenService.java index 18b912ea9..85cb78a4e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/service/LmsToBigScreenService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/service/LmsToBigScreenService.java @@ -1,8 +1,11 @@ package org.nl.wms.ext.szls.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public interface LmsToBigScreenService { JSONObject getDeviceInfo(JSONObject jo); + + JSONArray getStructInfo(JSONObject jo); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/service/impl/LmsToBigScreenServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/service/impl/LmsToBigScreenServiceImpl.java index 5b9317d41..380078bfe 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/service/impl/LmsToBigScreenServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/szls/service/impl/LmsToBigScreenServiceImpl.java @@ -1,27 +1,90 @@ package org.nl.wms.ext.szls.service.impl; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.MapOf; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.szls.service.LmsToBigScreenService; +import org.nl.wms.sch.tasks.URLEnum; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import java.math.BigDecimal; + @Service @RequiredArgsConstructor @Slf4j public class LmsToBigScreenServiceImpl implements LmsToBigScreenService { + @Autowired + private final WmsToAcsService wmsToAcsService; @Override public JSONObject getDeviceInfo(JSONObject jo) { + JSONObject json = new JSONObject(); + for (URLEnum url : URLEnum.values()) { + String product_area = url.getProduct_area(); + JSONArray rows = WQLObject.getWQLObject("em_bi_monitordevice").query("send_szls = '1' AND plant_code = '" + product_area + "'").getResultJSONArray(0); + JSONObject device_info = wmsToAcsService.getPointStatus(rows); + json.put(product_area, device_info.getJSONArray("data")); + } + return json; + } - return null; + @Override + public JSONArray getStructInfo(JSONObject jo) { + JSONArray rows = WQLObject.getWQLObject("st_ivt_structattr").query("sect_code = 'ZC01'").getResultJSONArray(0); + JSONArray data = new JSONArray(); + for (int i = 0; i < rows.size(); i++) { + JSONObject row = rows.getJSONObject(i); + JSONObject json = new JSONObject(); + String struct_code = row.getString("struct_code"); + json.put("struct_code", struct_code); + String storagevehicle_code = row.getString("storagevehicle_code"); + if (StrUtil.isNotEmpty(storagevehicle_code)) { + json.put("storagevehicle_code", storagevehicle_code); + String struct_id = row.getString("struct_id"); + JSONArray array = WQL + .getWO("QST_STRUCTATTR") + .addParamMap(MapOf.of("struct_id", struct_id, "flag", "1")) + .process() + .getResultJSONArray(0); + // 计算合计 + JSONObject object = array.getJSONObject(0); + if (ObjectUtil.isNotEmpty(object.getString("net_weight"))) { + BigDecimal container_weight = array.stream().map(info -> ((JSONObject) info).getBigDecimal("net_weight")).reduce(BigDecimal.ZERO, BigDecimal::add); + json.put("container_weight", container_weight); + json.put("product_description", object.getString("product_description")); + json.put("sale_order_name", object.getString("sale_order_name")); + json.put("quanlity_in_box", object.getString("quanlity_in_box")); + json.put("box_weight", object.getString("box_weight")); + JSONArray detail = new JSONArray(); + for (int j = 0; i < array.size(); i++) { + JSONObject dtl = array.getJSONObject(j); + String container_name = dtl.getString("container_name"); + String net_weight = dtl.getString("net_weight"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("container_name", container_name); + jsonObject.put("net_weight", net_weight); + detail.add(jsonObject); + } + json.put("detail", detail); + } + data.add(json); + } + } + return data; } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/InServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/InServiceImpl.java index 7e3ad16b5..118504b29 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/InServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/InServiceImpl.java @@ -129,6 +129,11 @@ public class InServiceImpl implements InService { throw new BadRequestException("起点不能为空!"); } + JSONObject task1 = WQLObject.getWQLObject("SCH_BASE_Task").query("(point_code2 = '" + point_code + "' OR point_code1 = '" + point_code + "' ) AND task_status < '07' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(task1)) { + throw new BadRequestException("点位:" + point_code + "存在未完成的任务!"); + } + //如果查询到给ACS下发一个输送线任务 JSONObject form = new JSONObject(); form.put("point_code1", point_code); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java index 7b41fd70d..575e0baab 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java @@ -15,6 +15,7 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.content.HttpContext; import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.pda.st.service.CoolInService; import org.nl.wms.pda.task.service.PdaTaskService; @@ -41,6 +42,13 @@ public class PdaTaskServiceImpl implements PdaTaskService { JSONObject map = new JSONObject(); map.put("flag", "1"); if (ObjectUtil.isNotEmpty(search)) map.put("search", "%" + search + "%"); + //获取人员对应的区域 + UserAreaServiceImpl userAreaService = new UserAreaServiceImpl(); + String in_area_id = userAreaService.getInArea(); + if (ObjectUtil.isNotEmpty(in_area_id)) { + map.put("in_area_id", in_area_id); + } + JSONArray resultJSONArray = WQL.getWO("PDA_TASK").addParamMap(map).process().getResultJSONArray(0); JSONObject jo = new JSONObject(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/task/wql/PDA_TASK.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/task/wql/PDA_TASK.wql index a2c416562..952b0307d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/task/wql/PDA_TASK.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/task/wql/PDA_TASK.wql @@ -15,6 +15,7 @@ ################################################# 输入.flag TYPEAS s_string 输入.search TYPEAS s_string + 输入.in_area_id TYPEAS f_string [临时表] @@ -42,45 +43,55 @@ IF 输入.flag = "1" QUERY SELECT - task_code, - vehicle_code, - point_code1, - point_code2, - point_code3, - point_code4, + * + FROM ( - CASE task_status - WHEN '01' THEN '生成' - WHEN '02' THEN '确定起点' - WHEN '03' THEN '确定终点' - WHEN '04' THEN '起点和终点确定' - WHEN '05' THEN '下发' - WHEN '06' THEN '执行中' - END - ) AS task_status, - class.class_name AS task_type, - car_no, - task.create_time, - vehicle_code2, - material_code - FROM - SCH_BASE_Task task - LEFT JOIN md_pb_classstandard class ON class.class_code = task.task_type - WHERE - task.is_delete = '0' - AND task_status <> '07' - - OPTION 输入.search <> "" - (vehicle_code like 输入.search or - vehicle_code2 like 输入.search or - point_code1 like 输入.search or - point_code2 like 输入.search or - point_code3 like 输入.search or - point_code4 like 输入.search or - task_code like 输入.search or - car_no like 输入.search) - ENDOPTION + SELECT + task_code, + vehicle_code, + point_code1, + point_code2, + point_code3, + point_code4, + ( + CASE task_status + WHEN '01' THEN '生成' + WHEN '02' THEN '确定起点' + WHEN '03' THEN '确定终点' + WHEN '04' THEN '起点和终点确定' + WHEN '05' THEN '下发' + WHEN '06' THEN '执行中' + END + ) AS task_status, + class.class_name AS task_type, + car_no, + task.create_time, + vehicle_code2, + material_code, + case when task.task_type like '0105%' then 'LK' ELSE task.product_area end AS final_product_area + FROM + SCH_BASE_Task task + LEFT JOIN md_pb_classstandard class ON class.class_code = task.task_type + WHERE + task.is_delete = '0' + AND task_status <> '07' + OPTION 输入.search <> "" + (vehicle_code like 输入.search or + vehicle_code2 like 输入.search or + point_code1 like 输入.search or + point_code2 like 输入.search or + point_code3 like 输入.search or + point_code4 like 输入.search or + task_code like 输入.search or + car_no like 输入.search) + ENDOPTION + ) a + WHERE + 1=1 + OPTION 输入.in_area_id <> "" + a.final_product_area IN 输入.in_area_id + ENDOPTION ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryConRem.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryConRem.java new file mode 100644 index 000000000..af99d033f --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryConRem.java @@ -0,0 +1,91 @@ +package org.nl.wms.sch.manage; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@RequiredArgsConstructor +public class AutoQueryConRem { + public void run() { + //查询立库贴标、捆扎机剩余材料是否低于下限 + JSONArray rows = new JSONArray(); + //捆扎米数 + String lash_num_up = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("lash_num_up").getValue(); + //捆扎下限 + String lash_num_down = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("lash_num_down").getValue(); + if (Double.parseDouble(lash_num_down) >= Double.parseDouble(lash_num_up)){ + JSONObject jo = new JSONObject(); + jo.put("device_code","NKZ01"); + jo.put("device_name","一楼入库北区捆扎位1"); + jo.put("param_name","lash_num_up"); + rows.add(jo); + } + //标签纸数量 + String label_num_up = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("label_num_up").getValue(); + //标签纸下限 + String label_num_down = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("lash_num_down").getValue(); + if (Double.parseDouble(label_num_down) >= Double.parseDouble(label_num_up)){ + JSONObject jo = new JSONObject(); + jo.put("device_code","NTB01"); + jo.put("device_name","一楼入库北区贴标位1"); + jo.put("param_name","label_num_up"); + rows.add(jo); + } + this.sendInfo(rows); + } + + void sendInfo(JSONArray send_rows) { + WQLObject wo = WQLObject.getWQLObject("em_bi_devicestatus"); + for (int i = 0; i < send_rows.size(); i++) { + JSONObject row = send_rows.getJSONObject(i); + String device_code = row.getString("device_code"); + JSONObject device_jo = wo.query("device_code = '" + device_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(device_jo) || ObjectUtil.isEmpty(device_jo.getString("upload_user"))) { + return; + } + String upload_user = device_jo.getString("upload_user"); + String[] split = upload_user.split(","); + JSONArray UserList = new JSONArray(); + if (split.length > 0) { + for (String s : split) { + JSONObject jo = new JSONObject(); + jo.put("User", s); + UserList.add(jo); + } + } else { + return; + } + String Message = row.getString("device_name")+"消耗材料已低于下限,请及时更换。并将系统对应的:"+row.getString("param_name"+"进行维护!"); + JSONObject jo = new JSONObject(); + jo.put("SendType", "L"); + jo.put("Title", "捆扎、贴标预警信息"); + jo.put("WarnType", "string"); + jo.put("MessageType", "P"); + jo.put("UserList", UserList); + jo.put("Message", Message); + + String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_URL").getValue(); + String api = "/FeiShuNoticesWebApi/CommunalApi"; + url = url + api; + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(jo)) + .execute().body(); + log.info("飞书输入参数为" + jo); + log.info("飞书输出参数为:-------------------" + resultMsg); + } catch (Exception e) { + log.info(e.getMessage()); + } + } + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java index 73a5e72b6..6256d091b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java @@ -358,6 +358,7 @@ public class CutConveyorTask extends AbstractAcsTask { throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!"); }*/ } + //查询该载具号是否存在未完成的任务 JSONObject json = new JSONObject(); json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); diff --git a/lms/nladmin-ui/src/views/wms/sendout/outone/index.vue b/lms/nladmin-ui/src/views/wms/sendout/outone/index.vue index db617289a..a5a2ee82d 100644 --- a/lms/nladmin-ui/src/views/wms/sendout/outone/index.vue +++ b/lms/nladmin-ui/src/views/wms/sendout/outone/index.vue @@ -85,7 +85,7 @@ @@ -122,6 +122,9 @@ export default { point_code: '', vehicle_code: '' }, + permission: { + confirm: ['admin', 'sendout:unlock'] + }, allStructMsg: [], msgTop: '200px', msgLeft: '200px',