diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java index 68ca91154..ba3609b60 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java @@ -16,6 +16,7 @@ public class CommonFinalParam { private final String BARRE = "-"; private final String POINT = "."; + public static final String ZERO = "0"; public static final String ONE = "1"; public static final String TWO = "2"; @@ -51,6 +52,20 @@ public class CommonFinalParam { public static final int ACTION_TWO = 2; public static final int ACTION_THREE = 3; + /** + * 申请任务type类型 + */ + public static final String TYPE_ONE = "1"; + public static final String TYPE_TWO = "2"; + public static final String TYPE_THREE = "3"; + public static final String TYPE_FOUR = "4"; + public static final String TYPE_FIVE = "5"; + public static final String TYPE_SIX = "6"; + public static final String TYPE_SEVEN = "7"; + + + + /** * 切割点符号 */ diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/rgv/RgvDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/rgv/RgvDeviceDriver.java index dee4f387f..d2804ec71 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/rgv/RgvDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/rgv/RgvDeviceDriver.java @@ -235,18 +235,18 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr List toInstructions; //拔轴完成,RGV工位上有货申请行架任务 - - if (mode == 2 && move == 1 && !requireSucess) { + if (mode == 4 && move == 1 && !requireSucess) { applyTask(); } else { if (mode == 2) { //if (!requireSucess) { - String remark = "";; + String remark = ""; + ; if (mode != 2) { remark = remark + "universal_remark2"; } if (move != 0) { - remark = remark + "universal_remark3"; + remark = remark + "universal_remark3"; } if (task != 0) { remark = remark + LangProcess.msg("universal_remark4"); @@ -286,17 +286,19 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr public synchronized void applyTask() { ApplyManipulatorActionRequest applyManipulatorActionRequest = new ApplyManipulatorActionRequest(); ApplyManipulatorActionResponse applyManipulatorActionResponse; + String direction = (String) this.getDevice().getExtraValue().get("direction"); applyManipulatorActionRequest.setDevice_code(device_code); - applyManipulatorActionRequest.setLocation("1"); + applyManipulatorActionRequest.setDirection(direction);//rgv申请位置 + applyManipulatorActionRequest.setQzz_no(String.valueOf(barcode));//气涨轴编码 applyManipulatorActionResponse = acsToWmsService.applyManipulatorActionRequest(applyManipulatorActionRequest); Map map = new LinkedHashMap<>(); if (applyManipulatorActionResponse.getCode() == 200) { - map.put("to_target",applyManipulatorActionResponse.getNext_point()); - if (StrUtil.isEmpty(left)){ - map.put("to_sub_volume_no", right); - } else { - map.put("to_sub_volume_no", left); - } + Map data = applyManipulatorActionResponse.getData(); + String point_code2 = data.get("point_code2");//目标站点 + String material_code = data.get("material_code");//子卷号 + map.put("to_target", point_code2); + map.put("to_sub_volume_no", material_code); + map.put("to_command", "1"); this.writing(map); logServer.deviceExecuteLog(this.device_code, "", "", "申请行架任务,返回参数:" + applyManipulatorActionResponse); message = "申请行架任务成功"; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDeviceDriver.java index 194c433ee..51b2e20cf 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDeviceDriver.java @@ -48,6 +48,11 @@ import org.springframework.beans.factory.annotation.Autowired; import java.util.*; +/** + * @author: TuQiang + * @Created: 2024/3/14 + */ + /** * 表处下料-行架机械手 */ @@ -74,30 +79,49 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); @Autowired LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - //工作模式 + /** + * 工作模式 + */ int mode = 0; int last_mode = 0; - //光电信号 + /** + * 光电信号 + */ int move = 0; int last_move = 0; - //动作信号 + + /** + * 动作信号 + */ int action = 0; int last_action = 0; - //行走列 + + /** + * 行走列 + */ int walk_y = 0; int last_walk_y = 0; - //报警信号 + + /** + * 报警信号 + */ int error = 0; int last_error = 0; - //任务号 + /** + * 任务号 + */ int task = 0; int last_task = 0; - //重量 + /** + * 重量 + */ int weight = 0; int last_weight = 0; - //条码 + /** + * 条码 + */ int barcode = 0; int last_barcode = 0; @@ -119,26 +143,29 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem int hasGoods = 0; String message = null; Boolean iserror = false; - private Date instruction_update_time = new Date(); - private int instruction_update_time_out = 1000; - Integer heartbeat_tag; + private Date instructionUpdateTime = new Date(); + private int instructionUpdateTimeOut = 1000; private Date instruction_require_time = new Date(); - private int instruction_require_time_out = 3000; - //行架机械手申请任务成功标识 + /** + * 行架机械手申请任务成功标识 + */ boolean requireSucess = false; private int instruction_finished_time_out; int branchProtocol = 0; - private String error_type = "hxhj_error_type"; - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + /** + * 暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + */ int flag; String device_code; - //当前指令 + /** + * 当前指令 + */ Instruction inst = null; String notCreateTaskMessage = ""; @@ -177,36 +204,52 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem if (mode != last_mode) { requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(device_code) + .content("信号mode:" + last_mode + "->" + mode) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(device_code) + .content("信号move:" + last_move + "->" + move) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(device_code) + .content("信号action:" + last_action + "->" + action) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(device_code) + .content("信号error:" + last_error + "->" + error) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - // 更新指令状态 + /** + * 更新指令状态 + */ if (mode == 3 && task > 0) { Date date = new Date(); - if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + if (date.getTime() - this.instructionUpdateTime.getTime() < (long) this.instructionUpdateTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionUpdateTimeOut); } else { - this.instruction_update_time = date; - //更改指令状态 + this.instructionUpdateTime = date; + /** + * 更改指令状态 + */ if (task > 0) { Instruction inst = checkInst(); if (inst != null) { - if (StrUtil.equals(inst.getInstruction_status(), "0")) { + if (StrUtil.equals(inst.getInstruction_status(), CommonFinalParam.ZERO)) { inst.setInstruction_status(CommonFinalParam.ONE); inst.setExecute_device_code(this.device_code); instructionService.update(inst); @@ -216,12 +259,14 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem } } - //反馈重量 + /** + * 反馈重量 + */ if (mode == 3 && action == 5 && move == 1 && task > 0) { Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); if (ObjectUtil.isNotEmpty(inst2)) { - String task_code = inst2.getTask_code(); - TaskDto dto = taskserver.findByCode(task_code); + String taskCode = inst2.getTask_code(); + TaskDto dto = taskserver.findByCode(taskCode); JSONObject jo = new JSONObject(); jo.put("task_id", dto.getTask_id()); jo.put("task_code", dto.getTask_code()); @@ -274,7 +319,9 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem } } - //任务完成 + /** + * 任务完成 + */ if (mode == 3 && action == 6 && move == 0 && task > 0) { Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); if (inst2 != null) { @@ -282,7 +329,7 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem try { requireSucess = true; message = "universal_message7"; - finish_instruction(inst2); + finishInstruction(inst2); Map map = new LinkedHashMap<>(); map.put("to_command", "6"); this.writing(map); @@ -320,7 +367,9 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem Instruction instruction = null; List toInstructions; - //行架机械手申请任务 + /** + * 行架机械手申请任务 + */ if (mode == 2 && move == 0 && task == 0 && !requireSucess) { boolean res = applyTask(); if (res) { @@ -370,10 +419,7 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem /** - * // * 申请任务 - * // * - * // * @param - * // + * 申请任务 */ public synchronized boolean applyTask() { Date date = new Date(); @@ -395,26 +441,26 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem taskDtos = this.sortTask(taskDtos); TaskDto taskDto = taskDtos.get(0); Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code()); - String start_device_code = instruction.getStart_device_code(); - String next_device_code = instruction.getNext_device_code(); + String startCode = instruction.getStart_device_code(); + String nextCode = instruction.getNext_device_code(); instruction.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); instruction.setUpdate_time(DateUtil.now()); instructionService.update(instruction); - Device startDevice = deviceAppService.findDeviceByCode(start_device_code); - Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); + Device startDevice = deviceAppService.findDeviceByCode(startCode); + Device nextDevice = deviceAppService.findDeviceByCode(nextCode); if (ObjectUtil.isEmpty(startDevice.getExtraValue().get("address"))) { throw new BadRequestException(LangProcess.msg("device_checkAdd", startDevice.getDevice_code())); } if (ObjectUtil.isEmpty(nextDevice.getExtraValue().get("address"))) { throw new BadRequestException(LangProcess.msg("device_checkAdd", nextDevice.getDevice_code())); } - String start_addr = startDevice.getExtraValue().get("address").toString(); - String next_addr = nextDevice.getExtraValue().get("address").toString(); + String startAddr = startDevice.getExtraValue().get("address").toString(); + String nextAddr = nextDevice.getExtraValue().get("address").toString(); Map map = new LinkedHashMap<>(); map.put("to_command", CommonFinalParam.ONE); - map.put("to_onset", start_addr); + map.put("to_onset", startAddr); map.put("to_task", instruction.getInstruction_code()); - map.put("to_target", next_addr); + map.put("to_target", nextAddr); this.writing(map); this.setRequireSucess(true); return true; @@ -431,35 +477,35 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem } } if (!ObjectUtil.isEmpty(task)) { - String taskid = task.getTask_id(); - String taskcode = task.getTask_code(); - String vehiclecode = task.getVehicle_code(); + String taskId = task.getTask_id(); + String taskCode = task.getTask_code(); + String vehicleCode = task.getVehicle_code(); String priority = task.getPriority(); - String start_point_code = task.getStart_point_code(); - String start_device_code = task.getStart_device_code(); - String route_plan_code = task.getRoute_plan_code(); - String next_point_code = task.getNext_point_code(); - String next_device_code = task.getNext_device_code(); + String startPointCode = task.getStart_point_code(); + String startDeviceCode = task.getStart_device_code(); + String routePlanCode = task.getRoute_plan_code(); + String nextPointCode = task.getNext_point_code(); + String nextDeviceCode = task.getNext_device_code(); Instruction instdto = new Instruction(); instdto.setInstruction_id(IdUtil.simpleUUID()); - instdto.setRoute_plan_code(route_plan_code); + instdto.setRoute_plan_code(routePlanCode); instdto.setRemark(task.getRemark()); instdto.setMaterial(task.getMaterial()); instdto.setQuantity(task.getQuantity()); - instdto.setTask_id(taskid); - instdto.setTask_code(taskcode); - instdto.setVehicle_code(vehiclecode); + instdto.setTask_id(taskId); + instdto.setTask_code(taskCode); + instdto.setVehicle_code(vehicleCode); String now = DateUtil.now(); instdto.setCreate_time(now); instdto.setCreate_by(SecurityUtils.getCurrentNickName()); - instdto.setStart_device_code(start_device_code); - instdto.setNext_device_code(next_device_code); - instdto.setStart_point_code(start_point_code); - instdto.setNext_point_code(next_point_code); + instdto.setStart_device_code(startDeviceCode); + instdto.setNext_device_code(nextDeviceCode); + instdto.setStart_point_code(startPointCode); + instdto.setNext_point_code(nextPointCode); instdto.setPriority(priority); instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); - instdto.setExecute_device_code(start_point_code); + instdto.setExecute_device_code(startPointCode); try { instructionService.create(instdto); @@ -498,13 +544,13 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem throw new BadRequestException(LangProcess.msg("device_checkAdd", nextDevice.getDevice_code())); } - String start_addr = startDevice.getExtraValue().get("address").toString(); - String next_addr = nextDevice.getExtraValue().get("address").toString(); + String startAddr = startDevice.getExtraValue().get("address").toString(); + String nextAddr = nextDevice.getExtraValue().get("address").toString(); Map map = new LinkedHashMap<>(); map.put("to_command", CommonFinalParam.ONE); - map.put("to_onset", start_addr); + map.put("to_onset", startAddr); map.put("to_task", instdto.getInstruction_code()); - map.put("to_target", next_addr); + map.put("to_target", nextAddr); this.writing(map); this.setRequireSucess(true); notCreateInstMessage = ""; @@ -517,7 +563,7 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem } - public synchronized boolean finish_instruction(Instruction inst) throws Exception { + public synchronized boolean finishInstruction(Instruction inst) throws Exception { instructionService.finish(inst); return true; } @@ -553,6 +599,11 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem } } + /** + * 任务排序 + * @param taskDtos + * @return + */ public List sortTask(List taskDtos) { Collections.sort(taskDtos, new Comparator() { @Override @@ -570,6 +621,10 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem return taskDtos; } + /** + * 获取监控设备信息 + * @return + */ @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); @@ -631,9 +686,9 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem @Override public void setDeviceStatus(JSONObject data) { String requestSucess = data.getString("requireSucess"); - if (StrUtil.equals(requestSucess, "0")) { + if (StrUtil.equals(requestSucess, CommonFinalParam.ZERO)) { this.requireSucess = false; - } else if (StrUtil.equals(requestSucess, "1")) { + } else if (StrUtil.equals(requestSucess, CommonFinalParam.ONE)) { this.requireSucess = true; } } @@ -644,8 +699,6 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem jo.put("device_code", this.getDevice().getDevice_code()); jo.put("device_name", this.getDevice().getDevice_name()); jo.put("fault_code", String.valueOf(error)); - jo.put("fault_info", ErrorUtil.getDictDetail(error_type, String.valueOf(this.getError()))); - jo.put("fault_type", error_type); return jo; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/BlankingButtonDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/BlankingButtonDriver.java index f43ee62c9..9836d3f23 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/BlankingButtonDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/BlankingButtonDriver.java @@ -30,6 +30,7 @@ import org.nl.acs.task.service.TaskService; import org.nl.config.SpringContextHolder; import org.nl.config.language.LangProcess; import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; @@ -37,6 +38,10 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * @author : TuQiang + * @date : 2024/3/14 + */ /** * 下料按钮 @@ -75,12 +80,9 @@ public class BlankingButtonDriver extends AbstractOpcDeviceDriver implements Dev DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - private String error_type = "hx_error_type"; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; + private Date instructionRequireTime = new Date(); + private int instructionRequireTimeOut = 3000; public int heartbeat = 0; public int mode = 0; @@ -88,18 +90,18 @@ public class BlankingButtonDriver extends AbstractOpcDeviceDriver implements Dev public int action = 0; public int error = 0; - public int last_heartbeat = 0; - public int last_mode = 0; - public int last_move = 0; - public int last_action = 0; - public int last_error = 0; + public int lastHeartbeat = 0; + public int lastMode = 0; + public int lastMove = 0; + public int lastAction = 0; + public int lastError = 0; Boolean isonline = true; Boolean iserror = false; - String device_code; + String deviceCode; String message = null; @@ -115,29 +117,41 @@ public class BlankingButtonDriver extends AbstractOpcDeviceDriver implements Dev @Override public void execute() { - device_code = this.getDeviceCode(); + deviceCode = this.getDeviceCode(); heartbeat = this.itemProtocol.getItem_heartbeat(); mode = this.itemProtocol.getItem_mode(); move = this.itemProtocol.getItem_move(); action = this.itemProtocol.getItem_action(); error = this.itemProtocol.getItem_error(); - if (mode != last_mode) { + if (mode != lastMode) { requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号mode:" + lastMode + "->" + mode) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + if (move != lastMove) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号move:" + lastMove + "->" + move) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); + if (action != lastAction) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号action:" + lastAction + "->" + action) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + if (error != lastError) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号error:" + lastError + "->" + error) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } @@ -192,10 +206,10 @@ public class BlankingButtonDriver extends AbstractOpcDeviceDriver implements Dev } - last_mode = mode; - last_move = move; - last_action = action; - last_error = error; + lastMode = mode; + lastMove = move; + lastAction = action; + lastError = error; } @@ -204,22 +218,22 @@ public class BlankingButtonDriver extends AbstractOpcDeviceDriver implements Dev */ public synchronized void applyTakeFullVolume() { Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() - < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + if (date.getTime() - this.instructionRequireTime.getTime() + < (long) this.instructionRequireTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionRequireTimeOut); return; } else { - this.instruction_require_time = date; + this.instructionRequireTime = date; if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { message = "two_message5"; BlankingButtonRequest blankingButtonRequest = new BlankingButtonRequest(); - blankingButtonRequest.setDevice_code(device_code); - blankingButtonRequest.setType("1"); + blankingButtonRequest.setDevice_code(deviceCode); + blankingButtonRequest.setType(CommonFinalParam.TYPE_ONE); BlankingButtonResponse response = acsToWmsService.applyBlankButtonTask(blankingButtonRequest); if (ObjectUtil.isEmpty(response)) { message = "two_message6"; } else { - if (response.getCode()== 200) { + if (response.getCode()== CommonFinalParam.STATUS_OPEN) { this.writing("to_command","9"); message = "two_message7"; requireSucess = true; @@ -238,22 +252,22 @@ public class BlankingButtonDriver extends AbstractOpcDeviceDriver implements Dev */ public synchronized void cancelTask() { Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() - < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + if (date.getTime() - this.instructionRequireTime.getTime() + < (long) this.instructionRequireTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionRequireTimeOut); return; } else { - this.instruction_require_time = date; + this.instructionRequireTime = date; if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { message = "two_message9"; BlankingButtonRequest blankingButtonRequest = new BlankingButtonRequest(); - blankingButtonRequest.setDevice_code(device_code); - blankingButtonRequest.setType("2"); + blankingButtonRequest.setDevice_code(deviceCode); + blankingButtonRequest.setType(CommonFinalParam.TYPE_SIX); BlankingButtonResponse response = acsToWmsService.applyBlankButtonTask(blankingButtonRequest); if (ObjectUtil.isEmpty(response)) { message = "two_message10"; } else { - if (response.getCode()== 200) { + if (response.getCode()== CommonFinalParam.STATUS_OPEN) { this.writing("to_command","10"); message = "two_message11"; requireSucess = true; @@ -272,22 +286,22 @@ public class BlankingButtonDriver extends AbstractOpcDeviceDriver implements Dev */ public synchronized void applyTakeEmptyShaft() { Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() - < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + if (date.getTime() - this.instructionRequireTime.getTime() + < (long) this.instructionRequireTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionRequireTimeOut); return; } else { - this.instruction_require_time = date; + this.instructionRequireTime = date; if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { message = "two_message13"; BlankingButtonRequest blankingButtonRequest = new BlankingButtonRequest(); - blankingButtonRequest.setDevice_code(device_code); - blankingButtonRequest.setType("2"); + blankingButtonRequest.setDevice_code(deviceCode); + blankingButtonRequest.setType(CommonFinalParam.TYPE_TWO); BlankingButtonResponse response = acsToWmsService.applyBlankButtonTask(blankingButtonRequest); if (ObjectUtil.isEmpty(response)) { message = "two_message14"; } else { - if (response.getCode()== 200) { + if (response.getCode()== CommonFinalParam.STATUS_OPEN) { this.writing("to_command","10"); message = "two_message15"; requireSucess = true; @@ -310,7 +324,7 @@ public class BlankingButtonDriver extends AbstractOpcDeviceDriver implements Dev itemMap.put(to_param, Integer.parseInt(value)); this.control(itemMap); - logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); + logServer.deviceExecuteLog(deviceCode, "", "", "下发电气信号设备号:" + deviceCode + ",下发电气:" + to_param + ",下发电气值:" + value); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDriver.java index 904e44bee..c7820ea7e 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDriver.java @@ -30,6 +30,8 @@ import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.config.SpringContextHolder; import org.nl.config.language.LangProcess; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; @@ -69,12 +71,11 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - private String error_type = "hx_error_type"; + @Autowired + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; + private Date instructionRequireTime = new Date(); + private int instructionRequireTimeOut = 3000; public int heartbeat = 0; public int mode = 0; @@ -82,18 +83,18 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem public int action = 0; public int error = 0; - public int last_heartbeat = 0; - public int last_mode = 0; - public int last_move = 0; - public int last_action = 0; - public int last_error = 0; + public int lastHeartbeat = 0; + public int lastMode = 0; + public int lastMove = 0; + public int lastAction = 0; + public int lastError = 0; Boolean isonline = true; Boolean iserror = false; - String device_code; + String deviceCode; String message = null; @@ -109,7 +110,7 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem @Override public void execute() { - device_code = this.getDeviceCode(); + deviceCode = this.getDeviceCode(); heartbeat = this.itemProtocol.getItem_heartbeat(); mode = this.itemProtocol.getItem_mode(); move = this.itemProtocol.getItem_move(); @@ -117,22 +118,34 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem error = this.itemProtocol.getItem_error(); iserror = this.itemProtocol.isError; - if (mode != last_mode) { + if (mode != lastMode) { requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号mode:" + lastMode + "->" + mode) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + if (move != lastMove) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号move:" + lastMove + "->" + move) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); + if (action != lastAction) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号action:" + lastAction + "->" + action) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + if (error != lastError) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号error:" + lastError + "->" + error) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } if (mode == 0) { @@ -151,9 +164,6 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem this.setIsonline(true); this.setIserror(false); message = ""; - Instruction instruction = null; - List toInstructions; - switch (mode) { case 2: log.debug("待机"); @@ -168,9 +178,7 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem } break; case 5: - /** - * 申请AGV取空放空的任务 - */ + //申请AGV取空放空的任务 if (!requireSucess) { applyAgvTask(mode); } @@ -194,10 +202,10 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem - last_mode = mode; - last_move = move; - last_action = action; - last_error = error; + lastMode = mode; + lastMove = move; + lastAction = action; + lastError = error; } @@ -206,22 +214,22 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem */ public synchronized void applyAgvTask(int mode) { Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() - < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + if (date.getTime() - this.instructionRequireTime.getTime() + < (long) this.instructionRequireTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionRequireTimeOut); return; } else { - this.instruction_require_time = date; + this.instructionRequireTime = date; if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { message = "two_message17"; ApplyGreenFoilButtonRequest applyGreenFoilButtonRequest = new ApplyGreenFoilButtonRequest(); - applyGreenFoilButtonRequest.setDevice_code(device_code); + applyGreenFoilButtonRequest.setDevice_code(deviceCode); applyGreenFoilButtonRequest.setType(String.valueOf(mode)); ApplyGreenFoilButtonResponse response = acsToWmsService.applyGreenFoilButtonTask(applyGreenFoilButtonRequest); if (ObjectUtil.isEmpty(response)) { message = "two_message18"; } else { - if (response.getCode()== 200) { + if (response.getCode()== CommonFinalParam.STATUS_OPEN) { if (mode==4){ this.writing("to_command","4"); }else if (mode==5){ @@ -253,7 +261,7 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem itemMap.put(to_param, Integer.parseInt(value)); this.control(itemMap); - logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); + logServer.deviceExecuteLog(deviceCode, "", "", "下发电气信号设备号:" + deviceCode + ",下发电气:" + to_param + ",下发电气值:" + value); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDeviceDriver.java index 45b8cc8ac..b85c4b5e6 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDeviceDriver.java @@ -1,5 +1,6 @@ package org.nl.acs.device_driver.two_conveyor.hongxiang_device; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import lombok.Data; @@ -244,7 +245,31 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple this.control(itemMap); } + public String getToParam() { + return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + "."; + } + + /** + * 多个信号一起下发电气 + * + * @param map + */ + public void writing(Map map) throws Exception { + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + Map itemMap = new LinkedHashMap<>(); + map.forEach((key, value) -> { + if (ObjectUtil.isNotEmpty(value)) { + itemMap.put(getToParam() + key, value); + } + }); + if (ObjectUtil.isNotEmpty(itemMap)) { + this.checkcontrol(itemMap); + logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); + } + } + //将扩展表中的字符串数据转换成集合 + @Override public List getExtraDeviceCodes(String extraName) { String extraValue = (String) this.getDevice().getExtraValue().get(extraName); if (StrUtil.isEmpty(extraValue)) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/inflatable_shaft_library/InflatableShaftLibraryDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/inflatable_shaft_library/InflatableShaftLibraryDeviceDriver.java index 236900090..31f7ead21 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/inflatable_shaft_library/InflatableShaftLibraryDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/inflatable_shaft_library/InflatableShaftLibraryDeviceDriver.java @@ -54,35 +54,32 @@ public class InflatableShaftLibraryDeviceDriver extends AbstractOpcDeviceDriver //心跳 public int heartbeat = 0; - public int last_heartbeat = 0; + public int lastHeartbeat = 0; //工作模式 int mode = 0; - int last_mode = 0; + int lastMode = 0; //光电信号 int move = 0; - int last_move = 0; + int lastMove = 0; //动作信号 int action = 0; - int last_action = 0; + int lastAction = 0; //报警信号 int error = 0; - int last_error = 0; + int lastError = 0; //数量 int qty = 0; - int last_qty = 0; + int lastQty = 0; //类型 int type = 0; - int last_type = 0; - - int to_command = 0; - int last_to_command = 0; + int lastType = 0; Boolean isonline = true; Boolean iserror = false; - String device_code; + String deviceCode; String message = null; @@ -97,7 +94,7 @@ public class InflatableShaftLibraryDeviceDriver extends AbstractOpcDeviceDriver @Override public void execute() { - device_code = this.getDeviceCode(); + deviceCode = this.getDeviceCode(); heartbeat = this.itemProtocol.getItem_heartbeat(); mode = this.itemProtocol.getItem_mode(); move = this.itemProtocol.getItem_move(); @@ -108,40 +105,38 @@ public class InflatableShaftLibraryDeviceDriver extends AbstractOpcDeviceDriver iserror = this.itemProtocol.isError; - if (mode != last_mode) { + if (mode != lastMode) { requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + logServer.deviceItemValue(this.deviceCode, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.deviceCode, "", "", "信号mode:" + lastMode + "->" + mode); } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + if (move != lastMove) { + logServer.deviceItemValue(this.deviceCode, "move", String.valueOf(move)); + logServer.deviceExecuteLog(this.deviceCode, "", "", "信号move:" + lastMove + "->" + move); } - if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); + if (action != lastAction) { + logServer.deviceItemValue(this.deviceCode, "action", String.valueOf(action)); + logServer.deviceExecuteLog(this.deviceCode, "", "", "信号action:" + lastAction + "->" + action); } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + if (error != lastError) { + logServer.deviceItemValue(this.deviceCode, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.deviceCode, "", "", "信号error:" + lastError + "->" + error); } - if (qty != last_qty) { - logServer.deviceItemValue(this.device_code, "weight", String.valueOf(qty)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号qty:" + last_qty + "->" + qty); + if (qty != lastQty) { + logServer.deviceItemValue(this.deviceCode, "weight", String.valueOf(qty)); + logServer.deviceExecuteLog(this.deviceCode, "", "", "信号qty:" + lastQty + "->" + qty); } - if (type != last_type) { - logServer.deviceItemValue(this.device_code, "weight", String.valueOf(type)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号type:" + last_type + "->" + type); + if (type != lastType) { + logServer.deviceItemValue(this.deviceCode, "weight", String.valueOf(type)); + logServer.deviceExecuteLog(this.deviceCode, "", "", "信号type:" + lastType + "->" + type); } - - - last_mode = mode; - last_move = move; - last_action = action; - last_error = error; - last_qty = qty; - last_type = type; + lastMode = mode; + lastMove = move; + lastAction = action; + lastError = error; + lastQty = qty; + lastType = type; } @@ -154,7 +149,7 @@ public class InflatableShaftLibraryDeviceDriver extends AbstractOpcDeviceDriver itemMap.put(to_param, Integer.parseInt(value)); this.control(itemMap); - logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); + logServer.deviceExecuteLog(deviceCode, "", "", "下发电气信号设备号:" + deviceCode + ",下发电气:" + to_param + ",下发电气值:" + value); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java index d9220bb80..7a7e821fc 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java @@ -383,9 +383,9 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i notCreateInstMessage = "手动创建指令未下发电气信号原因->取货位:" + start_device_code + ",放货位:" + next_device_code + ",存在关联的同一列烘箱设备未关门!指令号:" + instruction.getInstruction_code(); return false; } - instruction.setInstruction_status("1"); + /*instruction.setInstruction_status("1"); instruction.setUpdate_time(DateUtil.now()); - instructionService.update(instruction); + instructionService.update(instruction);*/ Device startDevice = deviceAppService.findDeviceByCode(start_device_code); Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); if (ObjectUtil.isEmpty(startDevice.getExtraValue().get("address"))) { @@ -410,8 +410,11 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i map.put("to_target", next_addr); map.put("to_task", instruction.getInstruction_code()); map.put("to_command", "1"); - list.add(map); - this.writing(list); + try { + this.writing(map); + } catch (Exception e) { + e.printStackTrace(); + } if (startdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startdevice.getDeviceDriver(); hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); @@ -743,6 +746,28 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i return isClose; } + public String getToParam() { + return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + "."; + } + + /** + * 多个信号一起下发电气 + * + * @param map + */ + public void writing(Map map) throws Exception { + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + Map itemMap = new LinkedHashMap<>(); + map.forEach((key, value) -> { + if (ObjectUtil.isNotEmpty(value)) { + itemMap.put(getToParam() + key, value); + } + }); + if (ObjectUtil.isNotEmpty(itemMap)) { + this.checkcontrol(itemMap); + logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); + } + } public synchronized void update_instruction_status() throws Exception { Date date = new Date(); @@ -751,6 +776,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i } else { this.instruction_update_time = date; + Map map = new HashMap(); //更改任务状态 if (task > 0) { Instruction inst1 = checkInst(); @@ -758,6 +784,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i if (StrUtil.equals(inst1.getInstruction_status(), "0")) { inst1.setInstruction_status("1"); inst1.setExecute_device_code(this.device_code); + inst1.setUpdate_time(DateUtil.now()); instructionService.update(inst1); } } @@ -780,7 +807,6 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i if (mode == 1 && door == 1 && action == 1 && error1 == 0 && move == 1) { if (this.getNow_steps_type() == 2) { ArrayList list = new ArrayList(); - Map map = new HashMap(); map.put("to_command", "2"); list.add(map); this.writing(list); @@ -809,7 +835,6 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i } else { if (this.getNow_steps_type() == 2) { ArrayList list = new ArrayList(); - Map map = new HashMap(); map.put("to_command", "2"); list.add(map); this.writing(list); @@ -844,11 +869,11 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); - hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); + map.put("to_close_door", "1"); + hongXiangConveyorDeviceDriver.writing(map); } if (this.getNow_steps_type() == 3) { ArrayList list = new ArrayList(); - Map map = new HashMap(); map.put("to_command", "3"); list.add(map); this.writing(list); @@ -889,7 +914,8 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i int move = hongXiangConveyorDeviceDriver.getMove(); if (mode == 1 && door == 1 && action == 1 && error1 == 0 && move == 0) { if (this.getNow_steps_type() == 4) { - this.writing("to_command", "4"); + map.put("to_command", "4"); + this.writing(map); this.setNow_steps_type(5); } else { feedMessage = "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"; @@ -916,7 +942,8 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i } } else { if (this.getNow_steps_type() == 4) { - this.writing("to_command", "4"); + map.put("to_command", "4"); + this.writing(map); this.setNow_steps_type(5); } } @@ -957,8 +984,9 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i int time = Integer.parseInt(taskDto.getOven_time()); int hours = (time % (60 * 60 * 24)) / (60 * 60); int minutes = (time % (60 * 60)) / 60; - hongXiangConveyorDeviceDriver.writing("to_time_house", String.valueOf(hours)); - hongXiangConveyorDeviceDriver.writing("to_time_min", String.valueOf(minutes)); + map.put("to_time_house", String.valueOf(hours)); + map.put("to_time_min", String.valueOf(minutes)); + hongXiangConveyorDeviceDriver.writing(map); } } @@ -984,7 +1012,8 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i } } - this.writing("to_command", "5"); + map.put("to_command", "5"); + this.writing(map); this.setNow_steps_type(6); this.setNow_steps_type(0); try { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/ItemProtocol.java index c62d95b89..ce16d7b59 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/ItemProtocol.java @@ -1,5 +1,6 @@ package org.nl.acs.device_driver.two_conveyor.plug_pull_device_site; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -34,6 +35,8 @@ public class ItemProtocol { public static String item_weight2 = "weight2"; //纸管2规格 public static String item_material2 = "material2"; + //气涨轴尺寸 + public static String item_size = "size"; //下发命令 public static String item_to_command = "to_command"; @@ -43,14 +46,16 @@ public class ItemProtocol { public static String item_to_material2 = "to_material2"; //纸管数量 public static String item_to_qty = "to_qty"; - //气涨轴类型 + //气涨轴类型 标箔/锂电 1/2 public static String item_to_qzz_type = "to_qzz_type"; - //是否换轴 - public static String item_to_weight1 = "to_weight1"; - //尺寸 - public static String item_to_size = "to_size"; - //存储位置 - public static String item_to_weight2 = "to_weight2"; + //是否下发纸管号1 + public static String item_to_volumn1 = "to_volumn1"; + //纸管1尺寸 + public static String item_to_size1 = "to_size1"; + //纸管2尺寸 + public static String item_to_size2 = "to_size2"; + //是否下发纸管号2 + public static String item_to_volumn2 = "to_volumn2"; private PlugPullDeviceSiteDeviceDriver driver; @@ -82,26 +87,28 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_task); } - public int getBarcode(){ return this.getOpcIntegerValue(item_barcode);} + public String getBarcode(){ return this.getOpcStringValue(item_barcode);} public int getWeight1(){ return this.getOpcIntegerValue(item_weight1);} - public int getMaterial1(){ return this.getOpcIntegerValue(item_material1);} + public String getMaterial1(){ return this.getOpcStringValue(item_material1);} public int getWeight2(){ return this.getOpcIntegerValue(item_weight2);} - public int getMaterial2(){ return this.getOpcIntegerValue(item_material2);} + public int getSize(){ return this.getOpcIntegerValue(item_size);} + + public String getMaterial2(){ return this.getOpcStringValue(item_material2);} public int getTo_command() { return this.getOpcIntegerValue(item_to_command); } - public int getTo_material1() { - return this.getOpcIntegerValue(item_to_material1); + public String getTo_material1() { + return this.getOpcStringValue(item_to_material1); } - public int getTo_material2() { - return this.getOpcIntegerValue(item_to_material2); + public String getTo_material2() { + return this.getOpcStringValue(item_to_material2); } public int getTo_qty() { @@ -112,16 +119,20 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_qzz_type); } - public int getTo_weight2() { - return this.getOpcIntegerValue(item_to_weight2); + public String getTo_volumn1() { + return this.getOpcStringValue(item_to_volumn1); } - public int getTo_size() { - return this.getOpcIntegerValue(item_to_size); + public int getTo_size1() { + return this.getOpcIntegerValue(item_to_size1); } - public int getTo_weight1() { - return this.getOpcIntegerValue(item_to_weight1); + public int getTo_size2() { + return this.getOpcIntegerValue(item_to_size2); + } + + public String getTo_volumn2() { + return this.getOpcStringValue(item_to_volumn1); } Boolean isonline; @@ -144,6 +155,16 @@ public class ItemProtocol { } + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (StrUtil.isBlank(value)) { + + } else { + return value; + } + return "0"; + } + public float getOpcFloatValue(String protocol) { Float value = this.driver.getDoubleValue(protocol); if (value == null) { @@ -163,26 +184,28 @@ public class ItemProtocol { list.add(new ItemDto(item_mode, "工作模式", "DB9.B1")); list.add(new ItemDto(item_move, "光电信号", "DB9.B2")); list.add(new ItemDto(item_action, "动作信号", "DB9.B3")); - list.add(new ItemDto(item_barcode, "气胀轴条码", "DB9.B4")); + list.add(new ItemDto(item_barcode, "气胀轴条码", "DB9.String224.60")); list.add(new ItemDto(item_weight1, "纸管1重量", "DB9.B5")); - list.add(new ItemDto(item_material1, "纸管1规格", "DB9.B6")); + list.add(new ItemDto(item_material1, "纸管1规格", "DB9.String278.60")); list.add(new ItemDto(item_weight2, "纸管2重量", "DB9.B7")); - list.add(new ItemDto(item_material2, "纸管2规格", "DB9.B8")); + list.add(new ItemDto(item_material2, "纸管2规格", "DB9.String332.60")); list.add(new ItemDto(item_error, "报警信号", "DB9.B9")); list.add(new ItemDto(item_task, "任务号", "DB9.D10")); + list.add(new ItemDto(item_size, "尺寸", "DB9.B11")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_to_command, "下发命令", "DB10.W0")); - list.add(new ItemDto(item_to_material1, "纸管1规格", "DB10.W2")); - list.add(new ItemDto(item_to_material2, "纸管2规格", "DB10.W4")); + list.add(new ItemDto(item_to_material1, "纸管1规格", "DB10.String602.60")); + list.add(new ItemDto(item_to_material2, "纸管2规格", "DB10.String656.60")); list.add(new ItemDto(item_to_qty, "纸管数量", "DB10.W6")); list.add(new ItemDto(item_to_qzz_type, "气胀轴类型", "DB10.W8")); - list.add(new ItemDto(item_to_weight1, "纸管1标准重量", "DB10.W10")); - list.add(new ItemDto(item_to_weight2, "纸管2标准重量", "DB10.W12")); - list.add(new ItemDto(item_to_size, "尺寸", "DB10.W14")); + list.add(new ItemDto(item_to_volumn1, "下发纸管号1", "DB10.String610.60")); + list.add(new ItemDto(item_to_volumn2, "下发纸管号2", "DB10.String612.60")); + list.add(new ItemDto(item_to_size1, "下发纸管1尺寸", "DB10.W10")); + list.add(new ItemDto(item_to_size2, "下发纸管2尺寸", "DB10.W12")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java index 331399228..12428df94 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.server.AgvService; +import org.nl.acs.common.base.CommonFinalParam; import org.nl.acs.device.domain.Device; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; @@ -29,6 +30,8 @@ import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.config.language.LangProcess; import org.nl.config.language.LangProcess; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; import org.nl.system.service.param.ISysParamService; import org.nl.config.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -61,70 +64,79 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); @Autowired AgvService agvService = SpringContextHolder.getBean(AgvService.class); + @Autowired + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; //工作模式 int mode = 0; - int last_mode = 0; + int lastMode = 0; //光电信号 int move = 0; - int last_move = 0; + int lastMove = 0; //动作信号 int action = 0; - int last_action = 0; + int lastAction = 0; //报警信号 int error = 0; - int last_error = 0; + int lastError = 0; //任务号 int task = 0; - int last_task = 0; + int lastTask = 0; + + //气涨轴尺寸 + int size = 0; + int lastSize = 0; int heartbeat = 0; - int last_heartbeat = 0; - int to_command = 0; - int last_to_command = 0; + int lastHeartbeat = 0; + int toCommand = 0; + int lastToCommand = 0; //气胀轴条码 - int barcode = 0; - int last_barcode = 0; + String barcode = null; + String lastBarcode = null; //纸管1重量 int weight1 = 0; - int last_weight1 = 0; + int lastWeight1 = 0; //纸管1规格 - int material1 = 0; - int last_material1 = 0; + String material1 = null; + String lastMaterial1 = null; //纸管2重量 int weight2 = 0; - int last_weight2 = 0; + int lastWeight2 = 0; //纸管2规格 - int material2 = 0; - int last_material2 = 0; + String material2 = null; + String lastMaterial2 = null; - int to_size = 0; - int last_to_size = 0; + //纸管1尺寸 + int toSize1 = 0; + int lastToSize1 = 0; - int to_material1 = 0; - int last_to_material1 = 0; + //纸管2尺寸 + int toSize2 = 0; + int lastToSize2 = 0; - int to_material2 = 0; - int last_to_material2 = 0; + String toMaterial1 = null; + String lastToMaterial1 = null; - int to_qty = 0; - int last_to_qty = 0; + String toMaterial2 = null; + String lastToMaterial2 = null; - int to_qzz_type = 0; - int last_to_qzz_type = 0; + int toQty = 0; + int lastToQty = 0; - int to_weight1 = 0; - int last_to_weight1 = 0; + int toQzzType = 0; + int lastToQzzType = 0; - int to_weight2 = 0; - int last_to_weight2 = 0; + //子卷号1 + String toVolumn1 = null; + String lastToVolumn1 = null; + + //子卷号2 + String toVolumn2 = null; + String lastToVolumn2 = null; Boolean isonline = true; @@ -138,7 +150,7 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl */ int flag; - String device_code; + String deviceCode; String message = null; @@ -154,8 +166,8 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl String feedMessage = ""; @Override - public void execute() { - device_code = this.getDeviceCode(); + public void execute() throws Exception { + deviceCode = this.getDeviceCode(); mode = this.itemProtocol.getMode(); move = this.itemProtocol.getMove(); action = this.itemProtocol.getAction(); @@ -166,98 +178,173 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl weight1 = this.itemProtocol.getWeight1(); material1 = this.itemProtocol.getMaterial1(); weight2 = this.itemProtocol.getWeight2(); + size = this.itemProtocol.getSize(); material2 = this.itemProtocol.getMaterial2(); - to_command = this.itemProtocol.getTo_command(); - to_material1 = this.itemProtocol.getTo_material1(); - to_material2 = this.itemProtocol.getTo_material2(); - to_qty = this.itemProtocol.getTo_qty(); - to_qzz_type = this.itemProtocol.getTo_qzz_type(); - to_weight1 = this.itemProtocol.getTo_weight1(); - to_weight2 = this.itemProtocol.getTo_weight2(); - to_size = this.itemProtocol.getTo_size(); + toCommand = this.itemProtocol.getTo_command(); + toMaterial1 = this.itemProtocol.getTo_material1(); + toMaterial2 = this.itemProtocol.getTo_material2(); + toQty = this.itemProtocol.getTo_qty(); + toQzzType = this.itemProtocol.getTo_qzz_type(); + toVolumn1 = this.itemProtocol.getTo_volumn1(); + toVolumn2 = this.itemProtocol.getTo_volumn2(); + toSize1 = this.itemProtocol.getTo_size1(); + toSize2 = this.itemProtocol.getTo_size2(); - if (mode != last_mode) { + if (mode != lastMode) { requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号mode:" + lastMode + "->" + mode) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + if (move != lastMove) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号move:" + lastMove + "->" + move) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); + if (action != lastAction) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号action:" + lastAction + "->" + action) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + if (error != lastError) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号error:" + lastError + "->" + error) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (barcode != last_barcode) { - logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(barcode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode:" + last_barcode + "->" + barcode); + if (barcode != lastBarcode) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号barcode:" + lastBarcode + "->" + barcode) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (weight1 != last_weight1) { - logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(weight1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号weight1:" + last_weight1 + "->" + weight1); + if (weight1 != lastWeight1) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号weight1:" + lastWeight1 + "->" + weight1) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (material1 != last_material1) { - logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(material1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号material1:" + last_material1 + "->" + material1); + if (material1 != lastMaterial1) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号material1:" + lastMaterial1 + "->" + material1) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (weight2 != last_weight2) { - logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(weight2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号weight2:" + last_weight2 + "->" + weight2); + if (weight2 != lastWeight2) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号weight2:" + lastWeight2 + "->" + weight2) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (material2 != last_material2) { - logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(material2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号material2:" + last_material2 + "->" + material2); + if (material2 != lastMaterial2) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号material2:" + lastMaterial2 + "->" + material2) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (task != last_task) { - logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); + if (task != lastTask) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号task:" + lastTask + "->" + task) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (to_command != last_to_command) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); + if (size != lastSize) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号size:" + lastSize + "->" + size) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (to_material1 != last_to_material1) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_material1:" + last_to_material1 + "->" + to_material1); + if (toCommand != lastToCommand) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_command:" + lastToCommand + "->" + toCommand) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (to_material2 != last_to_material2) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_material2:" + last_to_material2 + "->" + to_material2); + if (toMaterial1 != lastToMaterial1) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_material1:" + lastToMaterial1 + "->" + toMaterial1) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (to_qty != last_to_qty) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_qty:" + last_to_qty + "->" + to_qty); + if (toMaterial2 != lastToMaterial2) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_material2:" + lastToMaterial2 + "->" + toMaterial2) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (to_qzz_type != last_to_qzz_type) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_qzz_type:" + last_to_qzz_type + "->" + to_qzz_type); + if (toQty != lastToQty) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_qty:" + lastToQty + "->" + toQty) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (to_weight1 != last_to_weight1) { - logServer.deviceExecuteLog(this.device_code, "", "", "to_weight1:" + last_to_weight1 + "->" + to_weight1); + if (toQzzType != lastToQzzType) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_qzz_type:" + lastToQzzType + "->" + toQzzType) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (to_weight2 != last_to_weight2) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_weight2:" + last_to_weight2 + "->" + to_weight2); + if (toVolumn1 != lastToVolumn1) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_volumn1:" + lastToVolumn1 + "->" + toVolumn1) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } - if (to_size != last_to_size) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_size:" + last_to_size + "->" + to_size); + if (toVolumn2 != lastToVolumn2) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_volumn1:" + lastToVolumn2 + "->" + toVolumn2) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); + } + if (toSize1 != lastToSize1) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_size1:" + lastToSize1 + "->" + toSize1) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); + } + if (toSize2 != lastToSize2) { + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(deviceCode) + .content("信号to_size2:" + lastToSize2 + "->" + toSize2) + .build(); + luceneExecuteLogService.deviceExecuteLog(logDto); } if (mode == 0) { this.setIsonline(false); - message = "未联机"; + message = "universal_off-line"; //有报警 } else if (error != 0) { this.setIserror(true); - message = "有报警"; + message = "universal_message3"; //无报警 } else { this.setIsonline(true); this.setIserror(false); message = ""; - Instruction instruction = null; - List toInstructions; - //插拔轴机工位申请任务 switch (mode) { case 1: @@ -270,24 +357,9 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl log.info(LangProcess.msg("universal_operation")); break; case 4: - if (task > 0) { - Instruction inst = instructionService.findByCode(String.valueOf(task)); - TaskDto taskDto = taskserver.findByCode(inst.getTask_code()); - if (StrUtil.equals("1", taskDto.getIs_bushing())) { - if (move == 1 && !requireSucess) { - //申请套管 - apply_casing(mode); - } - } else { - Map map = new LinkedHashMap<>(); - map.put("to_size", taskDto.getSize()); - this.writing(map); - } - } else { - if (move == 1 && !requireSucess) { - //申请套管 - apply_casing(mode); - } + if (!requireSucess) { + //申请套管 + apply_casing(mode); } break; case 5: @@ -297,21 +369,21 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl } break; case 6: - if (!requireSucess && task > 0) { + if (!requireSucess) { //拔轴完成 pullShaftSucess(mode); } break; case 7: - if (!requireSucess && task > 0) { + if (!requireSucess) { //申请拔轴 applyPullShaft(mode); } break; case 8: - if (!requireSucess && task > 0) { + if (!requireSucess) { //缓存线已满,申请行架任务 - applyTask(); + applyTask(mode); } break; default: @@ -319,48 +391,67 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl break; } } - last_mode = mode; - last_move = move; - last_action = action; - last_error = error; - last_task = task; - last_heartbeat = heartbeat; - last_barcode = barcode; - last_weight1 = weight1; - last_weight2 = weight2; - last_material1 = material1; - last_material2 = material2; - last_to_command = to_command; - last_to_material1 = to_material1; - last_to_material2 = to_material2; - last_to_qty = to_qty; - last_to_qzz_type = to_qzz_type; - last_to_weight2 = to_weight2; - last_to_weight1 = to_weight1; - last_to_size = to_size; + lastMode = mode; + lastMove = move; + lastAction = action; + lastError = error; + lastTask = task; + lastHeartbeat = heartbeat; + lastBarcode = barcode; + lastWeight1 = weight1; + lastWeight2 = weight2; + lastSize = size; + lastMaterial1 = material1; + lastMaterial2 = material2; + lastToCommand = toCommand; + lastToMaterial1 = toMaterial1; + lastToMaterial2 = toMaterial2; + lastToQty = toQty; + lastToQzzType = toQzzType; + lastToVolumn2 = toVolumn2; + lastToVolumn1 = toVolumn1; + lastToSize2 = toSize2; + lastToSize1 = toSize1; } /** * 申请套管 */ - private synchronized void apply_casing(int mode) { + private synchronized void apply_casing(int mode) throws Exception { ApplyPlugPullSiteRequest applyPlugPullSiteRequest = new ApplyPlugPullSiteRequest(); ApplyPlugPullSitResponse applyPlugPullSitResponse; - Instruction inst; - if (task != 0) { - inst = instructionService.findByCode(String.valueOf(task)); - String task_code = inst.getTask_code(); - TaskDto dto = taskserver.findByCode(task_code); - String size = dto.getSize(); - applyPlugPullSiteRequest.setSize(size); - applyPlugPullSiteRequest.setTask_code(task_code); - } - applyPlugPullSiteRequest.setDevice_code(device_code); - applyPlugPullSiteRequest.setType("1"); + applyPlugPullSiteRequest.setDevice_code(deviceCode); + applyPlugPullSiteRequest.setType(CommonFinalParam.TYPE_ONE); + //气涨轴尺寸 + applyPlugPullSiteRequest.setSize(String.valueOf(size)); applyPlugPullSitResponse = acsToWmsService.applyPlugPullSiteRequest(applyPlugPullSiteRequest); - if (applyPlugPullSitResponse.getCode() == 200) { - this.writeSignal(mode); - logServer.deviceExecuteLog(this.device_code, "", "", "申请套管,返回参数:" + applyPlugPullSitResponse); + if (applyPlugPullSitResponse.getCode() == CommonFinalParam.STATUS_OPEN) { + Map data = applyPlugPullSitResponse.getData(); + String left = data.get("left"); + String right = data.get("right"); + String number = data.get("number"); + String leftSize = data.get("left_size"); + String rightSize = data.get("right_size"); + Map map = new LinkedHashMap<>(); + //下发纸管信息 + //todo:纸管规格待定 + if (StrUtil.isNotEmpty(left)) { + map.put("to_volumn1", left); + } + if (StrUtil.isNotEmpty(right)) { + map.put("to_volumn2", right); + } + if (StrUtil.isNotEmpty(leftSize)){ + map.put("to_size1", leftSize); + } + if (StrUtil.isNotEmpty(rightSize)){ + map.put("to_size2", rightSize); + } + map.put("to_command", mode); + map.put("to_qty", number); + this.writing(map); + requireSucess = true; + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请套管,返回参数:" + applyPlugPullSitResponse); message = "申请套管成功"; } else { message = applyPlugPullSitResponse.getMessage(); @@ -369,31 +460,27 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl this.writing(map); requireSucess = true; message = "申请套管失败"; - logServer.deviceExecuteLog(this.device_code, "", "", "申请套管反馈失败,返回参数:" + applyPlugPullSitResponse); + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请套管反馈失败,返回参数:" + applyPlugPullSitResponse); } } /** * 套管完成 */ - private synchronized void bushingSucess(int mode) { + private synchronized void bushingSucess(int mode) throws Exception { ApplyPlugPullSiteRequest applyPlugPullSiteRequest = new ApplyPlugPullSiteRequest(); ApplyPlugPullSitResponse applyPlugPullSitResponse; - if (task != 0) { - Instruction inst1 = instructionService.findByCode(String.valueOf(task)); - String task_code1 = inst1.getTask_code(); - applyPlugPullSiteRequest.setTask_code(task_code1); - } - applyPlugPullSiteRequest.setDevice_code(device_code); + applyPlugPullSiteRequest.setDevice_code(deviceCode); + //上报规格和重量 applyPlugPullSiteRequest.setWeight1(String.valueOf(weight1)); applyPlugPullSiteRequest.setMaterial1(String.valueOf(material1)); applyPlugPullSiteRequest.setWeight2(String.valueOf(weight2)); applyPlugPullSiteRequest.setMaterial2(String.valueOf(material2)); - applyPlugPullSiteRequest.setType("2"); + applyPlugPullSiteRequest.setType(CommonFinalParam.TYPE_TWO); applyPlugPullSitResponse = acsToWmsService.applyPlugPullSiteRequest(applyPlugPullSiteRequest); - if (applyPlugPullSitResponse.getCode() == 200) { + if (applyPlugPullSitResponse.getCode() == CommonFinalParam.STATUS_OPEN) { this.writeSignal(mode); - logServer.deviceExecuteLog(this.device_code, "", "", "反馈套管完成,返回参数:" + applyPlugPullSitResponse); + logServer.deviceExecuteLog(this.deviceCode, "", "", "反馈套管完成,返回参数:" + applyPlugPullSitResponse); message = "套管完成成功"; } else { message = applyPlugPullSitResponse.getMessage(); @@ -402,7 +489,7 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl this.writing(map); requireSucess = true; message = "申请套管失败"; - logServer.deviceExecuteLog(this.device_code, "", "", "申请套管反馈失败,返回参数:" + applyPlugPullSitResponse); + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请套管反馈失败,返回参数:" + applyPlugPullSitResponse); } } @@ -410,23 +497,19 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl /** * 拔轴完成 */ - private synchronized void pullShaftSucess(int mode) { + private synchronized void pullShaftSucess(int mode) throws Exception { ApplyPlugPullSiteRequest applyPlugPullSiteRequest = new ApplyPlugPullSiteRequest(); ApplyPlugPullSitResponse applyPlugPullSitResponse; - Instruction inst1 = instructionService.findByCode(String.valueOf(task)); - String task_code1 = inst1.getTask_code(); - TaskDto taskDto = taskserver.findByCode(task_code1); - if (ObjectUtil.isNotEmpty(taskDto)){ - - } - applyPlugPullSiteRequest.setDevice_code(device_code); - applyPlugPullSiteRequest.setTask_code(task_code1); + applyPlugPullSiteRequest.setDevice_code(deviceCode); applyPlugPullSiteRequest.setBarcode(String.valueOf(barcode)); - applyPlugPullSiteRequest.setType("3"); + applyPlugPullSiteRequest.setType(CommonFinalParam.TYPE_THREE); applyPlugPullSitResponse = acsToWmsService.applyPlugPullSiteRequest(applyPlugPullSiteRequest); - if (applyPlugPullSitResponse.getCode() == 200) { - this.writeSignal(mode); - logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴,返回参数:" + applyPlugPullSitResponse); + if (applyPlugPullSitResponse.getCode() == CommonFinalParam.STATUS_OPEN) { + Map map = new LinkedHashMap<>(); + map.put("to_command", mode); + this.writing(map); + requireSucess = true; + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请拔轴,返回参数:" + applyPlugPullSitResponse); message = "拔轴完成成功"; } else { message = applyPlugPullSitResponse.getMessage(); @@ -434,32 +517,33 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl map.put("to_command", 99); this.writing(map); requireSucess = true; - message = "申请拔轴失败"; - logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴反馈失败,返回参数:" + applyPlugPullSitResponse); + message = "拔轴完成失败"; + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请拔轴反馈失败,返回参数:" + applyPlugPullSitResponse); } } /** * 申请拔轴 */ - private synchronized void applyPullShaft(int mode) { + private synchronized void applyPullShaft(int mode) throws Exception { ApplyPlugPullSiteRequest applyPlugPullSiteRequest = new ApplyPlugPullSiteRequest(); ApplyPlugPullSitResponse applyPlugPullSitResponse; - Instruction inst1 = instructionService.findByCode(String.valueOf(task)); - String task_code1 = inst1.getTask_code(); - TaskDto taskDto = taskserver.findByCode(task_code1); - if (ObjectUtil.isNotEmpty(taskDto)){ - - } - applyPlugPullSiteRequest.setDevice_code(device_code); - applyPlugPullSiteRequest.setTask_code(task_code1); + applyPlugPullSiteRequest.setDevice_code(deviceCode); applyPlugPullSiteRequest.setBarcode(String.valueOf(barcode)); - applyPlugPullSiteRequest.setType("4"); + applyPlugPullSiteRequest.setType(CommonFinalParam.TYPE_FOUR); applyPlugPullSitResponse = acsToWmsService.applyPlugPullSiteRequest(applyPlugPullSiteRequest); - if (applyPlugPullSitResponse.getCode() == 200) { - this.writeSignal(mode); - logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴,返回参数:" + applyPlugPullSitResponse); - message = "拔轴完成成功"; + if (applyPlugPullSitResponse.getCode() == CommonFinalParam.STATUS_OPEN) { + Map data = applyPlugPullSitResponse.getData(); + String leftSize = data.get("left_size"); + String rightSzie = data.get("right_szie"); + Map map = new LinkedHashMap<>(); + map.put("to_size1", leftSize); + map.put("to_size2", rightSzie); + map.put("to_command", mode); + this.writing(map); + requireSucess = true; + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请拔轴,返回参数:" + applyPlugPullSitResponse); + message = "申请拔轴成功"; } else { message = applyPlugPullSitResponse.getMessage(); Map map = new LinkedHashMap<>(); @@ -467,30 +551,32 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl this.writing(map); requireSucess = true; message = "申请拔轴失败"; - logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴反馈失败,返回参数:" + applyPlugPullSitResponse); + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请拔轴反馈失败,返回参数:" + applyPlugPullSitResponse); } } /** * 缓存线已满,生成行架任务 */ - private synchronized void applyTask() { + private synchronized void applyTask(int mode) throws Exception { ApplyPlugPullSiteRequest applyPlugPullSiteRequest = new ApplyPlugPullSiteRequest(); ApplyPlugPullSitResponse applyPlugPullSitResponse; - Instruction inst1 = instructionService.findByCode(String.valueOf(task)); - String task_code1 = inst1.getTask_code(); - applyPlugPullSiteRequest.setDevice_code(device_code); - applyPlugPullSiteRequest.setTask_code(task_code1); - applyPlugPullSiteRequest.setType("5"); + applyPlugPullSiteRequest.setDevice_code(deviceCode); + applyPlugPullSiteRequest.setSize(String.valueOf(size)); + applyPlugPullSiteRequest.setType(CommonFinalParam.TYPE_FIVE); applyPlugPullSitResponse = acsToWmsService.applyPlugPullSiteRequest(applyPlugPullSiteRequest); - if (applyPlugPullSitResponse.getCode() == 200) { - logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴,返回参数:" + applyPlugPullSitResponse); - message = "拔轴完成成功"; + if (applyPlugPullSitResponse.getCode() == CommonFinalParam.STATUS_OPEN) { + Map map = new LinkedHashMap<>(); + map.put("to_command", mode); + this.writing(map); + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请拔轴,返回参数:" + applyPlugPullSitResponse); + message = "生成行架任务成功"; + requireSucess = true; } else { message = applyPlugPullSitResponse.getMessage(); requireSucess = true; message = "申请行架任务失败"; - logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴反馈失败,返回参数:" + applyPlugPullSitResponse); + logServer.deviceExecuteLog(this.deviceCode, "", "", "申请拔轴反馈失败,返回参数:" + applyPlugPullSitResponse); } } @@ -499,7 +585,7 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl * * @param mode */ - public void writeSignal(int mode) { + public void writeSignal(int mode) throws Exception { Map map = new LinkedHashMap<>(); map.put("to_command", mode); this.writing(map); @@ -525,11 +611,11 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl itemMap.put(to_param, json.getString("value")); } } - logServer.deviceExecuteLog(device_code, "", "", "下发电气信号:" + itemMap); + logServer.deviceExecuteLog(deviceCode, "", "", "下发电气信号:" + itemMap); this.control(itemMap); } - public void writing(Map map) { + public void writing(Map map) throws Exception { DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); Map itemMap = new LinkedHashMap<>(); map.forEach((key, value) -> { @@ -538,7 +624,7 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl } }); if (ObjectUtil.isNotEmpty(itemMap)) { - this.control(itemMap); + this.checkcontrol(itemMap); logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/ItemProtocol.java index 1f0c5c3f5..41e61bbcc 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/ItemProtocol.java @@ -45,14 +45,6 @@ public class ItemProtocol { public static String item_to_sleeve = "to_sleeve"; //尺寸 public static String item_to_size = "to_size"; - //代数 - public static String item_to_version = "to_version"; - //子卷数量 - public static String item_to_qty = "to_qty"; - //子卷1长度 - public static String item_to_length1 = "to_length1"; - //子卷2长度 - public static String item_to_length2 = "to_length2"; public static String item_to_barcode = "to_barcode"; @@ -107,16 +99,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_size); } - public int getTo_version() { - return this.getOpcIntegerValue(item_to_version); - } - public int getTo_qty() { - return this.getOpcIntegerValue(item_to_qty); - } - - public int getTo_barcode() { - return this.getOpcIntegerValue(item_to_barcode); + public String getTo_barcode() { + return this.getOpcStringValue(item_to_barcode); } public int getTo_onset() { @@ -139,13 +124,7 @@ public class ItemProtocol { return this.getOpcFloatValue(item_y_position); } - public float getTo_length1() { - return this.getOpcFloatValue(item_to_length1); - } - public float getTo_length2() { - return this.getOpcFloatValue(item_to_length2); - } Boolean isonline; Boolean isError; @@ -190,6 +169,7 @@ public class ItemProtocol { } + public static List getReadableItemDtos() { ArrayList list = new ArrayList<>(); list.add(new ItemDto(item_heartbeat, "心跳", "DB11.B0")); @@ -209,15 +189,11 @@ public class ItemProtocol { list.add(new ItemDto(item_to_command, "下发命令", "DB12.W0")); list.add(new ItemDto(item_to_onset, "下发起始站", "DB12.W2")); list.add(new ItemDto(item_to_target, "下发目标站", "DB12.W4")); - list.add(new ItemDto(item_to_barcode, "下发气涨轴条码", "DB12.W4")); + list.add(new ItemDto(item_to_barcode, "下发气涨轴条码", "DB12.String602.60")); list.add(new ItemDto(item_to_task, "下发任务号", "DB12.D6")); list.add(new ItemDto(item_to_pull, "是否拔轴", "DB12.W8")); list.add(new ItemDto(item_to_sleeve, "是否套轴", "DB12.W10")); - list.add(new ItemDto(item_to_size, "尺寸", "DB12.W12")); - list.add(new ItemDto(item_to_version, "代数", "DB12.W14")); - list.add(new ItemDto(item_to_qty, "子卷数量", "DB12.W16")); - list.add(new ItemDto(item_to_length1, "子卷1长度", "DB12.W18")); - list.add(new ItemDto(item_to_length2, "子卷2长度", "DB12.W20")); + list.add(new ItemDto(item_to_size, "气涨轴尺寸", "DB12.W12")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/PullHeadManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/PullHeadManipulatorDeviceDriver.java index a5ea432ae..1dfafe494 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/PullHeadManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/PullHeadManipulatorDeviceDriver.java @@ -68,64 +68,54 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp //工作模式 int mode = 0; - int last_mode = 0; + int lastMode = 0; //光电信号 int move = 0; - int last_move = 0; + int lastMove = 0; //动作信号 int action = 0; - int last_action = 0; + int lastAction = 0; //行走列 - int walk_y = 0; - int last_walk_y = 0; + int walkY = 0; + int lastWalkY = 0; //报警信号 int error = 0; - int last_error = 0; + int lastError = 0; //任务号 int task = 0; - int last_task = 0; + int lastTask = 0; // x坐标 - float x_position = 0; - float last_x_position = 0; + float xPosition = 0; + float lastXPosition = 0; // y坐标 - float y_position = 0; - float last_y_position = 0; + float yPosition = 0; + float lastYPosition = 0; int heartbeat = 0; - int last_heartbeat = 0; - int to_command = 0; - int last_to_command = 0; + int lastHeartbeat = 0; + int toCommand = 0; + int lastToCommand = 0; - int to_target = 0; - int last_to_target = 0; + int toTarget = 0; + int lastToTarget = 0; - int to_task = 0; - int last_to_task = 0; + int toTask = 0; + int lastToTask = 0; - int to_onset = 0; - int last_to_onset = 0; + int toOnset = 0; + int lastToOnset = 0; - int to_pull = 0; - int last_to_pull = 0; + int toPull = 0; + int lastToPull = 0; - int to_sleeve = 0; - int last_to_sleeve = 0; + int toSleeve = 0; + int lastToSleeve = 0; - int to_size = 0; - int last_to_size = 0; + int toSize = 0; + int lastToSize = 0; - int to_version = 0; - int last_to_version = 0; - - int to_qty = 0; - int last_to_qty = 0; - - // 子卷1长度 - float to_length1 = 0; - float last_to_length1 = 0; - // y坐标 - float to_length2 = 0; - float last_to_length2 = 0; + String toBarcode = null; + String lastToBarcode = null; @@ -179,89 +169,73 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp mode = this.itemProtocol.getMode(); move = this.itemProtocol.getMove(); action = this.itemProtocol.getAction(); - walk_y = this.itemProtocol.getWalk_y(); + walkY = this.itemProtocol.getWalk_y(); error = this.itemProtocol.getError(); task = this.itemProtocol.getTask(); heartbeat = this.itemProtocol.getHeartbeat(); - to_command = this.itemProtocol.getTo_command(); - to_target = this.itemProtocol.getTo_target(); - to_task = this.itemProtocol.getTo_task(); - to_pull = this.itemProtocol.getTo_pull(); - to_sleeve = this.itemProtocol.getTo_sleeve(); - to_size = this.itemProtocol.getTo_size(); - to_qty = this.itemProtocol.getTo_qty(); - to_version = this.itemProtocol.getTo_version(); - to_length1 = this.itemProtocol.getTo_length1(); - to_length2 = this.itemProtocol.getTo_length2(); - to_onset = this.itemProtocol.getTo_onset(); - x_position = this.itemProtocol.getX_position(); - y_position = this.itemProtocol.getY_position(); + toCommand = this.itemProtocol.getTo_command(); + toTarget = this.itemProtocol.getTo_target(); + toTask = this.itemProtocol.getTo_task(); + toPull = this.itemProtocol.getTo_pull(); + toSleeve = this.itemProtocol.getTo_sleeve(); + toSize = this.itemProtocol.getTo_size(); + toOnset = this.itemProtocol.getTo_onset(); + xPosition = this.itemProtocol.getX_position(); + yPosition = this.itemProtocol.getY_position(); - if (to_onset != last_to_onset) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_onset:" + last_to_onset + "->" + to_onset); + if (toOnset != lastToOnset) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_onset:" + lastToOnset + "->" + toOnset); } - if (to_command != last_to_command) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); + if (toCommand != lastToCommand) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + lastToCommand + "->" + toCommand); } - if (to_target != last_to_target) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + last_to_target + "->" + to_target); + if (toTarget != lastToTarget) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + lastToTarget + "->" + toTarget); } - if (to_task != last_to_task) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task); + if (toTask != lastToTask) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + lastToTask + "->" + toTask); } - if (to_pull != last_to_pull) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_pull:" + last_to_pull + "->" + to_pull); + if (toPull != lastToPull) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_pull:" + lastToPull + "->" + toPull); } - if (to_sleeve != last_to_sleeve) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_sleeve:" + last_to_sleeve + "->" + to_sleeve); + if (toSleeve != lastToSleeve) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_sleeve:" + lastToSleeve + "->" + toSleeve); } - if (to_size != last_to_size) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_size:" + last_to_size + "->" + to_size); + if (toSize != lastToSize) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_size:" + lastToSize + "->" + toSize); } - if (to_version != last_to_version) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_version:" + last_to_version + "->" + to_version); - } - if (to_qty != last_to_qty) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_qty:" + last_to_qty + "->" + to_qty); - } - if (to_length1 != last_to_length1) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_length1:" + last_to_length1 + "->" + to_length1); - } - if (to_length2 != last_to_length2) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_length2:" + last_to_length2 + "->" + to_length2); - } - if (mode != last_mode) { + if (mode != lastMode) { requireSucess = false; logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + lastMode + "->" + mode); } - if (move != last_move) { + if (move != lastMove) { logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + lastMove + "->" + move); } - if (action != last_action) { + if (action != lastAction) { logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + lastAction + "->" + action); } - if (error != last_error) { + if (error != lastError) { logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + lastError + "->" + error); } - if (walk_y != last_walk_y) { - logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(walk_y)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + last_walk_y + "->" + walk_y); + if (walkY != lastWalkY) { + logServer.deviceItemValue(this.device_code, "walkY", String.valueOf(walkY)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + lastWalkY + "->" + walkY); } - if (task != last_task) { + if (task != lastTask) { logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); + logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + lastTask + "->" + task); } - if (x_position != last_x_position) { - logServer.deviceItemValue(this.device_code, "x_position", String.valueOf(x_position)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号x_position:" + last_x_position + "->" + x_position); + if (xPosition != lastXPosition) { + logServer.deviceItemValue(this.device_code, "x_position", String.valueOf(xPosition)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号x_position:" + lastXPosition + "->" + xPosition); } - if (y_position != last_y_position) { - logServer.deviceItemValue(this.device_code, "y_position", String.valueOf(y_position)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号y_position:" + last_y_position + "->" + y_position); + if (yPosition != lastYPosition) { + logServer.deviceItemValue(this.device_code, "y_position", String.valueOf(yPosition)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号y_position:" + lastYPosition + "->" + yPosition); } // 更新指令状态 @@ -289,14 +263,24 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp //任务完成 if (mode == 3 && action == 4 && move == 0 && task > 0) { - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex())) { + Instruction inst = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst != null) { + if (StrUtil.equals(inst.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex())) { try { - finish_instruction(inst2); + TaskDto dto = taskserver.findByCode(inst.getTask_code()); Map map = new LinkedHashMap<>(); + if (ObjectUtil.isNotEmpty(dto)){ + String interaction_json = dto.getInteraction_json(); + JSONObject jsonObject = (JSONObject) JSONObject.toJSON(interaction_json); + map.put("to_pull", jsonObject.getString("is_pulling")); + map.put("is_bushing", jsonObject.getString("is_bushing")); + map.put("to_size", jsonObject.getString("size")); + map.put("to_barcode", jsonObject.getString("")); + map.put("to_command", "5"); + } map.put("to_command", "5"); this.writing(map); + finish_instruction(inst); } catch (Exception e) { e.printStackTrace(); } @@ -315,11 +299,11 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp if (mode == 0) { this.setIsonline(false); - message = "未联机"; + message = "universal_off-line"; //有报警 } else if (error != 0) { this.setIserror(true); - message = "有报警"; + message = "universal_message3"; //无报警 } else { this.setIsonline(true); @@ -361,33 +345,27 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp } } - last_mode = mode; - last_move = move; - last_action = action; - last_walk_y = walk_y; - last_error = error; - last_task = task; - last_heartbeat = heartbeat; - last_to_task = to_task; - last_to_command = to_command; - last_to_target = to_target; - last_to_onset = to_onset; - last_x_position = x_position; - last_y_position = y_position; - last_to_pull = to_pull; - last_to_sleeve = to_sleeve; - last_to_size = to_size; - last_to_version = to_version; - last_to_qty = to_qty; - last_to_length1 = to_length1; - last_to_length2 = to_length2; + lastMode = mode; + lastMove = move; + lastAction = action; + lastWalkY = walkY; + lastError = error; + lastTask = task; + lastHeartbeat = heartbeat; + lastToTask = toTask; + lastToCommand = toCommand; + lastToTarget = toTarget; + lastToOnset = toOnset; + lastXPosition = xPosition; + lastYPosition = yPosition; + lastToPull = toPull; + lastToSleeve = toSleeve; + lastToSize = toSize; + lastToBarcode = toBarcode; } /** - * // * 申请任务 - * // * - * // * @param - * // + * 申请任务 */ public synchronized boolean applyTask() { Date date = new Date(); @@ -409,13 +387,13 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp taskDtos = this.sortTask(taskDtos); TaskDto taskDto = taskDtos.get(0); Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code()); - String start_device_code = instruction.getStart_device_code(); - String next_device_code = instruction.getNext_device_code(); + String startCode = instruction.getStart_device_code(); + String nextCode = instruction.getNext_device_code(); instruction.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); instruction.setUpdate_time(DateUtil.now()); instructionService.update(instruction); - Device startDevice = deviceAppService.findDeviceByCode(start_device_code); - Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); + Device startDevice = deviceAppService.findDeviceByCode(startCode); + Device nextDevice = deviceAppService.findDeviceByCode(nextCode); if (ObjectUtil.isEmpty(startDevice.getExtraValue().get("address"))) { notCreateInstMessage = "universal_notCreateInstMessage1"; throw new BadRequestException("设备:" + startDevice.getDevice_code() + "未设置电气调度号!"); @@ -424,13 +402,13 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp notCreateInstMessage = "universal_notCreateInstMessage1"; throw new BadRequestException("设备:" + nextDevice.getDevice_code() + "未设置电气调度号!"); } - String start_addr = startDevice.getExtraValue().get("address").toString(); - String next_addr = nextDevice.getExtraValue().get("address").toString(); + String startAddr = startDevice.getExtraValue().get("address").toString(); + String nextAddr = nextDevice.getExtraValue().get("address").toString(); Map map = new LinkedHashMap<>(); map.put("to_command", CommonFinalParam.ONE); - map.put("to_onset", start_addr); + map.put("to_onset", startAddr); map.put("to_task", instruction.getInstruction_code()); - map.put("to_target", next_addr); + map.put("to_target", nextAddr); this.writing(map); this.setRequireSucess(true); return true; @@ -447,35 +425,35 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp } } if (!ObjectUtil.isEmpty(task)) { - String taskid = task.getTask_id(); - String taskcode = task.getTask_code(); - String vehiclecode = task.getVehicle_code(); + String taskId = task.getTask_id(); + String taskCode = task.getTask_code(); + String vehicleCode = task.getVehicle_code(); String priority = task.getPriority(); - String start_point_code = task.getStart_point_code(); - String start_device_code = task.getStart_device_code(); - String route_plan_code = task.getRoute_plan_code(); - String next_point_code = task.getNext_point_code(); - String next_device_code = task.getNext_device_code(); + String startPointCode = task.getStart_point_code(); + String startDeviceCode = task.getStart_device_code(); + String routePlanCode = task.getRoute_plan_code(); + String nextPointCode = task.getNext_point_code(); + String nextDeviceCode = task.getNext_device_code(); Instruction instdto = new Instruction(); instdto.setInstruction_id(IdUtil.simpleUUID()); - instdto.setRoute_plan_code(route_plan_code); + instdto.setRoute_plan_code(routePlanCode); instdto.setRemark(task.getRemark()); instdto.setMaterial(task.getMaterial()); instdto.setQuantity(task.getQuantity()); - instdto.setTask_id(taskid); - instdto.setTask_code(taskcode); - instdto.setVehicle_code(vehiclecode); + instdto.setTask_id(taskId); + instdto.setTask_code(taskCode); + instdto.setVehicle_code(vehicleCode); String now = DateUtil.now(); instdto.setCreate_time(now); instdto.setCreate_by(SecurityUtils.getCurrentNickName()); - instdto.setStart_device_code(start_device_code); - instdto.setNext_device_code(next_device_code); - instdto.setStart_point_code(start_point_code); - instdto.setNext_point_code(next_point_code); + instdto.setStart_device_code(startDeviceCode); + instdto.setNext_device_code(nextDeviceCode); + instdto.setStart_point_code(startPointCode); + instdto.setNext_point_code(nextPointCode); instdto.setPriority(priority); instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); - instdto.setExecute_device_code(start_point_code); + instdto.setExecute_device_code(startPointCode); try { instructionService.create(instdto); @@ -502,13 +480,13 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp throw new BadRequestException(LangProcess.msg("device_checkAdd", nextDevice.getDevice_code())); } - String start_addr = startDevice.getExtraValue().get("address").toString(); - String next_addr = nextDevice.getExtraValue().get("address").toString(); + String startAddr = startDevice.getExtraValue().get("address").toString(); + String nextAddr = nextDevice.getExtraValue().get("address").toString(); Map map = new LinkedHashMap<>(); map.put("to_command", CommonFinalParam.ONE); - map.put("to_onset", start_addr); + map.put("to_onset", startAddr); map.put("to_task", instdto.getInstruction_code()); - map.put("to_target", next_addr); + map.put("to_target", nextAddr); this.writing(map); this.setRequireSucess(true); notCreateInstMessage = ""; @@ -612,7 +590,7 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp jo.put("move", move); jo.put("action", action); jo.put("task", task); - jo.put("walk_y", walk_y); + jo.put("walk_y", walkY); jo.put("isOnline", this.getIsonline()); jo.put("error", this.getError()); jo.put("isError", this.getIserror()); @@ -622,8 +600,8 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp jo.put("feedMessage", LangProcess.msg(feedMessage)); jo.put("driver_type", "siemens_conveyor"); jo.put("is_click", true); - jo.put("x", x_position); - jo.put("y", y_position); + jo.put("x", xPosition); + jo.put("y", yPosition); return jo; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/ItemProtocol.java index 4d5714a83..461d69f91 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/ItemProtocol.java @@ -98,7 +98,7 @@ public class ItemProtocol { public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_to_command, "下发命令", "DB20.W0")); - list.add(new ItemDto(item_to_error, "下发命令", "DB20.W1")); + list.add(new ItemDto(item_to_error, "下发故障代码", "DB20.W1")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/WasteFoilWeighingStationDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/WasteFoilWeighingStationDriver.java index 09201cac7..1275fbbe1 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/WasteFoilWeighingStationDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/WasteFoilWeighingStationDriver.java @@ -155,13 +155,13 @@ public class WasteFoilWeighingStationDriver extends AbstractOpcDeviceDriver impl case 6: // 称重完成 if (move > 0 && !requireSucess) { - weightSuccess(); +// weightSuccess(); } break; case 7: // 称重确认完成 if (move > 0 && !requireSucess) { - weightConfirmSuccess(); +// weightConfirmSuccess(); } break; case 8: diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java index 7abf5847f..bb907e351 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java @@ -6,16 +6,7 @@ import lombok.Data; public class ApplyManipulatorActionRequest extends BaseRequest { private String vehicle_code; private String device_code; - /** - * 1- - * 2-反馈新放货点 - * 3-反馈新取货点 - * 4-反馈二次放货点 - * 6-套轴申请 - * 7-套轴完成 - * 8-拔轴完成 - */ - private String type; + /** * 行架任务号 @@ -35,15 +26,10 @@ public class ApplyManipulatorActionRequest extends BaseRequest { /** * 位置 1-左 2-右 */ - private String location; + private String direction; /** - * 左子卷号 + * 气涨轴编号 */ - private String left; - - /** - * 右子卷号 - */ - private String right; + private String qzz_no; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java index 09bf24dd4..59ed81914 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java @@ -8,13 +8,4 @@ import java.util.Map; @Data public class ApplyManipulatorActionResponse extends BaseResponse{ private Map data = new HashMap(); - /** - * 子卷号 - */ - private String barcode; - - /** - * 终点 - */ - private String next_point; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java index 40e7e628c..8554c014d 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java @@ -9,4 +9,5 @@ import java.util.Map; public class ApplyPlugPullSitResponse extends BaseResponse { private Map data = new HashMap(); + } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java index 3c7f2c67e..52c466b68 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java @@ -195,5 +195,14 @@ public class CreateTaskRequest extends BaseRequest { private String bushing_num; private String paper_array; + + /** + * 任务扩展字段 + */ private JSONObject interaction_json; + + /** + * 是否拔轴 0/1 + */ + private String is_pulling; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java index 7a843672b..ec27c8d44 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java @@ -107,6 +107,6 @@ public interface WmsToAcsService { * @param jsonObject * @return */ - PutWeightActionResponse putWeightAction(String jsonObject) throws Exception; + Map putWeightAction(String jsonObject) throws Exception; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 282c2a579..a387ec0c4 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -82,7 +82,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { public CreateTaskResponse crateTask(String param) { try { MDC.put(log_file_type, log_type); - log.info("crateTask-----输入参数{}", param); + log.info("crateTask-----输入参数{}", param); JSONArray datas = JSONArray.parseArray(param); CreateTaskResponse response = new CreateTaskResponse(); // ParamService paramService = SpringContextHolder.getBean(ParamService.class); @@ -114,6 +114,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { String truss_type = request.getTruss_type(); String empty_site = request.getEmpty_site(); String is_bushing = request.getIs_bushing(); + String is_pulling = request.getIs_pulling(); String size = request.getSize(); String version = request.getVersion(); String bushing_num = request.getBushing_num(); @@ -336,6 +337,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("truss_type", JSONUtil.toJsonStr(truss_type)); jo.put("empty_site", JSONUtil.toJsonStr(empty_site)); jo.put("is_bushing", JSONUtil.toJsonStr(is_bushing)); + jo.put("is_pulling", JSONUtil.toJsonStr(is_pulling)); jo.put("size", JSONUtil.toJsonStr(size)); jo.put("version", JSONUtil.toJsonStr(version)); jo.put("bushing_num", JSONUtil.toJsonStr(bushing_num)); @@ -464,19 +466,16 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { } @Override - public PutWeightActionResponse putWeightAction(String jsonObject) throws Exception { + public Map putWeightAction(String jsonObject) throws Exception { try { MDC.put(log_file_type, log_type); log.info("putWeightAction--------------:输入参数" + jsonObject); JSONArray datas = JSONArray.parseArray(jsonObject); - PutWeightActionResponse response = new PutWeightActionResponse(); - JSONArray errArr = new JSONArray(); + JSONObject jo = new JSONObject(); for (int i = 0; i < datas.size(); i++) { - String data = datas.get(i).toString(); - PutWeightActionRequest request = JsonUtl.format(data, PutWeightActionRequest.class); - String device_code = request.getDevice_code(); - String code = request.getCode(); - String value = request.getValue(); + JSONObject data = (JSONObject) datas.get(i); + String device_code = data.getString("device_code"); + String type = data.getString("type"); Device device = deviceAppService.findDeviceByCode(device_code); if (ObjectUtil.isEmpty(device)) { throw new Exception("未找到对应设备:" + device_code); @@ -484,21 +483,35 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { WasteFoilWeighingStationDriver wasteFoilWeighingStationDriver; if (device.getDeviceDriver() instanceof WasteFoilWeighingStationDriver) { wasteFoilWeighingStationDriver = (WasteFoilWeighingStationDriver) device.getDeviceDriver(); - wasteFoilWeighingStationDriver.writing(code, value); try { - Thread.sleep(1000); //休眠1秒 + //称重完成 + if (StrUtil.equals("1", type)) { + Thread.sleep(1000); //休眠1秒 + if (wasteFoilWeighingStationDriver.getMode() == 6) { + jo.put("currentWeight", wasteFoilWeighingStationDriver.getWeight());//当前重量 + jo.put("lastWeight", wasteFoilWeighingStationDriver.getGap_weight());//上一次重量 + jo.put("weightGap", wasteFoilWeighingStationDriver.getOld_weight());//重量差 + wasteFoilWeighingStationDriver.writing("to_command", "6"); + } + } + //称重确认信号 + else if (StrUtil.equals("2", type)) { + Thread.sleep(1000); //休眠1秒 + if (wasteFoilWeighingStationDriver.getMode() == 7) { + wasteFoilWeighingStationDriver.writing("to_command", "8"); + } + } } catch (InterruptedException e) { e.printStackTrace(); } } } - response.setCode(200); - response.setMessage("success"); - LuceneLogDto luceneLogDto = new LuceneLogDto("putWeightAction", String.valueOf(response.getCode()), - jsonObject, String.valueOf(response), "LMS下发动作"); - luceneExecuteLogService.interfaceExecuteLog(luceneLogDto); - log.info("putWeightAction--------------:输出参数:" + response); - return response; + JSONObject resultJson = new JSONObject(); + resultJson.put("status", HttpStatus.OK.value()); + resultJson.put("message", "操作成功"); + resultJson.put("data", jo); + log.info("putWeightAction--------------:输出参数" + resultJson.toString()); + return resultJson; } finally { MDC.remove(log_file_type); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java index 3b0d69177..96384d487 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -250,6 +250,14 @@ public interface InstructionService extends CommonService { void finishAndCreateNextInst(Instruction dto) throws Exception; + /** + * 完成并创建指令 + * + * @param + */ + void finishAndCreateHXInst(Instruction dto) throws Exception; + + /** * 取消指令 * diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index b542529e8..0c4f4a588 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -367,6 +367,13 @@ public class InstructionServiceImpl extends CommonServiceImpl{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemId, his, value, sb}); +// log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemId, his, value, sb}); + if (!itemDto.getItem_code().endsWith("heartbeat") && !itemDto.getItem_code().endsWith("time")) { + // 存在上次点位值为null情况 则不记录日志 + LuceneLogDto luceneLogDto = new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".") + 1), + String.valueOf(itemDto.getHis_item_value()), String.valueOf(itemDto.getItem_value())); + luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc()); + log.info("{}", JSON.toJSONString(luceneLogDto)); + } // this.businessLogger.setResource(itemDto.getDevice_code(), itemDto.getDevice_name()).log("信号{}变更从{}->{};信号快照:{}", new Object[]{itemId, his, value, sb}); } else { // if(his instanceof int[]){ @@ -437,7 +447,13 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC // log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemId, his, value}); // } - log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemId, his, value}); +// log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemId, his, value}); + if (!itemDto.getItem_code().endsWith("heartbeat") && !itemDto.getItem_code().endsWith("time")) { + LuceneLogDto luceneLogDto = new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".") + 1), + String.valueOf(itemDto.getHis_item_value()), String.valueOf(itemDto.getItem_value())); + luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc()); + log.info("{}", JSON.toJSONString(luceneLogDto)); + } // this.businessLogger.setResource(itemDto.getDevice_code(), itemDto.getDevice_name()).log("信号{}变更从{}->{}", new Object[]{itemId, his, value}); } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index aba3dfdbc..34855a6b5 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -307,6 +307,7 @@ public class TaskDto implements Serializable { * 交互字段 */ private String interaction_json; + private JSONObject interactionJson; /** @@ -338,4 +339,9 @@ public class TaskDto implements Serializable { * 扩展属性 */ String params2; + + /** + * 是否拔轴 0/1 + */ + private String is_pulling; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 55d4b3888..79097032c 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -112,6 +112,11 @@ public class TaskServiceImpl extends CommonServiceImpl impleme */ private CopyOnWriteArrayList tasks = new CopyOnWriteArrayList<>(); + /** + * 烘箱任务类型 + */ + private static final String TASK_TYPE = "8"; + @Override public PageInfo queryAll(TaskQueryParam query, Pageable pageable) { @@ -441,7 +446,8 @@ public class TaskServiceImpl extends CommonServiceImpl impleme @Override public List queryTaskByDeviceCodeAndStatus(String device_code) { - return Optional + + List collect = Optional .ofNullable(this.tasks) .orElse(new CopyOnWriteArrayList<>()) .stream() @@ -449,6 +455,22 @@ public class TaskServiceImpl extends CommonServiceImpl impleme && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) .collect(Collectors.toList()); + if(CollUtil.isEmpty(collect)){ + tasks.forEach( + task ->{ + if(TASK_TYPE.equals(task.getTask_type()) && StrUtil.isNotEmpty(task.getPut_device_code())){ + Instruction instruction = instructionService.findByDeviceCodeFromCache(task.getNext_device_code()); + if (ObjectUtil.isNotEmpty(instruction)) { + if (StrUtil.equals(instruction.getStart_device_code(), device_code)) { + collect.add(task); + } + } + } + } + ); + } + return collect; + } @Override @@ -528,7 +550,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String start_device_code = dto.getStart_device_code(); String next_device_code = dto.getNext_device_code(); String route_plan_code = dto.getRoute_plan_code(); - dto.setCreate_by(currentUsername); + dto.setCreate_by(StrUtil.isNotEmpty(currentUsername) ? currentUsername : "LMS"); dto.setUpdate_by(currentUsername); dto.setUpdate_time(now); dto.setCreate_time(now); diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/language/monitor/universal/universal_zh_CN.properties b/acs2/nladmin-system/nlsso-server/src/main/resources/language/monitor/universal/universal_zh_CN.properties index 6dcc8c05e..3a88ce9d8 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/language/monitor/universal/universal_zh_CN.properties +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/language/monitor/universal/universal_zh_CN.properties @@ -9,7 +9,7 @@ universal_delivery=\u53D6\u8D27\u4E2D universal_completed=\u53D6\u8D27\u5B8C\u6210 universal_releasing=\u653E\u8D27\u4E2D universal_releasing_completed=\u653E\u8D27\u5B8C\u6210 -universal_remark1=\u672A\u67E5\u627E\u4EFB\u52A1\u539F\u56E0\u4E3A\uFF1A +universal_remark1=\u672A\u67E5\u627E\u4EFB\u52A1\u539F\u56E0\u4E3A universal_remark2=\u5DE5\u4F5C\u6A21\u5F0F(mode)\u4E0D\u662F\u5F85\u673A\u72B6\u6001 universal_remark3=\u5149\u7535\u4FE1\u53F7(move)\u4E3A\u6709\u8D27\u72B6\u6001 universal_remark4=\u5F53\u524D\u4E0A\u62A5\u4EFB\u52A1\u53F7(task)\u5E94\u8BE5\u4E3A0 diff --git a/acs2/nladmin-ui/src/views/acs/device/driver/rgv.vue b/acs2/nladmin-ui/src/views/acs/device/driver/rgv.vue index b2c75978e..410be882d 100644 --- a/acs2/nladmin-ui/src/views/acs/device/driver/rgv.vue +++ b/acs2/nladmin-ui/src/views/acs/device/driver/rgv.vue @@ -188,6 +188,23 @@ + + + + + + + @@ -358,6 +375,13 @@ export default { label: '2楼' }], address: '', + directions: [{ + key: '1', + label: '左边' + }, { + key: '2', + label: '右边' + }], configLoading: false, dataOpcservers: [], dataOpcPlcs: [], diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/common/base/BaseDTO.java b/lms/nladmin-system/src/main/java/org/nl/modules/common/base/BaseDTO.java index 72c7e7fbb..6e8be07c4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/common/base/BaseDTO.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/common/base/BaseDTO.java @@ -19,9 +19,9 @@ public class BaseDTO implements Serializable { private String updatedBy; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date createTime; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date updateTime; } diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/common/base/BaseEntity.java b/lms/nladmin-system/src/main/java/org/nl/modules/common/base/BaseEntity.java index eb2e1081d..71c944dff 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/common/base/BaseEntity.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/common/base/BaseEntity.java @@ -16,6 +16,7 @@ package org.nl.modules.common.base; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.CreationTimestamp; @@ -59,7 +60,7 @@ public class BaseEntity implements Serializable { @UpdateTimestamp @Column(name = "update_time") - + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Timestamp updateTime; /* 分组校验 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructattrController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructattrController.java index 30e651073..8419eb78f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructattrController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructattrController.java @@ -94,4 +94,18 @@ public class StructattrController { public ResponseEntity unLockPoint(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(structattrService.unLockPoint(whereJson), HttpStatus.OK); } + + @PostMapping("/oneCreate") + @Log("一键生成货位") + public ResponseEntity oneCreate(@RequestBody JSONObject whereJson) { + structattrService.oneCreate(whereJson); + return new ResponseEntity<>( HttpStatus.OK); + } + + @PostMapping("/blurQuery") + @Log("校验前缀是否可用") + public ResponseEntity blurQuery(@RequestBody JSONObject whereJson) { + structattrService.blurQuery(whereJson); + return new ResponseEntity<>( HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructattrService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructattrService.java index aa54af38d..6e8d4296c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructattrService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructattrService.java @@ -98,4 +98,23 @@ public interface StructattrService { * @return */ JSONObject unLockPoint(JSONObject whereJson); + + /** + * 一键生成货位 + * @param whereJson { + * stor_id: 仓库id + * sect_id: 库区id + * prefix: 仓位前缀 + * num: 生成数量 + * } + */ + void oneCreate(JSONObject whereJson); + + /** + * 校验前缀是否可用 + * @param whereJson { + * prefix: 前缀 + * } + */ + void blurQuery(JSONObject whereJson); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java index 8206d68ac..5a22b65b4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java @@ -98,7 +98,9 @@ public class StorattrServiceImpl implements StorattrService { dto.setCreate_time(now); //TODO - dto.setSyscompanyid(18L); + dto.setSyscompanyid(9L); + dto.setSysdeptid(9L); + dto.setSysownerid(9L); WQLObject wo = WQLObject.getWQLObject("st_ivt_bsrealstorattr"); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java index 1f0446d24..e7bd880af 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java @@ -513,4 +513,160 @@ public class StructattrServiceImpl implements StructattrService { return null; } + @Override + @Transactional(rollbackFor = Exception.class) + public void oneCreate(JSONObject whereJson) { + // 仓位表 + WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); + // 库区表 + WQLObject sectTab = WQLObject.getWQLObject("st_ivt_sectattr"); + // 点位表 + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + // 仓库表 + WQLObject storTab = WQLObject.getWQLObject("st_ivt_bsrealstorattr"); + + // 判断库区是否是虚拟区 + JSONObject jsonSect = sectTab.query("sect_id = '" + whereJson.getString("sect_id") + "'").uniqueResult(0); + + if (!jsonSect.getString("sect_type_attr").equals("09")) { + throw new BadRequestException("所选库区必须是虚拟区!"); + } + + /* + * 判断此库区是否已经生成仓位 + */ + JSONObject jsonAttr = attrTab.query("sect_id = '" + whereJson.getString("sect_id") + "' order by struct_code DESC").uniqueResult(0); + + // 生成数量 + int createNum = whereJson.getIntValue("num"); + // 开始生成数 + int createNum_start = 1; + // 前缀 + String prefix = whereJson.getString("prefix"); + + if (ObjectUtil.isNotEmpty(jsonAttr)) { + String struct_code = jsonAttr.getString("struct_code"); + + // 第一个-的位置 + int firstIndex = struct_code.indexOf("-"); + // 第二个-的位置 + int secondIndex = struct_code.substring(firstIndex + 1).indexOf("-") + firstIndex; + // 最大的仓位数 + String result = struct_code.substring(firstIndex + 1, secondIndex +1); + + createNum += Integer.parseInt(result); + + createNum_start += Integer.parseInt(result); + + prefix = struct_code.substring(0, firstIndex); + } + + /* + * 生成货位 + */ + String now = DateUtil.now(); + for (int i = createNum_start; i <= createNum; i++) { + + JSONObject json = new JSONObject(); + json.put("struct_id", IdUtil.getSnowflake(1,1).nextId()); + + if (i < 10) { + json.put("struct_code", prefix + "-"+"000"+i+"-01"); + json.put("struct_name", prefix + "排-"+"000"+i+"列-01层"); + + }else if (i >= 10 && i < 100) { + json.put("struct_code", prefix + "-"+"00"+i+"-01"); + json.put("struct_name", prefix + "排-"+"00"+i+"列-01层"); + }else if (i >= 100 && i < 1000) { + json.put("struct_code", prefix + "-"+"0"+i+"-01"); + json.put("struct_name", prefix + "排-"+"0"+i+"列-01层"); + } else { + json.put("struct_code", prefix + "-"+i+"-01"); + json.put("struct_name", prefix + "排-"+i+"列-01层"); + } + JSONObject jsonObject = storTab.query("stor_id = '"+whereJson.getString("stor_id")+"'").uniqueResult(0); + JSONObject jsonObjec2 = sectTab.query("stor_id = '"+whereJson.getString("stor_id")+"' and sect_id = '"+whereJson.getString("sect_id")+"'").uniqueResult(0); + + // 新增仓位 + json.put("simple_name", json.getString("struct_name")); + json.put("sect_id", jsonObjec2.getString("sect_id")); + json.put("sect_code", jsonObjec2.getString("sect_code")); + json.put("sect_name", jsonObjec2.getString("sect_name")); + json.put("stor_id", jsonObject.getString("stor_id")); + json.put("stor_code", jsonObject.getString("stor_code")); + json.put("stor_name", jsonObject.getString("stor_name")); + json.put("lock_type", "1"); + json.put("row_num", 1); + json.put("col_num", i); + json.put("layer_num", 1); + json.put("block_num", 1); + json.put("in_order_seq", i); + json.put("out_order_seq", i); + json.put("in_empty_seq", i); + json.put("out_empty_seq", i); + json.put("create_id", "1"); + json.put("create_name", "管理员"); + json.put("create_time", now); + json.put("material_height_type", 1); + attrTab.insert(json); + + // 新增点位 + JSONObject jsonPoint = new JSONObject(); + jsonPoint.put("point_id",IdUtil.getSnowflake(1,1).nextId()); + jsonPoint.put("point_code", json.getString("struct_code")); + jsonPoint.put("point_name", json.getString("struct_name")); + jsonPoint.put("region_id", json.getString("sect_id")); + jsonPoint.put("region_code", json.getString("sect_code")); + jsonPoint.put("region_name", json.getString("sect_name")); + jsonPoint.put("point_type", "2"); + jsonPoint.put("point_status", "1"); + jsonPoint.put("lock_type", "1"); + jsonPoint.put("vehicle_max_qty", 0); + jsonPoint.put("vehicle_qty", 0); + jsonPoint.put("block_num", 1); + jsonPoint.put("row_num", 1); + jsonPoint.put("col_num", 1); + jsonPoint.put("layer_num", 1); + jsonPoint.put("in_order_seq", 0); + jsonPoint.put("out_order_seq", 0); + jsonPoint.put("in_empty_seq", 0); + jsonPoint.put("out_empty_seq", 0); + jsonPoint.put("is_have_workder", "0"); + jsonPoint.put("is_used", "1"); + jsonPoint.put("source_id", json.get("struct_id")); + jsonPoint.put("is_delete", "0"); + jsonPoint.put("create_id", "1"); + jsonPoint.put("create_name", "管理员"); + jsonPoint.put("create_time", now); + pointTab.insert(jsonPoint); + } + + } + + @Override + public void blurQuery(JSONObject whereJson) { + // 仓位表 + WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); + + /* + * 判断前缀是否存在 + */ + List attrList = attrTab.query("1 = 1").getResultJSONArray(0).toJavaList(JSONObject.class); + + // 截取第一个 - 之前的数据集合 + List subStringList = attrList.stream() + .filter(row -> row.getString("struct_code").contains("-")) + .map(row -> row.getString("struct_code").substring(0, row.getString("struct_code").indexOf("-"))) + .distinct() + .collect(Collectors.toList()); + + // 判断是否有相同的前缀 + boolean is_like = subStringList.stream() + .anyMatch(row -> row.equals(whereJson.getString("prefix"))); + + if (is_like) { + throw new BadRequestException("此前缀已存在,请更换!"); + } + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java index a37c84e7a..8f2d69d67 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java @@ -48,7 +48,6 @@ public class StructivtServiceImpl implements StructivtService { @Override public Map queryAll(Map whereJson, Pageable page, String[] product_area, String[] ivt_flag) { String material = MapUtil.getStr(whereJson, "material"); - //哈哈哈哈哈222 String struct = MapUtil.getStr(whereJson, "struct"); String stor_id = MapUtil.getStr(whereJson, "stor_id"); String sect_id = MapUtil.getStr(whereJson, "sect_id"); @@ -58,12 +57,14 @@ public class StructivtServiceImpl implements StructivtService { String sale_order_name = MapUtil.getStr(whereJson, "sale_order_name"); String ivt_status = MapUtil.getStr(whereJson, "ivt_status"); String is_virtual = MapUtil.getStr(whereJson, "is_virtual"); + String sub_type = MapUtil.getStr(whereJson, "sub_type"); JSONObject map = new JSONObject(); map.put("flag", "1"); map.put("stor_id", stor_id); map.put("sect_id", sect_id); map.put("ivt_status", ivt_status); map.put("is_virtual", is_virtual); + map.put("sub_type", sub_type); if (StrUtil.isNotEmpty(material)) { map.put("material", "%" + material + "%"); } @@ -220,11 +221,13 @@ public class StructivtServiceImpl implements StructivtService { String is_virtual = MapUtil.getStr(whereJson, "is_virtual"); String rein_flag = MapUtil.getStr(whereJson, "rein_flag"); String ivt_status = MapUtil.getStr(whereJson, "ivt_status"); + String sub_type = MapUtil.getStr(whereJson, "sub_type"); JSONObject map = new JSONObject(); map.put("flag", "2"); map.put("stor_id", stor_id); map.put("is_virtual", is_virtual); map.put("ivt_status", ivt_status); + map.put("sub_type", sub_type); if (StrUtil.isNotEmpty(material)) { map.put("material", "%" + material + "%"); } @@ -295,6 +298,14 @@ public class StructivtServiceImpl implements StructivtService { mp.put("业务员", json.getString("sales_owner")); mp.put("入库日期", json.getString("instorage_time")); mp.put("生产日期", json.getString("date_of_production")); + if ("1".equals(json.getString("sub_type"))) { + mp.put("子卷状态", "正常"); + } else if ("2".equals(json.getString("sub_type"))) { + mp.put("子卷状态", "临期"); + } else if ("3".equals(json.getString("sub_type"))) { + mp.put("子卷状态", "超期"); + } + mp.put("库龄", json.getString("stock_age")); mp.put("产品规格(幅宽)", String.format("%.0f", json.getDoubleValue("width"))); mp.put("产品厚度", json.getString("thickness")); mp.put("单位面积重量", json.getString("mass_per_unit_area")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql index 22a9c0cb7..f8df38c80 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql @@ -27,6 +27,7 @@ 输入.is_virtual TYPEAS s_string 输入.rein_flag TYPEAS f_string 输入.in_stor_id TYPEAS f_string + 输入.sub_type TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -73,7 +74,16 @@ case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS paper_type, case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_material when plan.paper_tube_or_FRP = '2' then plan.FRP_material end AS paper_code, case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then plan.FRP_description end AS paper_name, - sub.box_weight + sub.box_weight, + CASE + WHEN DATEDIFF( NOW(), sub.date_of_production ) > '60' + AND DATEDIFF( NOW(), sub.date_of_production ) <= '90' THEN '2' + WHEN DATEDIFF( NOW(), sub.date_of_production ) <= '90' THEN '1' + WHEN DATEDIFF( NOW(), sub.date_of_production ) > '90' THEN '3' + + END AS sub_type, + DATEDIFF( NOW(), sub.date_of_production ) AS stock_age + FROM ST_IVT_StructIvt ivt LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id @@ -134,6 +144,19 @@ attr.stor_id = 输入.stor_id ENDOPTION + OPTION 输入.sub_type = "1" + DATEDIFF( NOW(), sub.date_of_production ) <= '90' + ENDOPTION + + OPTION 输入.sub_type = "2" + DATEDIFF( NOW(), sub.date_of_production ) > '60' + AND DATEDIFF( NOW(), sub.date_of_production ) <= '90' + ENDOPTION + + OPTION 输入.sub_type = "3" + DATEDIFF( NOW(), sub.date_of_production ) > '90' + ENDOPTION + OPTION 输入.sect_id <> "" attr.sect_id = 输入.sect_id ENDOPTION @@ -205,7 +228,14 @@ case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then plan.FRP_description end AS paper_name, sub.thickness_request, sub.box_weight, - cust.sales_owner + cust.sales_owner, + CASE + WHEN DATEDIFF( NOW(), sub.date_of_production ) > '60' + AND DATEDIFF( NOW(), sub.date_of_production ) <= '90' THEN '2' + WHEN DATEDIFF( NOW(), sub.date_of_production ) <= '90' THEN '1' + WHEN DATEDIFF( NOW(), sub.date_of_production ) > '90' THEN '3' + END AS sub_type, + DATEDIFF( NOW(), ivt.instorage_time ) AS stock_age FROM ST_IVT_StructIvt ivt LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id @@ -249,6 +279,19 @@ ivt.pcsn like 输入.pcsn ENDOPTION + OPTION 输入.sub_type = "1" + DATEDIFF( NOW(), sub.date_of_production ) <= '90' + ENDOPTION + + OPTION 输入.sub_type = "2" + DATEDIFF( NOW(), sub.date_of_production ) > '60' + AND DATEDIFF( NOW(), sub.date_of_production ) <= '90' + ENDOPTION + + OPTION 输入.sub_type = "3" + DATEDIFF( NOW(), sub.date_of_production ) > '90' + ENDOPTION + OPTION 输入.sap_pcsn <> "" sub.sap_pcsn like 输入.sap_pcsn ENDOPTION diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index 422f1ef4b..2a54c742c 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls differ 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 f739b71f7..74efb63a3 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 @@ -433,7 +433,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } if (ObjectUtil.isEmpty(struct_jo)) { - throw new BadRequestException("未查询到可用的空载具!"); + throw new BadRequestException("未查询到可用的空载具或当前载具存在任务!!"); } JSONObject task_jo = new JSONObject(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java index 2f122ac1c..de53cbe50 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java @@ -142,7 +142,7 @@ public class OutServiceImpl implements OutService { } if (ObjectUtil.isEmpty(empty_vehicle)) { - throw new BadRequestException("未查询到可用的空载具!"); + throw new BadRequestException("未查询到可用的空载具或当前载具存在任务!!"); } JSONObject jo = new JSONObject(); @@ -226,7 +226,7 @@ public class OutServiceImpl implements OutService { .addParam("point_location", cut_ivt.getString("point_location")) .addParam("flag", "303").process().uniqueResult(0); if (ObjectUtil.isEmpty(empty_vehicle)) { - throw new BadRequestException("未查询到可用的空载具!"); + throw new BadRequestException("未查询到可用的空载具或当前载具存在任务!!"); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java index ec8915e17..b6755f333 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java @@ -66,7 +66,7 @@ public class ShippingServiceImpl implements ShippingService { .addParam("point_location", cut_jo.getString("point_location")) .addParam("flag", "302").process().uniqueResult(0); if (ObjectUtil.isEmpty(empty_vehicle)) { - throw new BadRequestException("未查询到可用的空载具!"); + throw new BadRequestException("未查询到可用的空载具或当前载具存在任务!!"); } //如果查询到给ACS下发一个输送线任务 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java index 1ad4e7fa0..58af578f5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java @@ -250,6 +250,8 @@ public class SubpackagerelationServiceImpl implements SubpackagerelationService mp.put("子卷的物性值2", json.getString("un_plan_product_property2")); mp.put("子卷的物性值3", json.getString("un_plan_product_property3")); mp.put("木箱料号", json.getString("box_type")); + mp.put("内控标准抗拉下限", json.getString("standard_limit")); + mp.put("生产实际抗拉值", json.getString("actual_value")); mp.put("长", json.getString("box_length")); mp.put("宽", json.getString("box_width")); mp.put("高", json.getString("box_high")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSaveIvtExcel.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSaveIvtExcel.java index e12f9f746..0f09a5ec6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSaveIvtExcel.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSaveIvtExcel.java @@ -82,21 +82,21 @@ public class AutoSaveIvtExcel { JSONObject dtl = resultJSONArray.getJSONObject(i); row_dtl.createCell(0).setCellValue(dtl.getString("stor_name")); row_dtl.createCell(1).setCellValue(dtl.getString("sect_name")); - row_dtl.createCell(3).setCellValue(dtl.getString("package_box_sn")); - row_dtl.createCell(4).setCellValue(dtl.getString("material_name")); - row_dtl.createCell(5).setCellValue(dtl.getString("pcsn")); - row_dtl.createCell(6).setCellValue(dtl.getString("customer_description")); - row_dtl.createCell(7).setCellValue(dtl.getString("sale_order_name")); - row_dtl.createCell(8).setCellValue(dtl.getString("sales_owner")); - row_dtl.createCell(9).setCellValue(dtl.getString("instorage_time")); - row_dtl.createCell(10).setCellValue(dtl.getString("quanlity_in_box")); - row_dtl.createCell(11).setCellValue(dtl.getString("sid_day")); - row_dtl.createCell(12).setCellValue(String.format("%.0f", dtl.getDoubleValue("width"))); - row_dtl.createCell(13).setCellValue(dtl.getString("net_weight")); - row_dtl.createCell(14).setCellValue(dtl.getString("length")); - row_dtl.createCell(15).setCellValue(dtl.getString("thickness_request")); - row_dtl.createCell(16).setCellValue(dtl.getString("paper_type")); - row_dtl.createCell(17).setCellValue(dtl.getString("paper_name")); + row_dtl.createCell(2).setCellValue(dtl.getString("package_box_sn")); + row_dtl.createCell(3).setCellValue(dtl.getString("material_name")); + row_dtl.createCell(4).setCellValue(dtl.getString("pcsn")); + row_dtl.createCell(5).setCellValue(dtl.getString("customer_description")); + row_dtl.createCell(6).setCellValue(dtl.getString("sale_order_name")); + row_dtl.createCell(7).setCellValue(dtl.getString("sales_owner")); + row_dtl.createCell(8).setCellValue(dtl.getString("instorage_time")); + row_dtl.createCell(9).setCellValue(dtl.getString("quanlity_in_box")); + row_dtl.createCell(10).setCellValue(dtl.getString("sid_day")); + row_dtl.createCell(11).setCellValue(String.format("%.0f", dtl.getDoubleValue("width"))); + row_dtl.createCell(12).setCellValue(dtl.getString("net_weight")); + row_dtl.createCell(13).setCellValue(dtl.getString("length")); + row_dtl.createCell(14).setCellValue(dtl.getString("thickness_request")); + row_dtl.createCell(15).setCellValue(dtl.getString("paper_type")); + row_dtl.createCell(16).setCellValue(dtl.getString("paper_name")); } @@ -126,51 +126,4 @@ public class AutoSaveIvtExcel { } } } - - void sendInfo(JSONArray send_rows) { - WQLObject wo = WQLObject.getWQLObject("em_bi_devicestatus"); - String device_code = "BILL_INFO"; - JSONObject device_jo = wo.query("device_code = '" + device_code + "'").uniqueResult(0); - if (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; - } - for (int i = 0; i < send_rows.size(); i++) { - JSONObject row = send_rows.getJSONObject(i); - String bill_code = row.getString("bill_code"); - String Message = "出库单号为:" + bill_code + "的单据还未填写必填的发货信息并回传SAP,请及时回传!"; - 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/manage/AutoSendIvtExcel.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSendIvtExcel.java index 33e7520f9..c5b72f57e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSendIvtExcel.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSendIvtExcel.java @@ -22,6 +22,7 @@ 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.mes.service.LmsToMesService; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.data.jpa.domain.Specification; @@ -45,6 +46,8 @@ public class AutoSendIvtExcel { private final LocalStorageRepository localStorageRepository; + private final LmsToMesService lmsToMesService; + @SneakyThrows public void run() { RLock lock = redissonClient.getLock(this.getClass().getName()); @@ -86,28 +89,28 @@ public class AutoSendIvtExcel { JSONObject dtl = resultJSONArray.getJSONObject(i); row_dtl.createCell(0).setCellValue(dtl.getString("stor_name")); row_dtl.createCell(1).setCellValue(dtl.getString("sect_name")); - row_dtl.createCell(3).setCellValue(dtl.getString("package_box_sn")); - row_dtl.createCell(4).setCellValue(dtl.getString("material_name")); - row_dtl.createCell(5).setCellValue(dtl.getString("pcsn")); - row_dtl.createCell(6).setCellValue(dtl.getString("customer_description")); - row_dtl.createCell(7).setCellValue(dtl.getString("sale_order_name")); - row_dtl.createCell(8).setCellValue(dtl.getString("sales_owner")); - row_dtl.createCell(9).setCellValue(dtl.getString("instorage_time")); - row_dtl.createCell(10).setCellValue(dtl.getString("quanlity_in_box")); - row_dtl.createCell(11).setCellValue(dtl.getString("sid_day")); - row_dtl.createCell(12).setCellValue(String.format("%.0f", dtl.getDoubleValue("width"))); - row_dtl.createCell(13).setCellValue(dtl.getString("net_weight")); - row_dtl.createCell(14).setCellValue(dtl.getString("length")); - row_dtl.createCell(15).setCellValue(dtl.getString("thickness_request")); - row_dtl.createCell(16).setCellValue(dtl.getString("paper_type")); - row_dtl.createCell(17).setCellValue(dtl.getString("paper_name")); + row_dtl.createCell(2).setCellValue(dtl.getString("package_box_sn")); + row_dtl.createCell(3).setCellValue(dtl.getString("material_name")); + row_dtl.createCell(4).setCellValue(dtl.getString("pcsn")); + row_dtl.createCell(5).setCellValue(dtl.getString("customer_description")); + row_dtl.createCell(6).setCellValue(dtl.getString("sale_order_name")); + row_dtl.createCell(7).setCellValue(dtl.getString("sales_owner")); + row_dtl.createCell(8).setCellValue(dtl.getString("instorage_time")); + row_dtl.createCell(9).setCellValue(dtl.getString("quanlity_in_box")); + row_dtl.createCell(10).setCellValue(dtl.getString("sid_day")); + row_dtl.createCell(11).setCellValue(String.format("%.0f", dtl.getDoubleValue("width"))); + row_dtl.createCell(12).setCellValue(dtl.getString("net_weight")); + row_dtl.createCell(13).setCellValue(dtl.getString("length")); + row_dtl.createCell(14).setCellValue(dtl.getString("thickness_request")); + row_dtl.createCell(15).setCellValue(dtl.getString("paper_type")); + row_dtl.createCell(16).setCellValue(dtl.getString("paper_name")); } String type = FileUtil.getFileType("xls"); Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); - String nowStr = format.format(date) + "-"; + String nowStr = format.format(date); String path = properties.getPath().getPath() + type + File.separator + "当天库存报表.xls"; FileOutputStream fileOut = new FileOutputStream(path); @@ -119,8 +122,8 @@ public class AutoSendIvtExcel { localStorageRepository.save(local); }else { LocalStorage localStorage = new LocalStorage( - nowStr + "库存报表.xls", - nowStr + "库存报表", + "当天库存报表.xls", + "当天库存报表", "xls", path, type, @@ -130,6 +133,35 @@ public class AutoSendIvtExcel { workbook.write(fileOut); fileOut.close(); + + // 调用接口返回飞书 + JSONObject paramFeiShu = new JSONObject(); + JSONArray UserList = new JSONArray(); + + String userList = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("USER_LIST_EXCEL").getValue(); + + String[] split = userList.split(","); + if (split.length > 0) { + for (String s : split) { + JSONObject jo = new JSONObject(); + jo.put("User", s); + UserList.add(jo); + } + } else { + JSONObject jo = new JSONObject(); + jo.put("User", ""); + UserList.add(jo); + } + paramFeiShu.put("UserList", UserList); + paramFeiShu.put("Code", "ctp_AA1ohTlSSVfk"); + + String ip = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("EXCEL_SAVE_URL").getValue(); + JSONObject card = new JSONObject(); + card.put("downloadurl", ip+"file/文档/当天库存报表.xls"); + card.put("title", nowStr+"库存明细汇总"); + paramFeiShu.put("card", card); + lmsToMesService.sendSalesIvtMsgParam(paramFeiShu); + } else { System.out.println("AutoQueryBillInfo" + DateUtil.now() + "被锁住!!!!"); } @@ -139,51 +171,4 @@ public class AutoSendIvtExcel { } } } - - void sendInfo(JSONArray send_rows) { - WQLObject wo = WQLObject.getWQLObject("em_bi_devicestatus"); - String device_code = "BILL_INFO"; - JSONObject device_jo = wo.query("device_code = '" + device_code + "'").uniqueResult(0); - if (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; - } - for (int i = 0; i < send_rows.size(); i++) { - JSONObject row = send_rows.getJSONObject(i); - String bill_code = row.getString("bill_code"); - String Message = "出库单号为:" + bill_code + "的单据还未填写必填的发货信息并回传SAP,请及时回传!"; - 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/manage/AutoSendSalesIvt.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSendSalesIvt.java index 51f83dc47..6e5b0ea98 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSendSalesIvt.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSendSalesIvt.java @@ -1,15 +1,21 @@ package org.nl.wms.sch.manage; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillWrapper; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.nl.common.utils.IdUtil; @@ -23,12 +29,15 @@ import org.nl.modules.wql.util.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.createmsg.CreateMsg; import org.nl.wms.ext.mes.service.LmsToMesService; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.stereotype.Component; import java.io.File; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -45,6 +54,8 @@ public class AutoSendSalesIvt { private final LmsToMesService lmsToMesService; + private final RedissonClient redissonClient; + /* * 填充前路径 */ @@ -65,13 +76,25 @@ public class AutoSendSalesIvt { */ private static String baseApi = "http://60.165.35.2:8011"; - + @SneakyThrows public void run() { - fileName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("REGION_PERSON_FRIST").getValue(); - fileNameLast = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("REGION_PERSON_LAST").getValue(); - template = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("REGION_PERSON_TEMP").getValue(); - // 查询数据 - queryData(); + RLock lock = redissonClient.getLock(this.getClass().getName()); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + fileName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("REGION_PERSON_FRIST").getValue(); + fileNameLast = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("REGION_PERSON_LAST").getValue(); + template = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("REGION_PERSON_TEMP").getValue(); + // 查询数据 + queryData(); + } else { + System.out.println("AutoSendSalesIvt" + DateUtil.now() + "被锁住!!!!"); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } } @@ -80,10 +103,41 @@ public class AutoSendSalesIvt { */ private void queryData() { - // 查询所有客户 + /* + * 查询所有客户: + * 1.查询所有客户 + * 2.只查询有库存的客户 + */ + String is_select_cust = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_SELECT_CUST").getValue(); + + // 1.查询所有客户 List custList = WQL.getWO("TEST0002").addParam("flag", "1") .process().getResultJSONArray(0).toJavaList(JSONObject.class); + // 2.只查询有库存的客户 + if (is_select_cust.equals("0")) { + String cust_code_in = custList.stream() + .map(row -> row.getString("cust_code")) + .collect(Collectors.joining("','")); + + List ivtList = WQL.getWO("TEST0002").addParam("flag", "11").addParam("cust_code_in","('"+cust_code_in+"')") + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + List list = new ArrayList<>(); + custList.forEach(row -> { + String cust_code = row.getString("cust_code"); + + boolean flag = ivtList.stream() + .anyMatch(item -> item.getString("cust_code").equals(cust_code)); + + if (flag) { + list.add(row); + } + + }); + custList = list; + } + // 查询区域 List regionList = WQL.getWO("TEST0002").addParam("flag", "2") .process().getResultJSONArray(0).toJavaList(JSONObject.class); @@ -223,6 +277,13 @@ public class AutoSendSalesIvt { resultList.add(resultJson); } + // 根据合计倒序排序 + resultList = resultList.stream() + .sorted(Comparator.comparing(row -> row.getDoubleValue("day_sum"))) + .collect(Collectors.toList()); + + Collections.reverse(resultList); + // 插入小计 JSONObject jsonMin = new JSONObject(); jsonMin.put("sales_man", "小计"); @@ -288,6 +349,29 @@ public class AutoSendSalesIvt { resultListAll.add(jsonSum); + // 计算占比 + JSONObject jsonPro = new JSONObject(); + jsonPro.put("sales_man", "占比"); + + double day1_pro = NumberUtil.mul(NumberUtil.div(jsonSum.getDoubleValue("day1"), jsonSum.getDoubleValue("day_sum")), 100); + jsonPro.put("day1", NumberUtil.round(day1_pro, 2) + "%"); + + double day2_pro = NumberUtil.mul(NumberUtil.div(jsonSum.getDoubleValue("day2"), jsonSum.getDoubleValue("day_sum")), 100); + jsonPro.put("day2", NumberUtil.round(day2_pro, 2) + "%"); + + double day3_pro = NumberUtil.mul(NumberUtil.div(jsonSum.getDoubleValue("day3"), jsonSum.getDoubleValue("day_sum")), 100); + jsonPro.put("day3", NumberUtil.round(day3_pro, 2) + "%"); + + double day4_pro = NumberUtil.mul(NumberUtil.div(jsonSum.getDoubleValue("day4"), jsonSum.getDoubleValue("day_sum")), 100); + jsonPro.put("day4", NumberUtil.round(day4_pro, 2) + "%"); + + double day5_pro = NumberUtil.mul(NumberUtil.div(jsonSum.getDoubleValue("day5"), jsonSum.getDoubleValue("day_sum")), 100); + jsonPro.put("day5", NumberUtil.round(day5_pro, 2) + "%"); + + jsonPro.put("day_sum", "100%"); + resultListAll.add(jsonPro); + + JSONObject result = new JSONObject(); result.put("data", resultListAll); resultSize.add(resultListAll.size()+1); @@ -416,7 +500,9 @@ public class AutoSendSalesIvt { // 调用接口传送图片名称 JSONObject resultParam = lmsToMesService.sendSalesIvtMsg(fileName); - // 查询此区域的所有业务员 + /* + * 查询此区域的所有业务员 + */ String area = result.getString("value"); List areaList = WQLObject.getWQLObject("md_cs_areasalesinfo") @@ -431,6 +517,27 @@ public class AutoSendSalesIvt { }) .collect(Collectors.toList()); + // 查询领导对用区域 + String region_boss = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("REGION_PIC_BOSS").getValue(); + + // 截取编码 + String[] userArr = region_boss.split(","); + + for (String user : userArr) { + // 人员编码 + String user_code = user.substring(0, user.indexOf("-")); + // 对应的区域编码 + String area_code = user.substring(user.indexOf("-") + 1,user.length()); + + // 判断是包含此区域 + if (area_code.contains(area)) { + JSONObject jsonUser = new JSONObject(); + jsonUser.put("User",user_code); + userList.add(jsonUser); + } + + } + // 调用接口返回飞书 JSONObject paramFeiShu = new JSONObject(); paramFeiShu.put("UserList", userList); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/TEST0002.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/TEST0002.wql index 388e00f01..d316aab64 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/TEST0002.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/TEST0002.wql @@ -14,6 +14,7 @@ ## 表字段对应输入参数 ################################################# 输入.flag TYPEAS s_string + 输入.cust_code_in TYPEAS f_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -55,6 +56,27 @@ ENDQUERY ENDIF + IF 输入.flag = "11" + QUERY + SELECT + SUM(ivt.canuse_qty) AS canuse_qty, + cust.cust_code + FROM + st_ivt_structivt ivt + LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code + AND ivt.pcsn = sub.container_name + INNER JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name + WHERE + ivt.canuse_qty > '0' + AND cust.cust_code in 输入.cust_code_in + + GROUP BY cust.cust_code + + ENDSELECT + ENDQUERY + ENDIF + IF 输入.flag = "2" QUERY SELECT diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java index 29dba109f..a7645375e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java @@ -74,18 +74,79 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { map.put("bill_type", (String) whereJson.get("bill_type")); map.put("create_mode", (String) whereJson.get("create_mode")); map.put("bill_status", (String) whereJson.get("bill_status")); + String bill_code = MapUtil.getStr(whereJson, "bill_code"); String sap_pcsn = MapUtil.getStr(whereJson, "sap_pcsn"); String pcsn = MapUtil.getStr(whereJson, "pcsn"); + String box_no = MapUtil.getStr(whereJson, "box_no"); + String vbeln = MapUtil.getStr(whereJson, "vbeln"); + + if (!ObjectUtil.isEmpty(bill_code)) { map.put("bill_code", "%" + bill_code + "%"); } - if (!ObjectUtil.isEmpty(sap_pcsn)) { - map.put("sap_pcsn", "%" + sap_pcsn + "%"); + + // 空格查询 + if (StrUtil.isNotEmpty(pcsn)) { + // 判断是否有空格 + boolean matches = pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = pcsn.split(" "); + String pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("pcsn_in", "('"+pcsn_in+"')"); + } else { + map.put("pcsn", "%" + pcsn + "%"); + } } - if (!ObjectUtil.isEmpty(pcsn)) { - map.put("pcsn", "%" + pcsn + "%"); + + // 空格查询 + if (StrUtil.isNotEmpty(sap_pcsn)) { + // 判断是否有空格 + boolean matches = sap_pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = sap_pcsn.split(" "); + String sap_pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("sap_pcsn_in", "('"+sap_pcsn_in+"')"); + } else { + map.put("sap_pcsn", "%" + sap_pcsn + "%"); + } } + + // 空格查询 + if (StrUtil.isNotEmpty(box_no)) { + // 判断是否有空格 + boolean matches = box_no.matches(".*\\s.*"); + + if (matches) { + String[] s = box_no.split(" "); + String box_no_in = String.join("','", Arrays.asList(s)); + + map.put("box_no_in", "('"+box_no_in+"')"); + } else { + map.put("box_no", "%" + box_no + "%"); + + } + } + + // 空格查询 + if (StrUtil.isNotEmpty(vbeln)) { + // 判断是否有空格 + boolean matches = vbeln.matches(".*\\s.*"); + + if (matches) { + String[] s = vbeln.split(" "); + String vbeln_in = String.join("','", Arrays.asList(s)); + + map.put("vbeln_in", "('"+vbeln_in+"')"); + } else { + map.put("vbeln", "%" + vbeln + "%"); + } + } + String begin_time = (String) whereJson.get("begin_time"); if (!StrUtil.isEmpty(begin_time)) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java index 0b7cb5dd3..05306e8fe 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java @@ -449,6 +449,7 @@ public class StorPublicServiceImpl implements StorPublicService { String lock_type = from.getString("lock_type"); //载具编码 String storagevehicle_code = from.getString("storagevehicle_code"); + String is_overdue = from.getString("is_overdue"); if (StrUtil.isEmpty(struct_id) && StrUtil.isEmpty(point_code)) { throw new BadRequestException("点位仓位更新出入参数异常!"); } @@ -479,6 +480,10 @@ public class StorPublicServiceImpl implements StorPublicService { map.put("vehicle_code", storagevehicle_code); map.put("point_status", "01"); } + if ("1".equals(from.getString("is_overdue")) && StrUtil.isNotEmpty(is_overdue)) { + map.put("storagevehicle_code", storagevehicle_code); + } + wo_Struct.update(map, "struct_id = '" + jo.getString("struct_id") + "'"); wo_Point.update(map, "point_id = '" + jo.getString("point_id") + "'"); } else {//锁定 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql index 9fec70b16..9249da216 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql @@ -41,6 +41,11 @@ 输入.in_stor_id TYPEAS f_string 输入.in_layer_num TYPEAS f_string 输入.box_height TYPEAS s_string + 输入.vbeln TYPEAS s_string + 输入.pcsn_in TYPEAS f_string + 输入.sap_pcsn_in TYPEAS f_string + 输入.vbeln_in TYPEAS f_string + 输入.box_no_in TYPEAS f_string [临时表] @@ -68,10 +73,12 @@ IF 输入.flag = "1" PAGEQUERY SELECT DISTINCT - ios.* + ios.*, + IFNULL(dtl.vbeln,'') as vbeln FROM ST_IVT_IOStorInv ios - LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinv_id = ios.iostorinv_id + LEFT JOIN st_ivt_iostorinvdtl dtl ON ios.iostorinv_id = dtl.iostorinv_id + LEFT JOIN st_ivt_iostorinvdis dis ON dtl.iostorinvdtl_id = dis.iostorinvdtl_id LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn WHERE ios.is_delete = '0' @@ -79,30 +86,62 @@ ios.io_type = '0' AND ios.stor_id in 输入.in_stor_id + OPTION 输入.box_no <> "" + dis.box_no like 输入.box_no + ENDOPTION + + OPTION 输入.box_no_in <> "" + dis.box_no IN 输入.box_no_in + ENDOPTION + + OPTION 输入.vbeln <> "" + dtl.vbeln like 输入.vbeln + ENDOPTION + + OPTION 输入.vbeln_in <> "" + dtl.vbeln IN 输入.vbeln_in + ENDOPTION + OPTION 输入.bill_code <> "" ios.bill_code like 输入.bill_code ENDOPTION + OPTION 输入.sap_pcsn <> "" sub.sap_pcsn like 输入.sap_pcsn ENDOPTION + + OPTION 输入.sap_pcsn_in <> "" + sub.sap_pcsn IN 输入.sap_pcsn_in + ENDOPTION + OPTION 输入.pcsn <> "" dis.pcsn like 输入.pcsn ENDOPTION + + OPTION 输入.pcsn_in <> "" + dis.pcsn IN 输入.pcsn_in + ENDOPTION + OPTION 输入.stor_id <> "" ios.stor_id = 输入.stor_id ENDOPTION + OPTION 输入.bill_type <> "" ios.bill_type = 输入.bill_type ENDOPTION + OPTION 输入.create_mode <> "" ios.create_mode = 输入.create_mode ENDOPTION + OPTION 输入.bill_status <> "" ios.bill_status = 输入.bill_status ENDOPTION + OPTION 输入.begin_time <> "" ios.input_time >= 输入.begin_time ENDOPTION + OPTION 输入.end_time <> "" ios.input_time <= 输入.end_time ENDOPTION diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/ProductScrapController.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/ProductScrapController.java index 130c00959..624e7af18 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/ProductScrapController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/ProductScrapController.java @@ -1,5 +1,6 @@ package org.nl.wms.st.instor.rest; +import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -9,7 +10,9 @@ import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import java.util.Map; @RestController @@ -82,4 +85,10 @@ public class ProductScrapController { return new ResponseEntity<>(HttpStatus.CREATED); } + @PostMapping("/importExcel") + @SaIgnore + public ResponseEntity importExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request) { + return new ResponseEntity<>(productScrapService.importExcel(file, request),HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/ProductScrapService.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/ProductScrapService.java index d3a75744a..06937faec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/ProductScrapService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/ProductScrapService.java @@ -3,7 +3,10 @@ package org.nl.wms.st.instor.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.springframework.data.domain.Pageable; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.Map; public interface ProductScrapService { @@ -65,4 +68,12 @@ public interface ProductScrapService { * @param whereJson / */ void onSubmit(JSONObject whereJson); + + /** + * 导入excel + * @param file : 文件 + * @param request post请求 + * @return + */ + ArrayList importExcel(MultipartFile file, HttpServletRequest request); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java index 3ce225550..39d0373ae 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java @@ -830,15 +830,62 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { if (StrUtil.isNotEmpty(map.get("struct_code"))) { map.put("struct_code", "%" + map.get("struct_code") + "%"); } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("pcsn"))) { - map.put("pcsn", "%" + map.get("pcsn") + "%"); + // 判断是否有空格 + String pcsn = MapUtil.getStr(map, "pcsn"); + + boolean matches = pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = pcsn.split(" "); + String pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("pcsn_in", "('"+pcsn_in+"')"); + map.put("pcsn", ""); + } else { + map.put("pcsn", "%" + map.get("pcsn") + "%"); + } } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("sap_pcsn"))) { - map.put("sap_pcsn", "%" + map.get("sap_pcsn") + "%"); + // 判断是否有空格 + String sap_pcsn = MapUtil.getStr(map, "sap_pcsn"); + + boolean matches = sap_pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = sap_pcsn.split(" "); + String sap_pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("sap_pcsn_in", "('"+sap_pcsn_in+"')"); + map.put("sap_pcsn", ""); + } else { + map.put("sap_pcsn", "%" + map.get("sap_pcsn") + "%"); + } } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("package_box_sn"))) { - map.put("package_box_sn", "%" + map.get("package_box_sn") + "%"); + // 判断是否有空格 + String package_box_sn = MapUtil.getStr(map, "package_box_sn"); + + boolean matches = package_box_sn.matches(".*\\s.*"); + + if (matches) { + String[] s = package_box_sn.split(" "); + String box_no_in = String.join("','", Arrays.asList(s)); + + map.put("package_box_sn_in", "('"+box_no_in+"')"); + map.put("package_box_sn", ""); + } else { + map.put("package_box_sn", "%" + map.get("package_box_sn") + "%"); + + } } + if (StrUtil.isNotEmpty(map.get("sale_order_name"))) { map.put("sale_order_name", "%" + map.get("sale_order_name") + "%"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java index bf026fe00..9d1f70e4a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java @@ -6,6 +6,8 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -28,7 +30,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import java.io.InputStream; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -448,4 +454,69 @@ public class ProductScrapServiceImpl implements ProductScrapService { } + @Override + @Transactional(rollbackFor = Exception.class) + public ArrayList importExcel(MultipartFile file, HttpServletRequest request) { + // 1.获取上传文件输入流 + InputStream inputStream = null; + + try { + inputStream = file.getInputStream(); + } catch (Exception e) { + e.printStackTrace(); + } + + ExcelReader excelReader = ExcelUtil.getReader(inputStream); + List> read = excelReader.read(1, excelReader.getRowCount()); + + // 获取此仓库的所有库存 + String stor_id = request.getParameter("stor_id"); + + UserStorServiceImpl userStorService = new UserStorServiceImpl(); + String in_stor_id = userStorService.getInStor(); + + List ivtList = WQL.getWO("QST_IVT_HANDMOVESTOR") + .addParam("flag", "3").addParam("stor_id", stor_id).addParam("in_stor_id",in_stor_id) + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 循环获取的数据 + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < read.size(); i++) { + List list = read.get(i); + + // pcsn + String pcsn = list.get(0).toString(); + // sap批次号 + String sap_pcsn = list.get(1).toString(); + // 木箱号 + String box_no = list.get(2).toString(); + // 重量 + String qty = list.get(3).toString(); + + // 子卷号和批次号必须有一个不为空 + if (ObjectUtil.isEmpty(pcsn) && ObjectUtil.isEmpty(sap_pcsn)) { + continue; + } + + // 匹配库存 + List oneList = ivtList.stream() + .filter(row -> row.getString("pcsn").equals(pcsn) || + row.getString("sap_pcsn").equals(sap_pcsn) + ) + .collect(Collectors.toList()); + + if (ObjectUtil.isNotEmpty(oneList)) { + JSONObject json = oneList.get(0); + + // 匹配相同箱号的数据 + List boxList = ivtList.stream() + .filter(row -> row.getString("storagevehicle_code").equals(json.getString("storagevehicle_code"))) + .collect(Collectors.toList()); + + resultList.addAll(boxList); + } + } + return resultList; + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_HANDMOVESTOR.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_HANDMOVESTOR.wql index 02d7e3f4c..d51b2c4e8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_HANDMOVESTOR.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_HANDMOVESTOR.wql @@ -42,11 +42,14 @@ 输入.storagevehicle_code TYPEAS s_string 输入.struct_code TYPEAS s_string 输入.block_num TYPEAS s_string - 输入.row_num TYPEAS s_string - 输入.out_order_seq TYPEAS s_string - 输入.ids TYPEAS f_string - 输入.deptIds TYPEAS f_string + 输入.row_num TYPEAS s_string + 输入.out_order_seq TYPEAS s_string + 输入.ids TYPEAS f_string + 输入.deptIds TYPEAS f_string 输入.in_stor_id TYPEAS f_string + 输入.package_box_sn_in TYPEAS f_string + 输入.sap_pcsn_in TYPEAS f_string + 输入.pcsn_in TYPEAS f_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -188,33 +191,55 @@ OPTION 输入.material_id <> "" ivt2.material_id = 输入.material_id ENDOPTION + OPTION 输入.remark <> "" (mb.material_code like 输入.remark or mb.material_name like 输入.remark) ENDOPTION + OPTION 输入.ids <> "" struct.storagevehicle_code in (输入.ids) ENDOPTION + OPTION 输入.struct_code <> "" struct.struct_code like 输入.struct_code ENDOPTION + OPTION 输入.stor_id <> "" struct.stor_id = 输入.stor_id ENDOPTION + OPTION 输入.sect_id <> "" struct.sect_id = 输入.sect_id ENDOPTION + OPTION 输入.pcsn <> "" ivt2.pcsn like 输入.pcsn ENDOPTION + + OPTION 输入.pcsn_in <> "" + ivt2.pcsn IN 输入.pcsn_in + ENDOPTION + OPTION 输入.sap_pcsn <> "" sub.sap_pcsn like 输入.sap_pcsn ENDOPTION + + OPTION 输入.sap_pcsn_in <> "" + sub.sap_pcsn IN 输入.sap_pcsn_in + ENDOPTION + OPTION 输入.package_box_sn <> "" sub.package_box_sn like 输入.package_box_sn ENDOPTION + + OPTION 输入.package_box_sn_in <> "" + sub.package_box_sn IN 输入.package_box_sn_in + ENDOPTION + OPTION 输入.sale_order_name <> "" sub.sale_order_name like 输入.sale_order_name ENDOPTION + ENDSELECT ENDPAGEQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index 01e57b178..35440c6c6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -33,6 +33,7 @@ import org.nl.wms.st.inbill.service.StorPublicService; import org.nl.wms.st.instor.service.HandMoveStorService; import org.nl.wms.st.instor.service.impl.HandMoveStorServiceImpl; import org.nl.wms.st.instor.task.HandMoveStorAcsTask; +import org.nl.wms.st.returns.service.InAndOutReturnService; import org.nl.wms.st.returns.service.impl.InAndOutRetrunServiceImpl; import org.nl.wms.util.TranUtil; import org.springframework.data.domain.Pageable; @@ -44,6 +45,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; import java.util.function.Consumer; +import java.util.stream.Collectors; /** * PC端出入库新增 @@ -58,6 +60,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { private final HandMoveStorService handMoveStorService; private final OutTask outTask; private final HandMoveStorAcsTask moveStorAcsTask; + private final InAndOutReturnService inAndOutReturnService; @Override public Map pageQuery(Map whereJson, Pageable page, String[] stor_id, String[] bill_status, String[] bill_type) { @@ -76,24 +79,87 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { if (StrUtil.isNotEmpty(map.get("is_upload"))) { map.put("is_upload", map.get("is_upload")); } - if (StrUtil.isNotEmpty(map.get("pcsn"))) { - map.put("pcsn", "%" + map.get("pcsn") + "%"); - } if (StrUtil.isNotEmpty(map.get("material_code"))) { map.put("material_code", "%" + map.get("material_code") + "%"); } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("vbeln"))) { - map.put("vbeln", "%" + map.get("vbeln") + "%"); + // 判断是否有空格 + String vbeln = MapUtil.getStr(map, "vbeln"); + + boolean matches = vbeln.matches(".*\\s.*"); + + if (matches) { + String[] s = vbeln.split(" "); + String vbeln_in = String.join("','", Arrays.asList(s)); + + map.put("vbeln_in", "('"+vbeln_in+"')"); + map.put("vbeln", ""); + } else { + map.put("vbeln", "%" + map.get("vbeln") + "%"); + } } + + // 空格查询 + if (StrUtil.isNotEmpty(map.get("box_no"))) { + // 判断是否有空格 + String box_no = MapUtil.getStr(map, "box_no"); + + boolean matches = box_no.matches(".*\\s.*"); + + if (matches) { + String[] s = box_no.split(" "); + String box_no_in = String.join("','", Arrays.asList(s)); + + map.put("box_no_in", "('"+box_no_in+"')"); + map.put("box_no", ""); + } else { + map.put("box_no", "%" + map.get("box_no") + "%"); + + } + } + if (StrUtil.isNotEmpty(map.get("width"))) { map.put("width", "%" + map.get("width") + "%"); } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("pcsn"))) { - map.put("pcsn", "%" + map.get("pcsn") + "%"); + // 判断是否有空格 + String pcsn = MapUtil.getStr(map, "pcsn"); + + boolean matches = pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = pcsn.split(" "); + String pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("pcsn_in", "('"+pcsn_in+"')"); + map.put("pcsn", ""); + } else { + map.put("pcsn", "%" + map.get("pcsn") + "%"); + } } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("sap_pcsn"))) { - map.put("sap_pcsn", "%" + map.get("sap_pcsn") + "%"); + // 判断是否有空格 + String sap_pcsn = MapUtil.getStr(map, "sap_pcsn"); + + boolean matches = sap_pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = sap_pcsn.split(" "); + String sap_pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("sap_pcsn_in", "('"+sap_pcsn_in+"')"); + map.put("sap_pcsn", ""); + } else { + map.put("sap_pcsn", "%" + map.get("sap_pcsn") + "%"); + } } + if (StrUtil.isNotEmpty(map.get("cust_code"))) { map.put("cust_code", "%" + map.get("cust_code") + "%"); } @@ -151,23 +217,65 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { map.put("flag", "7"); map.put("begin_time", MapUtil.getStr(whereJson, "begin_time")); map.put("end_time", MapUtil.getStr(whereJson, "end_time")); - map.put("sap_pcsn", MapUtil.getStr(whereJson, "sap_pcsn")); map.put("stor_id", MapUtil.getStr(whereJson, "stor_id")); - map.put("package_box_sn", MapUtil.getStr(whereJson, "package_box_sn")); map.put("canuse_qty", "0"); if (StrUtil.isNotEmpty(map.get("material_code"))) { map.put("material_code", "%" + map.get("material_code") + "%"); } - if (StrUtil.isNotEmpty(map.get("pcsn"))) { - map.put("pcsn", "%" + map.get("pcsn") + "%"); + + // 空格查询 + String pcsn = MapUtil.getStr(whereJson, "pcsn"); + if (StrUtil.isNotEmpty(pcsn)) { + // 判断是否有空格 + boolean matches = pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = pcsn.split(" "); + String pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("pcsn_in", "('"+pcsn_in+"')"); + map.put("pcsn", ""); + } else { + map.put("pcsn", "%" + pcsn + "%"); + } } - if (StrUtil.isNotEmpty(map.get("sap_pcsn"))) { - map.put("sap_pcsn", "%" + map.get("sap_pcsn") + "%"); + + // 空格查询 + String sap_pcsn = MapUtil.getStr(whereJson, "sap_pcsn"); + if (StrUtil.isNotEmpty(sap_pcsn)) { + // 判断是否有空格 + boolean matches = sap_pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = sap_pcsn.split(" "); + String sap_pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("sap_pcsn_in", "('"+sap_pcsn_in+"')"); + map.put("sap_pcsn", ""); + } else { + map.put("sap_pcsn", "%" + sap_pcsn + "%"); + } } - if (StrUtil.isNotEmpty(map.get("package_box_sn"))) { - map.put("package_box_sn", "%" + map.get("package_box_sn") + "%"); + + // 空格查询 + String package_box_sn = MapUtil.getStr(whereJson, "package_box_sn"); + if (StrUtil.isNotEmpty(package_box_sn)) { + // 判断是否有空格 + boolean matches = package_box_sn.matches(".*\\s.*"); + + if (matches) { + String[] s = package_box_sn.split(" "); + String package_box_sn_in = String.join("','", Arrays.asList(s)); + + map.put("box_no_in", "('"+package_box_sn_in+"')"); + map.put("box_no", ""); + } else { + map.put("box_no", "%" + map.get("package_box_sn") + "%"); + + } } + if (StrUtil.isNotEmpty(map.get("width_standard"))) { map.put("width_standard", map.get("width_standard")); } @@ -733,24 +841,87 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { if (StrUtil.isNotEmpty(map.get("is_upload"))) { map.put("is_upload", map.get("is_upload")); } - if (StrUtil.isNotEmpty(map.get("pcsn"))) { - map.put("pcsn", "%" + map.get("pcsn") + "%"); - } if (StrUtil.isNotEmpty(map.get("material_code"))) { map.put("material_code", "%" + map.get("material_code") + "%"); } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("vbeln"))) { - map.put("vbeln", "%" + map.get("vbeln") + "%"); + // 判断是否有空格 + String vbeln = MapUtil.getStr(map, "vbeln"); + + boolean matches = vbeln.matches(".*\\s.*"); + + if (matches) { + String[] s = vbeln.split(" "); + String vbeln_in = String.join("','", Arrays.asList(s)); + + map.put("vbeln_in", "('"+vbeln_in+"')"); + map.put("vbeln", ""); + } else { + map.put("vbeln", "%" + map.get("vbeln") + "%"); + } } + + // 空格查询 + if (StrUtil.isNotEmpty(map.get("box_no"))) { + // 判断是否有空格 + String box_no = MapUtil.getStr(map, "box_no"); + + boolean matches = box_no.matches(".*\\s.*"); + + if (matches) { + String[] s = box_no.split(" "); + String box_no_in = String.join("','", Arrays.asList(s)); + + map.put("box_no_in", "('"+box_no_in+"')"); + map.put("box_no", ""); + } else { + map.put("box_no", "%" + map.get("box_no") + "%"); + + } + } + if (StrUtil.isNotEmpty(map.get("width"))) { map.put("width", "%" + map.get("width") + "%"); } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("pcsn"))) { - map.put("pcsn", "%" + map.get("pcsn") + "%"); + // 判断是否有空格 + String pcsn = MapUtil.getStr(map, "pcsn"); + + boolean matches = pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = pcsn.split(" "); + String pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("pcsn_in", "('"+pcsn_in+"')"); + map.put("pcsn", ""); + } else { + map.put("pcsn", "%" + map.get("pcsn") + "%"); + } } + + // 空格查询 if (StrUtil.isNotEmpty(map.get("sap_pcsn"))) { - map.put("sap_pcsn", "%" + map.get("sap_pcsn") + "%"); + // 判断是否有空格 + String sap_pcsn = MapUtil.getStr(map, "sap_pcsn"); + + boolean matches = sap_pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = sap_pcsn.split(" "); + String sap_pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("sap_pcsn_in", "('"+sap_pcsn_in+"')"); + map.put("sap_pcsn", ""); + } else { + map.put("sap_pcsn", "%" + map.get("sap_pcsn") + "%"); + } } + if (StrUtil.isNotEmpty(map.get("cust_code"))) { map.put("cust_code", "%" + map.get("cust_code") + "%"); } @@ -1108,6 +1279,9 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("is_issued", "0"); dtl.put("plan_qty", ivt2.getDoubleValue("change_qty")); dtl.put("real_qty", ivt2.getDoubleValue("change_qty")); + dtl.put("is_overdue", ivt2.getString("is_overdue")); + dtl.put("instorage_time", ivt2.getString("instorage_time")); + // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt2.getString("sect_id") + "'").uniqueResult(0); if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { @@ -1115,6 +1289,12 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } else { dtl.put("work_status", "00"); } + + // 判断是否超期 + if (ivt2.getString("is_overdue").equals("1")) { + dtl.put("work_status", "01"); + } + wo_dis.insert(dtl); } //记录需锁定的仓位 @@ -1167,6 +1347,8 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("is_issued", "0"); dtl.put("plan_qty", jsonIvt.getDoubleValue("change_qty")); dtl.put("real_qty", jsonIvt.getDoubleValue("change_qty")); + dtl.put("is_overdue", jsonIvt.getString("is_overdue")); + dtl.put("instorage_time", jsonIvt.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + jsonIvt.getString("sect_id") + "'").uniqueResult(0); if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { @@ -1174,6 +1356,11 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } else { dtl.put("work_status", "00"); } + + // 判断是否超期 + if (jsonIvt.getString("is_overdue").equals("1")) { + dtl.put("work_status", "01"); + } wo_dis.insert(dtl); //记录需锁定的仓位 (如果此明细有相同物料的且子卷号不能为空的则在最后一个明细分配完成后锁定仓位) @@ -1347,6 +1534,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("is_issued", "0"); dtl.put("plan_qty", ivt2.getDoubleValue("change_qty")); dtl.put("real_qty", ivt2.getDoubleValue("change_qty")); + dtl.put("instorage_time", ivt2.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt2.getString("sect_id") + "'").uniqueResult(0); if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { @@ -1406,6 +1594,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("is_issued", "0"); dtl.put("plan_qty", jsonIvt.getDoubleValue("change_qty")); dtl.put("real_qty", jsonIvt.getDoubleValue("change_qty")); + dtl.put("instorage_time", jsonIvt.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + jsonIvt.getString("sect_id") + "'").uniqueResult(0); if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { @@ -4195,6 +4384,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl.put("is_issued", "0"); dtl.put("plan_qty", ivt.getDoubleValue("change_qty")); dtl.put("real_qty", ivt.getDoubleValue("change_qty")); + dtl.put("instorage_time", ivt.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt.getString("sect_id") + "'").uniqueResult(0); if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { @@ -4263,6 +4453,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { json.put("is_issued", "0"); json.put("plan_qty", ivt.getDoubleValue("change_qty")); json.put("real_qty", ivt.getDoubleValue("change_qty")); + json.put("instorage_time", ivt.getString("instorage_time")); // 如果所属仓位是虚拟区 则将分配明细状态变为生成 JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt.getString("sect_id") + "'").uniqueResult(0); if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { @@ -4393,15 +4584,29 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dis.put("inv_id", iostorinv_id); dis.put("bill_code", jo_mst.getString("bill_code")); dis.put("bill_table", "ST_IVT_IOStorInv"); - storPublicService.IOStor(dis, "21"); + + if (dis.getString("is_overdue").equals("1")) { + storPublicService.IOStor(dis, "12"); + } else { + storPublicService.IOStor(dis, "21"); + } } //解锁起点 JSONObject from_start = new JSONObject(); from_start.put("struct_id", dis.getString("struct_id")); from_start.put("lock_type", "1"); - from_start.put("storagevehicle_code", ""); + from_start.put("is_overdue", dis.getString("is_overdue")); + if (dis.getString("is_overdue").equals("1")) { + from_start.put("storagevehicle_code", dis.getString("box_no")); + } else { + from_start.put("storagevehicle_code", ""); + } storPublicService.updateStructAndPoint(from_start); + if (dis.getString("is_overdue").equals("1")) { + continue; + } + //查询对应明细 JSONObject dtl_jo = WQLObject.getWQLObject("st_ivt_iostorinvdtl").query("iostorinvdtl_id = '" + dis.getString("iostorinvdtl_id") + "'").uniqueResult(0); // 更新子卷包装关系表 状态 - 3 @@ -4459,7 +4664,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } JSONObject mst_row = mst_wql.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0); - JSONArray dis_rows = dis_wql.query("iostorinv_id = '" + iostorinv_id + "'").getResultJSONArray(0); + JSONArray dis_rows = dis_wql.query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0); //生成手工入库单 String new_iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; @@ -4485,8 +4690,8 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { jo_mst.put("update_optname", nickName); jo_mst.put("update_time", now); jo_mst.put("out_stor_id", out_jo.getString("stor_id")); - mst_wql.insert(jo_mst); + double total_qty = 0.00; for (int i = 0; i < dis_rows.size(); i++) { //插入明细表 String iostorinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; @@ -4523,11 +4728,26 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { //插入分配表 dis_wql.insert(dis_row); + total_qty = NumberUtil.add(total_qty,dis_row.getDoubleValue("plan_qty")); + //将包装关系中对应的记录状态改为包装 HashMap map = new HashMap<>(); map.put("status", "1"); WQLObject.getWQLObject("PDM_BI_SubPackageRelation").update(map, "package_box_SN = '" + dis_row.getString("box_no") + "' AND status = '3'"); } + + // 查询所有明细并计算实际重量 + List dtlList = dtl_wql.query("iostorinv_id = '" + iostorinv_id + "'") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + double assign_qty = dtlList.stream() + .map(row -> row.getDoubleValue("assign_qty")) + .reduce(Double::sum).orElse(0.00); + + jo_mst.put("detail_count", dis_rows.size()); + // jo_mst.put("total_qty", total_qty); + jo_mst.put("total_qty", assign_qty); + mst_wql.insert(jo_mst); } /*if (out_jo.getString("bill_type").equals("1003")) { @@ -4547,7 +4767,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { if ("1003".equals(out_jo.getString("bill_type")) || "1006".equals(out_jo.getString("bill_type"))) { //如果为返检出库或者改切出库删除对应的包装关系 - JSONArray dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "'").getResultJSONArray(0); + JSONArray dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0); for (int i = 0; i < dis_rows.size(); i++) { JSONObject dis_row = dis_rows.getJSONObject(i); String sect_code = dis_row.getString("sect_code"); @@ -5106,6 +5326,15 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_IOStorInv"); mstTab.update(whereJson); + // 回传sap + JSONObject jsonMst = mstTab.query("iostorinv_id = '" + whereJson.getString("iostorinv_id") + "'").uniqueResult(0); + + JSONArray jsonArr = new JSONArray(); + jsonArr.add(jsonMst); + + JSONObject param = new JSONObject(); + param.put("rows", jsonArr); + inAndOutReturnService.uploadSAP(param); } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql index 68ee63ede..9f3c310f5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql @@ -61,6 +61,10 @@ 输入.storIds TYPEAS f_string 输入.billStatuses TYPEAS f_string 输入.billTypes TYPEAS f_string + 输入.pcsn_in TYPEAS f_string + 输入.sap_pcsn_in TYPEAS f_string + 输入.vbeln_in TYPEAS f_string + 输入.box_no_in TYPEAS f_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -125,6 +129,10 @@ sub.sap_pcsn like 输入.sap_pcsn ENDOPTION + OPTION 输入.sap_pcsn_in <> "" + sub.sap_pcsn IN 输入.sap_pcsn_in + ENDOPTION + OPTION 输入.cust_code <> "" (cu.cust_code like 输入.cust_code or cu.cust_simple_name like 输入.cust_code) @@ -134,6 +142,10 @@ dis.pcsn like 输入.pcsn ENDOPTION + OPTION 输入.pcsn_in <> "" + dis.pcsn IN 输入.pcsn_in + ENDOPTION + OPTION 输入.is_upload <> "" ios.is_upload = 输入.is_upload ENDOPTION @@ -146,10 +158,22 @@ dtl.vbeln like 输入.vbeln ENDOPTION - OPTION 输入.width <> "" + OPTION 输入.vbeln_in <> "" + dtl.vbeln IN 输入.vbeln_in + ENDOPTION + + OPTION 输入.width <> "" dtl.width like 输入.width ENDOPTION + OPTION 输入.box_no <> "" + dis.box_no like 输入.box_no + ENDOPTION + + OPTION 输入.box_no_in <> "" + dis.box_no IN 输入.box_no_in + ENDOPTION + OPTION 输入.billTypes <> "" ios.bill_type in 输入.billTypes ENDOPTION @@ -222,6 +246,24 @@ sub.sap_pcsn like 输入.sap_pcsn ENDOPTION + OPTION 输入.sap_pcsn_in <> "" + sub.sap_pcsn IN 输入.sap_pcsn_in + ENDOPTION + + OPTION 输入.pcsn_in <> "" + dis.pcsn IN 输入.pcsn_in + ENDOPTION + + + OPTION 输入.vbeln_in <> "" + dtl.vbeln IN 输入.vbeln_in + ENDOPTION + + + OPTION 输入.box_no_in <> "" + dis.box_no IN 输入.box_no_in + ENDOPTION + OPTION 输入.cust_code <> "" (cu.cust_code like 输入.cust_code or cu.cust_simple_name like 输入.cust_code) @@ -736,14 +778,26 @@ sub.sap_pcsn like 输入.sap_pcsn ENDOPTION - OPTION 输入.package_box_sn <> "" - sub.package_box_sn like 输入.package_box_sn + OPTION 输入.sap_pcsn_in <> "" + sub.sap_pcsn IN 输入.sap_pcsn_in + ENDOPTION + + OPTION 输入.box_no <> "" + sub.package_box_sn like 输入.box_no + ENDOPTION + + OPTION 输入.box_no_in <> "" + sub.package_box_sn IN 输入.box_no_in ENDOPTION OPTION 输入.pcsn <> "" ivt.pcsn like 输入.pcsn ENDOPTION + OPTION 输入.pcsn_in <> "" + ivt.pcsn IN 输入.pcsn_in + ENDOPTION + OPTION 输入.begin_time <> "" ivt.instorage_time >= 输入.begin_time ENDOPTION @@ -752,10 +806,6 @@ ivt.instorage_time <= 输入.end_time ENDOPTION - OPTION 输入.box_no <> "" - attr.storagevehicle_code = 输入.box_no - ENDOPTION - OPTION 输入.canuse_qty <> "" ivt.canuse_qty > 输入.canuse_qty ENDOPTION @@ -1102,6 +1152,20 @@ point_code1 IN 输入.struct_codes AND task_status IN ('05','06') AND is_delete = '0' + + UNION + + SELECT + point_code1 + FROM + sch_base_task + WHERE + point_code1 IN 输入.struct_codes + AND task_status IN ('07') + AND is_delete = '0' + AND task_type = '010503' + AND DATEDIFF( NOW(), LEFT(update_time,10) ) <= 2 + ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql index 725460a42..ebd2006ad 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql @@ -60,7 +60,10 @@ attr.sect_code, attr.sect_name, attr.struct_name, - attr.struct_code + attr.struct_code, + CASE + WHEN DATEDIFF( NOW(), sub.date_of_production ) > '90' THEN '1' ELSE '0' + END AS is_overdue FROM ST_IVT_StructIvt ivt LEFT JOIN ST_IVT_StructAttr attr ON attr.struct_id = ivt.struct_id @@ -159,10 +162,14 @@ attr.sect_code, attr.sect_name, attr.struct_name, - attr.struct_code + attr.struct_code, + CASE + WHEN DATEDIFF( NOW(), sub.date_of_production ) > '90' THEN '1' ELSE '0' + END AS is_overdue FROM ST_IVT_StructIvt ivt LEFT JOIN ST_IVT_StructAttr attr ON attr.struct_id = ivt.struct_id + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = ivt.pcsn WHERE ivt.quality_scode = '01' AND attr.lock_type = '1' diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java index 5369ebd76..eceaf4d19 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java @@ -45,7 +45,6 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { public Map pageQuery(Map whereJson, Pageable page) { HashMap map = new HashMap<>(whereJson); String bill_code = MapUtil.getStr(whereJson, "bill_code"); - String box_no = MapUtil.getStr(whereJson, "box_no"); String material_search = MapUtil.getStr(whereJson, "material_search"); map.put("flag", "1"); map.put("stor_id", MapUtil.getStr(whereJson, "stor_id")); @@ -55,19 +54,84 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { map.put("is_upload", MapUtil.getStr(whereJson, "is_upload")); map.put("begin_time", MapUtil.getStr(whereJson, "begin_time")); map.put("end_time", MapUtil.getStr(whereJson, "end_time")); - map.put("pcsn", MapUtil.getStr(whereJson, "pcsn")); - map.put("sap_pcsn", MapUtil.getStr(whereJson, "sap_pcsn")); map.put("is_writeoff", MapUtil.getStr(whereJson, "is_writeoff")); - map.put("vbeln", MapUtil.getStr(whereJson, "vbeln")); + + // 空格查询 + String vbeln = MapUtil.getStr(map, "vbeln"); + if (StrUtil.isNotEmpty(vbeln)) { + // 判断是否有空格 + boolean matches = vbeln.matches(".*\\s.*"); + + if (matches) { + String[] s = vbeln.split(" "); + String vbeln_in = String.join("','", Arrays.asList(s)); + + map.put("vbeln_in", "('"+vbeln_in+"')"); + map.put("vbeln", ""); + } else { + map.put("vbeln", "%" + map.get("vbeln") + "%"); + } + } + + // 空格查询 + String box_no = MapUtil.getStr(map, "box_no"); + if (StrUtil.isNotEmpty(box_no)) { + // 判断是否有空格 + + boolean matches = box_no.matches(".*\\s.*"); + + if (matches) { + String[] s = box_no.split(" "); + String box_no_in = String.join("','", Arrays.asList(s)); + + map.put("box_no_in", "('"+box_no_in+"')"); + map.put("box_no", ""); + } else { + map.put("box_no", "%" + map.get("box_no") + "%"); + + } + } + + // 空格查询 + String pcsn = MapUtil.getStr(map, "pcsn"); + if (StrUtil.isNotEmpty(pcsn)) { + // 判断是否有空格 + boolean matches = pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = pcsn.split(" "); + String pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("pcsn_in", "('"+pcsn_in+"')"); + map.put("pcsn", ""); + } else { + map.put("pcsn", "%" + map.get("pcsn") + "%"); + } + } + + // 空格查询 + String sap_pcsn = MapUtil.getStr(map, "sap_pcsn"); + if (StrUtil.isNotEmpty(sap_pcsn)) { + // 判断是否有空格 + boolean matches = sap_pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = sap_pcsn.split(" "); + String sap_pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("sap_pcsn_in", "('"+sap_pcsn_in+"')"); + map.put("sap_pcsn", ""); + } else { + map.put("sap_pcsn", "%" + map.get("sap_pcsn") + "%"); + } + } + if (!ObjectUtil.isEmpty(bill_code)) { map.put("bill_code", "%" + bill_code + "%"); } if (!ObjectUtil.isEmpty(material_search)) { map.put("material_search", "%" + material_search + "%"); } - if (!ObjectUtil.isEmpty(box_no)) { - map.put("box_no", "%" + box_no + "%"); - } //获取人员对应的仓库 UserStorServiceImpl userStorService = new UserStorServiceImpl(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/wql/QST_IVT_INANDOUTRETRUN.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/wql/QST_IVT_INANDOUTRETRUN.wql index 27bbbd875..0a69c811e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/wql/QST_IVT_INANDOUTRETRUN.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/wql/QST_IVT_INANDOUTRETRUN.wql @@ -35,6 +35,10 @@ 输入.ids TYPEAS f_string 输入.box_no TYPEAS s_string 输入.in_stor_id TYPEAS f_string + 输入.pcsn_in TYPEAS f_string + 输入.sap_pcsn_in TYPEAS f_string + 输入.vbeln_in TYPEAS f_string + 输入.box_no_in TYPEAS f_string [临时表] @@ -78,9 +82,15 @@ INNER JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id WHERE 1=1 - OPTION 输入.vbeln <> "" - dtl.vbeln = 输入.vbeln + + OPTION 输入.vbeln <> "" + dtl.vbeln like 输入.vbeln ENDOPTION + + OPTION 输入.vbeln_in <> "" + dtl.vbeln IN 输入.vbeln_in + ENDOPTION + OPTION 输入.material_search <> "" ( mb.material_code like 输入.material_search @@ -100,15 +110,30 @@ AND dis.box_no = sub.package_box_sn AND dis.iostorinv_id = sub.bill_id WHERE 1=1 - OPTION 输入.pcsn <> "" - dis.pcsn = 输入.pcsn + OPTION 输入.pcsn <> "" + dis.pcsn like 输入.pcsn ENDOPTION + + OPTION 输入.pcsn_in <> "" + dis.pcsn IN 输入.pcsn_in + ENDOPTION + OPTION 输入.sap_pcsn <> "" - sub.sap_pcsn = 输入.sap_pcsn + sub.sap_pcsn like 输入.sap_pcsn ENDOPTION + + OPTION 输入.sap_pcsn_in <> "" + sub.sap_pcsn IN 输入.sap_pcsn_in + ENDOPTION + OPTION 输入.box_no <> "" dis.box_no like 输入.box_no - ENDOPTION + ENDOPTION + + OPTION 输入.box_no_in <> "" + dis.box_no IN 输入.box_no_in + ENDOPTION + GROUP BY iostorinv_id ) b ON b.iostorinv_id = mst.iostorinv_id diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java index 6370492d6..5f41caf70 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java @@ -295,6 +295,9 @@ public class OutBillQueryServiceImpl implements OutBillQueryService { mp.put("sap批次", json.getString("sap_pcsn")); mp.put("净重", json.getString("net_weight")); mp.put("单位", json.getString("qty_unit_name")); + mp.put("管件类型", json.getString("paper_type")); + mp.put("管件编码", json.getString("paper_code")); + mp.put("管件描述", json.getString("paper_name")); mp.put("客户编码", json.getString("customer_name")); mp.put("发货客户名称", json.getString("customer_description")); if (ObjectUtil.isEmpty(json.getString("sale_order_name"))) { diff --git a/lms/nladmin-system/src/main/resources/config/application.yml b/lms/nladmin-system/src/main/resources/config/application.yml index 13e2de704..3c786edda 100644 --- a/lms/nladmin-system/src/main/resources/config/application.yml +++ b/lms/nladmin-system/src/main/resources/config/application.yml @@ -8,7 +8,7 @@ spring: profiles: active: dev jackson: - time-zone: GMT+8 + time-zone: Asia/Shanghai data: redis: repositories: diff --git a/lms/nladmin-ui/src/views/system/param/index.vue b/lms/nladmin-ui/src/views/system/param/index.vue index e55a3d698..89c99af60 100644 --- a/lms/nladmin-ui/src/views/system/param/index.vue +++ b/lms/nladmin-ui/src/views/system/param/index.vue @@ -162,7 +162,7 @@ export default { const id = '123' // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 - const socketUrl = process.env.VUE_APP_WS_API + id + const socketUrl = window.g.prod.VUE_APP_BASE_API + id this.socket = new WebSocket(socketUrl) // 监听socket打开 this.socket.onopen = function() { diff --git a/lms/nladmin-ui/src/views/tools/storage/index.vue b/lms/nladmin-ui/src/views/tools/storage/index.vue index 985364957..33ed2d58b 100644 --- a/lms/nladmin-ui/src/views/tools/storage/index.vue +++ b/lms/nladmin-ui/src/views/tools/storage/index.vue @@ -94,16 +94,8 @@ - - - - - - + + diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue b/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue index 4f3fb44d9..5c7ff08f1 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue @@ -136,6 +136,25 @@ /> + + + + + + + + @@ -292,7 +313,7 @@ const defaultForm = { } export default { name: 'Structivt', - dicts: ['ST_QUALITY_SCODE', 'product_area', 'IS_OR_NOT'], + dicts: ['ST_QUALITY_SCODE', 'product_area', 'IS_OR_NOT', 'SUB_TYPE'], components: { pagination, crudOperation, rrOperation, udOperation, UploadDialog }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { @@ -348,6 +369,9 @@ export default { return parseFloat(row[column.property]).toFixed(2) } }, + formatSubType(row) { + return this.dict.label.SUB_TYPE[row.sub_type] + }, // 钩子:在获取表格数据之前执行,false 则代表不获取数据 [CRUD.HOOK.beforeRefresh]() { return true diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/stor/index.vue b/lms/nladmin-ui/src/views/wms/basedata/st/stor/index.vue index b4cbebe95..8397d2dfb 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/stor/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/st/stor/index.vue @@ -42,14 +42,8 @@ - - + + @@ -100,13 +94,6 @@ - - - - - - - @@ -292,9 +279,6 @@ export default { stor_name: [ { required: true, message: '仓库名称不能为空', trigger: 'blur' } ], - sysdeptid: [ - { required: true, message: '所属部门不能为空', trigger: 'blur' } - ], stor_capacity: [ { required: false, message: '不能为空', trigger: 'blur' }, { validator: numberOne } diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/struct/OneCreateDialog.vue b/lms/nladmin-ui/src/views/wms/basedata/st/struct/OneCreateDialog.vue new file mode 100644 index 000000000..5d77938be --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/basedata/st/struct/OneCreateDialog.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/struct/index.vue b/lms/nladmin-ui/src/views/wms/basedata/st/struct/index.vue index be120c759..a8398f5a9 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/struct/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/st/struct/index.vue @@ -59,7 +59,18 @@ - + + + 一键生成 + + + + @@ -271,6 +284,7 @@ import rrOperation from '@crud/RR.operation' import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' +import OneCreateDialog from '@/views/wms/basedata/st/struct/OneCreateDialog' import crudSectattr from '@/views/wms/basedata/st/sect/sectattr' import crudUserStor, { getSect } from '@/views/wms/basedata/st/userStor/userStor' /* import checkoutbill from "@/api/wms/st/core/outbill/checkoutbill";*/ @@ -323,7 +337,7 @@ const defaultForm = { export default { name: 'Structattr', dicts: ['ST_HEIGHT_TYPE', 'is_used', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'placement_type'], - components: { pagination, crudOperation, rrOperation, udOperation }, + components: { pagination, crudOperation, rrOperation, udOperation, OneCreateDialog }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ @@ -349,6 +363,7 @@ export default { } } return { + openOneCreateDialog: false, sects: [], invtypelist: [], permission: {}, @@ -413,6 +428,9 @@ export default { sectChange(val) { this.form.sect_id = val[1] }, + openOneCreate() { + this.openOneCreateDialog = true + }, invtypeFormat(row) { for (const item of this.invtypelist) { if (item.code === row.inv_type) { diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/struct/structattr.js b/lms/nladmin-ui/src/views/wms/basedata/st/struct/structattr.js index fbcd30c8e..1f0e417e8 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/struct/structattr.js +++ b/lms/nladmin-ui/src/views/wms/basedata/st/struct/structattr.js @@ -32,4 +32,20 @@ export function changeActive(data) { }) } -export default { add, edit, del, changeActive } +export function oneCreate(data) { + return request({ + url: 'api/structattr/oneCreate', + method: 'post', + data + }) +} + +export function blurQuery(data) { + return request({ + url: 'api/structattr/blurQuery', + method: 'post', + data + }) +} + +export default { add, edit, del, changeActive, oneCreate, blurQuery } diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue index fac90b93f..d103aea66 100644 --- a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue @@ -152,6 +152,16 @@ > 添加库存物料 + + 物料信息导入 + @@ -217,6 +227,7 @@ + @@ -226,6 +237,7 @@ import AddDtl from '@/views/wms/st/inStor/productscrap/AddDtl' import productscrap from '@/views/wms/st/inStor/productscrap/productscrap' import StructDiv from '@/views/wms/pub/StructDialog' import crudUserStor from '@/views/wms/basedata/st/userStor/userStor' +import UploadDialog from '@/views/wms/st/inStor/productscrap/UploadDialog' const defaultForm = { bill_code: '', @@ -243,7 +255,7 @@ const defaultForm = { } export default { name: 'AddDialog', - components: { AddDtl, StructDiv }, + components: { AddDtl, StructDiv, UploadDialog }, mixins: [crud(), form(defaultForm)], props: { dialogShow: { @@ -255,12 +267,14 @@ export default { data() { return { dialogVisible: false, + viewShow: false, dtlShow: false, structShow: false, structShow2: false, flagnow: false, nowrow: {}, nowindex: '', + paramViewShow: '', storlist: [], invtypelist: [], storId: null, @@ -461,6 +475,13 @@ export default { this.form.tableData.splice(i, 1, this.form.tableData[i]) } } + }, + Import() { + if (!this.form.stor_id) { + return this.crud.notify('请先选择仓库!', CRUD.NOTIFICATION_TYPE.INFO) + } + this.paramViewShow = this.form.stor_id + this.viewShow = true } } } diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/UploadDialog.vue b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/UploadDialog.vue new file mode 100644 index 000000000..74be6ec88 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/UploadDialog.vue @@ -0,0 +1,120 @@ + + + + diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/index.vue b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/index.vue index d56bc41b3..46295ba90 100644 --- a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/index.vue @@ -159,6 +159,7 @@ + diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/productscrap.js b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/productscrap.js index 7cf5204f2..2f374ccd4 100644 --- a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/productscrap.js +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/productscrap.js @@ -59,4 +59,11 @@ export function onSubmit(data) { data }) } -export default { add, edit, del, getOutBillDtl, auditPass, auditOut, onSubmit } +export function excelImport(data) { + return request({ + url: 'api/productscrap/importExcel', + method: 'post', + data + }) +} +export default { add, edit, del, getOutBillDtl, auditPass, auditOut, onSubmit, excelImport } diff --git a/lms/nladmin-ui/src/views/wms/st/inbill/index.vue b/lms/nladmin-ui/src/views/wms/st/inbill/index.vue index 1ded6855f..c28b8c827 100644 --- a/lms/nladmin-ui/src/views/wms/st/inbill/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/inbill/index.vue @@ -103,6 +103,24 @@ /> + + + + + + + diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue index 00a0835ff..2f9a18098 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue @@ -256,6 +256,8 @@ + + @@ -282,7 +284,7 @@ export default { name: 'DivDialog', components: { PointDialog, StructIvt }, mixins: [crud()], - dicts: ['io_bill_status', 'ST_QUALITY_SCODE', 'ST_IVT_LEVEL', 'is_used', 'work_status', 'is_usable'], + dicts: ['io_bill_status', 'ST_QUALITY_SCODE', 'ST_IVT_LEVEL', 'is_used', 'work_status', 'is_usable', 'IS_OR_NOT'], props: { dialogShow: { type: Boolean, @@ -387,6 +389,9 @@ export default { ivt_levelFormat(row, column) { return this.dict.label.ST_IVT_LEVEL[row.ivt_level] }, + formatOverdue(row, column) { + return this.dict.label.IS_OR_NOT[row.is_overdue] + }, is_activeFormat(row, column) { return this.dict.label.is_usable[row.is_active] }, diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue b/lms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue index 1e424ea58..8b6a56886 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue @@ -166,7 +166,9 @@ - + + + @@ -187,7 +189,7 @@ export default { name: 'ViewDialog', components: { }, mixins: [crud()], - dicts: ['io_bill_status', 'work_status', 'task_status', 'SCH_TASK_TYPE_DTL','ST_INV_OUT_TYPE', 'INANDOUT_BILL_TYPE'], + dicts: ['io_bill_status', 'work_status', 'task_status', 'SCH_TASK_TYPE_DTL','ST_INV_OUT_TYPE', 'INANDOUT_BILL_TYPE', 'IS_OR_NOT'], props: { dialogShow: { type: Boolean, @@ -246,6 +248,9 @@ export default { taskdtl_typeFormat(row) { return this.dict.label.SCH_TASK_TYPE_DTL[row.taskdtl_type] }, + formatOverdue(row, column) { + return this.dict.label.IS_OR_NOT[row.is_overdue] + }, task_statusFormat(row) { return this.dict.label.task_status[row.task_status] }, diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/index.vue b/lms/nladmin-ui/src/views/wms/st/outbill/index.vue index 5282bafa4..8362bc70a 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/outbill/index.vue @@ -104,6 +104,15 @@ @keyup.enter.native="crud.toQuery" /> + + +