diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java index 451d34124..fcffdf30c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java @@ -1,10 +1,19 @@ package org.nl.b_lms.pda.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.pda.service.VehicleTwoService; +import org.nl.b_lms.sch.point.dao.SchBasePoint; +import org.nl.b_lms.sch.point.service.IschBasePointService; +import org.nl.b_lms.sch.tasks.TwoInEmpExcepTask; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBoxManageService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InVehicleManageService; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.ext.acs.service.WmsToAcsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,16 +34,111 @@ public class VehicleTwoServiceImpl implements VehicleTwoService { @Autowired private InBoxManageService inBoxManageService; + /** + * ACS服务 + */ + @Autowired + private WmsToAcsService wmsToAcsService; + + /** + * 点位服务 + */ + @Autowired + private IschBasePointService ischBasePointService; + @Override @Transactional(rollbackFor = Exception.class) public JSONObject vehicleIn(JSONObject whereJson) { - // 调用接口 - whereJson.put("device_code", whereJson.getString("point_code")); - inVehicleManageService.inVehicle(whereJson); - JSONObject result = new JSONObject(); - result.put("message", "入库成功!"); + String point_code = whereJson.getString("point_code"); + String vehicle_type = whereJson.getString("vehicle_type"); + + // 判断起点是否存在 + SchBasePoint pointDao = ischBasePointService.getOne( + new QueryWrapper().lambda() + .eq(SchBasePoint::getPoint_code, point_code) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是")) + ); + + if (ObjectUtil.isEmpty(pointDao)) { + throw new BadRequestException("点位:"+point_code+"不存在或未启用!"); + } + + // 判断入库叠盘位的 托盘类型是否相同、是否叠满 + JSONObject device_jo = new JSONObject(); + device_jo.put("device_code", "RK1004"); + device_jo.put("product_area", IOSEnum.PRODUCT_AREA.code("BLK")); + + JSONArray device_ja = new JSONArray(); + device_ja.add(device_jo); + JSONObject device_data = wmsToAcsService.getPointStatus(device_ja); + JSONObject data = device_data.getJSONArray("data").getJSONObject(0); + + // 判断是否有货 且托盘类型相同、数量小于5 + if (data.getString("move").equals(IOSEnum.IS_NOTANDYES.code("否")) || + (data.getString("move").equals(IOSEnum.IS_NOTANDYES.code("是")) + && vehicle_type.equals(data.getString("container_type")) + && data.getIntValue("qty") < 5) + ) { + // 生成入库叠盘机输送任务 + JSONObject jsonTaskParam = new JSONObject(); + jsonTaskParam.put("task_type", "010715"); + jsonTaskParam.put("start_device_code", point_code); + jsonTaskParam.put("next_device_code", "RK1004"); + jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code")); + jsonTaskParam.put("vehicle_type", whereJson.getString("vehicle_type")); + + TwoInEmpExcepTask taskBean = new TwoInEmpExcepTask(); + taskBean.createTask(jsonTaskParam); + taskBean.immediateNotifyAcs(null); + + result.put("message", "入库成功!"); + return result; + } + + // 生层到出库口叠盘机任务 + // 判断托盘类型 + String next_device_code = ""; + if (vehicle_type.equals(IOSEnum.IS_NOTANDYES.code("是"))) { + // 小托盘 CK2009 + next_device_code = "CK2009"; + } else { + // 大托盘 CK2011 + next_device_code = "CK2011"; + } + + // 判断点位状态 + device_jo.put("device_code", next_device_code); + + JSONArray device_ja2 = new JSONArray(); + device_ja2.add(device_jo); + JSONObject device_data2 = wmsToAcsService.getPointStatus(device_ja2); + JSONObject data2 = device_data2.getJSONArray("data").getJSONObject(0); + + // 判断是否有货 且数量小于5 + if (data2.getString("move").equals(IOSEnum.IS_NOTANDYES.code("否")) || + (data2.getString("move").equals(IOSEnum.IS_NOTANDYES.code("是")) + && data2.getIntValue("qty") < 5) + ) { + // 生层到出库口叠盘机任务 + JSONObject jsonTaskParam = new JSONObject(); + jsonTaskParam.put("task_type", "010714"); + jsonTaskParam.put("start_device_code", point_code); + jsonTaskParam.put("next_device_code", next_device_code); + jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code")); + jsonTaskParam.put("vehicle_type", whereJson.getString("vehicle_type")); + + TwoInEmpExcepTask taskBean = new TwoInEmpExcepTask(); + taskBean.createTask(jsonTaskParam); + taskBean.immediateNotifyAcs(null); + } else { + result.put("message", "入库失败! 出库叠盘位已叠满!"+next_device_code); + return result; + } + + result.put("message", "入库成功!"); return result; } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInBoxTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInBoxTrussTask.java index e53201fe1..35c9fd25d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInBoxTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInBoxTrussTask.java @@ -40,6 +40,8 @@ public class TwoInBoxTrussTask extends AbstractAcsTask { ArrayList resultList = new ArrayList<>(); for (int i = 0; i < arr.size(); i++) { JSONObject json = arr.getJSONObject(i); + + JSONObject params = json.getJSONObject("params"); char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1); AcsTaskDto dto = AcsTaskDto.builder() .ext_task_id(json.getString("task_id")) @@ -53,6 +55,11 @@ public class TwoInBoxTrussTask extends AbstractAcsTask { .dtl_type(String.valueOf(dtl_type)) .interaction_json(JSONObject.parseObject(json.getString("request_param"))) .remark(json.getString("remark")) + .layer(json.getString("layer")) + .barcode(params.getString("box_no")) + .height(params.getString("height")) + .width(params.getString("width")) + .length(params.getString("length")) .build(); resultList.add(dto); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInEmpExcepTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInEmpExcepTask.java new file mode 100644 index 000000000..9083728ab --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInEmpExcepTask.java @@ -0,0 +1,166 @@ +package org.nl.b_lms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 二期空托盘入库异常任务类 + * Created by Lxy on 2024/1/19. + */ +public class TwoInEmpExcepTask extends AbstractAcsTask { + + /** + * 处理类 + */ + private final String THIS_CLASS = TwoInEmpExcepTask.class.getName(); + + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1); + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .priority(json.getString("priority")) + .class_type(json.getString("task_type")) + .dtl_type("7") + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateTaskStatus(JSONObject taskObj, String status) { + // 更新任务的参数 + JSONObject map = new JSONObject(); + + /* + * 1-执行中, 2-完成 ,0-acs取消 + */ + // 执行中 + if (status.equals(TaskStatusEnum.EXECUTING.getCode())) { + + map.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + } + + // 完成 + if (status.equals(TaskStatusEnum.FINISHED.getCode())) { + + map.put("task_status", TaskStatusEnum.FINISHED.getCode()); + + } + + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + + if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) { + throw new BadRequestException("任务已执行不能取消"); + } + + // 更新任务表删除字段 + map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是")); + } + + map.put("update_optid", SecurityUtils.getCurrentUserId()); + map.put("update_optname", SecurityUtils.getCurrentNickName()); + map.put("update_time", DateUtil.now()); + + WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'"); + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String createTask(JSONObject form) { + + if (StrUtil.isBlank(form.getString("task_type"))) { + throw new BadRequestException("业务类型不能为空!"); + } + + if (StrUtil.isBlank(form.getString("start_device_code"))) { + throw new BadRequestException("起点不能为空!"); + } + + if (StrUtil.isBlank(form.getString("next_device_code"))) { + throw new BadRequestException("终点不能为空!"); + } + + if (StrUtil.isBlank(form.getString("vehicle_code"))) { + throw new BadRequestException("托盘号不能为空!"); + } + + if (StrUtil.isBlank(form.getString("vehicle_type"))) { + throw new BadRequestException("托盘类型不能为空!"); + } + + JSONObject json = new JSONObject(); + json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_type", form.getString("task_type")); + json.put("vehicle_code", form.getString("vehicle_code")); + json.put("vehicle_type", form.getString("vehicle_type")); + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + json.put("point_code1", form.getString("start_device_code")); + json.put("point_code2", form.getString("next_device_code")); + json.put("handle_class", this.getClass().getName()); + json.put("create_id", SecurityUtils.getCurrentUserId()); + json.put("create_name", SecurityUtils.getCurrentUsername()); + json.put("create_time", DateUtil.now()); + json.put("priority", "1"); + json.put("acs_task_type", "7"); + + WQLObject.getWQLObject("SCH_BASE_Task").insert(json); + return json.getString("task_id"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, IOSEnum.ACS_RESULT.code("取消")); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutEmpTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutEmpTask.java index a08fd9b53..a5071535d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutEmpTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutEmpTask.java @@ -89,7 +89,6 @@ public class TwoOutEmpTask extends AbstractAcsTask { JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定")); jsonAttr.put("storagevehicle_code",""); - jsonAttr.put("storagevehicle_type",""); attrTab.update(jsonAttr); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java index 9ad2d433f..028333456 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java @@ -563,10 +563,10 @@ public class SlitterServiceImpl implements SlitterService { throw new BadRequestException("查询不到气胀轴编码「" + qzzNo + "」对应的子卷信息!"); } PdmBiSlittingproductionplan plan; - if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(direction)) { - plan = plans.stream().filter(p -> SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(p.getLeft_or_right())).findFirst().orElse(null); - } else { + if (SlitterConstant.SLITTER_SUB_VOLUME_RIGHT.equals(direction)) { plan = plans.stream().filter(p -> SlitterConstant.SLITTER_SUB_VOLUME_RIGHT.equals(p.getLeft_or_right())).findFirst().orElse(null); + } else { + plan = plans.stream().filter(p -> SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(p.getLeft_or_right())).findFirst().orElse(null); } if (plan == null) { log.error("设备{}, 找不到气胀轴编码{}对应的分切计划!参数:{}", deviceCode, qzzNo, param); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java index 4a0d58f36..967ee0fb5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java @@ -67,6 +67,11 @@ public class BstIvtBoxinfo implements Serializable { */ private String box_high; + /* + * 载具类型 + */ + private String vehicle_type; + /* * 捆绑数量 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java index 92bdbb7ef..adaed425d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java @@ -91,6 +91,9 @@ public enum IOSEnum { //外部系统 EXT_SYSTEM(MapOf.of("mes", "mes","sap","sap","crm","crm")), + // 区域 + PRODUCT_AREA(MapOf.of("BLK", "BLK")), + //acs申请任务 ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1","空盘入库","2","空盘出库","3","异常处理位","4","木箱入库","5","贴标","1","捆扎","2")), ; diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java index 1eda2d531..288a48ad8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java @@ -148,6 +148,15 @@ public class InBoxManageServiceImpl implements InBoxManageService { /* * 插入木箱对应载具表 */ + + //查询对应的木箱信息 + // 查询木箱信息 + BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxinfo::getBox_no, whereJson.getString("box_no")) + ); + + JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'") .uniqueResult(0); @@ -169,9 +178,17 @@ public class InBoxManageServiceImpl implements InBoxManageService { taskParam.put("task_type", "010713"); taskParam.put("start_device_code", whereJson.getString("point_code")); taskParam.put("next_device_code", "1001"); - taskParam.put("vehicle_code", whereJson.getString("box_no")); + taskParam.put("vehicle_code", whereJson.getString("vehicle_code")); taskParam.put("vehicle_code2", whereJson.getString("vehicle_code")); - taskParam.put("layer", whereJson.getString("layer")); + JSONObject param = new JSONObject(); + param.put("layer",whereJson.getString("layer")); + param.put("box_length",boxDao.getBox_length()); + param.put("box_width",boxDao.getBox_width()); + param.put("box_high",boxDao.getBox_high()); + param.put("vehicle_type", boxDao.getVehicle_type()); + param.put("box_no", whereJson.getString("box_no")); + taskParam.put("request_param", param.toString()); + TwoInBoxTrussTask taskBean = new TwoInBoxTrussTask(); taskBean.createTask(taskParam); taskBean.immediateNotifyAcs(null); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InVehicleManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InVehicleManageServiceImpl.java index f66ff27e1..817042929 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InVehicleManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InVehicleManageServiceImpl.java @@ -164,6 +164,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService { JSONArray structArray = attrTab.query("IFNULL(storagevehicle_code,'') = '' " + "AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " + "AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '"+jsonParam.getString("stor_id")+"' " + + "AND storagevehicle_type = '" +jsonParam.getString("vehicle_type")+"'"+ "AND sect_id = '"+jsonParam.getString("sect_id")+"'").getResultJSONArray(0); if (ObjectUtil.isEmpty(structArray)) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INBOX.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INBOX.wql index 728aa8ad2..740615025 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INBOX.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INBOX.wql @@ -140,7 +140,7 @@ AND attr.block_num = 输入.block_num AND attr.row_num = 输入.row_num - order by attr.col_num,attr.layer_num ASC,attr.zdepth DESC + order by attr.col_num DESC,attr.layer_num ASC,attr.zdepth DESC ENDSELECT ENDQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INRULE.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INRULE.wql index ca0bc7b13..c018f32eb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INRULE.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INRULE.wql @@ -212,7 +212,7 @@ attr.row_num = 输入.row_num ENDOPTION - order by attr.col_num DESC ,attr.layer_num ASC,attr.zdepth DESC + order by attr.col_num,attr.layer_num ASC,attr.zdepth DESC ENDSELECT ENDQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INVEHICLE.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INVEHICLE.wql index cb8dac055..c603aa489 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INVEHICLE.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INVEHICLE.wql @@ -22,7 +22,7 @@ 输入.row_in TYPEAS f_string 输入.not_row_in TYPEAS f_string 输入.not_block TYPEAS f_string - 输入.storagevehicle_type TYPEAS s_string + 输入.vehicle_type TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -64,8 +64,8 @@ attr.block_num NOT IN 输入.not_block ENDOPTION - OPTION 输入.storagevehicle_type <> "" - attr.storagevehicle_type = 输入.storagevehicle_type + OPTION 输入.vehicle_type <> "" + attr.storagevehicle_type = 输入.vehicle_type ENDOPTION group by attr.block_num @@ -147,7 +147,7 @@ AND attr.block_num = 输入.block_num AND attr.row_num = 输入.row_num - order by attr.col_num,attr.layer_num ASC,attr.zdepth DESC + order by attr.col_num DESC,attr.layer_num ASC,attr.zdepth DESC ENDSELECT ENDQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_OUTBOX.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_OUTBOX.wql index 9b30a0e8b..aaccdb7b7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_OUTBOX.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_OUTBOX.wql @@ -228,7 +228,7 @@ box.num = 输入.num ENDOPTION - order by attr.col_num, attr.zdepth, attr.layer_num + order by attr.col_num DESC, attr.zdepth, attr.layer_num ENDSELECT ENDQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_OUTVEHICLE.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_OUTVEHICLE.wql index b8b81a94a..9dbab0059 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_OUTVEHICLE.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_OUTVEHICLE.wql @@ -168,7 +168,7 @@ attr.row_num = 输入.row_num ENDOPTION - order by attr.col_num, attr.zdepth + order by attr.col_num DESC, attr.zdepth ENDSELECT ENDQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java index 8756465bd..24674840d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java @@ -63,6 +63,14 @@ public class RawFoilController { return new ResponseEntity<>(rawFoilService.needEmptyAxisTest(whereJson), HttpStatus.OK); } + @PostMapping("/createOrder") + @Log("创建工单") + + public ResponseEntity createOrder(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(rawFoilService.createOrder(whereJson), HttpStatus.OK); + } + + @PostMapping("/needEmptyVehicle") @Log("呼叫空轴") diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java index de5bff4ff..d6076106e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java @@ -44,6 +44,15 @@ public interface RawFoilService { */ JSONObject needEmptyAxisTest(JSONObject whereJson); + /** + * 创建工单 + * + * @param whereJson / + * @return JSONObject + */ + JSONObject createOrder(JSONObject whereJson); + + /** * 呼叫空卷轴 * diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java index 0e581d16e..1e161ca60 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java @@ -393,6 +393,16 @@ public class BakingServiceImpl implements BakingService { if (ObjectUtil.isEmpty(point_code2)) { throw new BadRequestException("没有无货且没有任务的点位类型为出箱的烘箱对接位!"); } + + JSONObject jsonRaw = rawTab.query("container_name = '" + jsonHotIvt.getString("container_name") + "' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonRaw)) { + throw new BadRequestException("未查询到母卷号:" + jsonHotIvt.getString("container_name") + "对应的生箔工单!"); + } + JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonMater)) { + throw new BadRequestException("物料基础信息中无此物料!"); + } + // 3.创建任务 JSONObject param = new JSONObject(); param.put("point_code1", point_code1); @@ -405,15 +415,6 @@ public class BakingServiceImpl implements BakingService { //查询该母卷对应最近的一条入烘箱记录 JSONObject last_hot_mst = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst").query("container_name = '" + jsonHotIvt.getString("container_name") + "' AND io_type = '0' order by confirm_time desc").uniqueResult(0); - JSONObject jsonRaw = rawTab.query("container_name = '" + jsonHotIvt.getString("container_name") + "' and is_delete = '0'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonRaw)) { - throw new BadRequestException("未查询到母卷号:" + jsonHotIvt.getString("container_name") + "对应的生箔工单!"); - } - JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonMater)) { - throw new BadRequestException("物料基础信息中无此物料!"); - } - JSONObject hotParam = new JSONObject(); hotParam.put("container_name", jsonRaw.getString("container_name")); hotParam.put("workorder_id", jsonRaw.getString("workorder_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java index 423bafd5f..69e4185e7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java @@ -203,13 +203,55 @@ public class RawFoilServiceImpl implements RawFoilService { return jo; } + @Override + public JSONObject createOrder(JSONObject whereJson) { + WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表 + WQLObject sbTab = WQLObject.getWQLObject("ST_IVT_SbPointIvt"); // 生箔点位库存表 + JSONObject device_jo = sbTab.query("point_code = '" + whereJson.getString("point_code") + "'").uniqueResult(0); + + String container_name = whereJson.getString("container_name"); + //判断该母卷是否存在工单 + JSONObject raw_jo = WQLObject.getWQLObject("pdm_bi_rawfoilworkorder").query("container_name = '"+container_name+"'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(raw_jo)){ + throw new BadRequestException("当前母卷存在生箔工单,不允许创建!"); + } + + // 插入生箔工序工单表 + JSONObject json = new JSONObject(); + json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("container_name", container_name); + json.put("resource_name", device_jo.getString("ext_code")); + json.put("mfg_order_name", "test"); + json.put("product_name", "741011000000361"); + json.put("description", "铜箔|双面光|原箔|6微米|1350"); + json.put("theory_height", 2000.00); + json.put("eqp_velocity", 20.00); + json.put("up_coiler_date", DateUtil.now()); + json.put("is_reload_send", 0); + json.put("order_type", device_jo.getString("device_type")); + json.put("product_area", "B2"); + json.put("realstart_time", DateUtil.now()); + json.put("status", "01"); + json.put("is_delete", "0"); + json.put("agvno", "0"); + json.put("productin_qty", 0); + json.put("create_id", "1"); + json.put("create_name", "管理员"); + json.put("create_time", DateUtil.now()); + rawTab.insert(json); + + JSONObject jo = new JSONObject(); + jo.put("message", "操作成功!"); + return jo; + } + @Override @Transactional(rollbackFor = Exception.class) public JSONObject needEmptyAxisTest(JSONObject whereJson) { WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表 WQLObject sbTab = WQLObject.getWQLObject("ST_IVT_SbPointIvt"); // 生箔点位库存表 - JSONObject device_jo = sbTab.query("point_code = '"+whereJson.getString("point_code")+"'").uniqueResult(0); + JSONObject device_jo = sbTab.query("point_code = '" + whereJson.getString("point_code") + "'").uniqueResult(0); // 插入生箔工序工单表 JSONObject json = new JSONObject(); json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java index fbcd0967b..d9219d585 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java @@ -118,6 +118,14 @@ public class AcsTaskDto { */ private String empty_site; + private String layer; + private String length; + + private String width; + + private String height; + + private String barcode; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java index 6fe2677c8..803f42d03 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java @@ -39,7 +39,7 @@ public class AcsUtil { product_area = "LK"; } if (jo.containsKey("class_type") && jo.getString("class_type").contains("0107")) { - product_area = "LK"; + product_area = "BLK"; } if (StrUtil.isEmpty(product_area)) { throw new BadRequestException("区域不能为空!下发信息:" + jo.toString()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/URLEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/URLEnum.java index f0082afee..e32539e8e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/URLEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/URLEnum.java @@ -16,6 +16,7 @@ public enum URLEnum { ACS_URL_A3("A3", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_A3").getValue()), ACS_URL_A4("A4", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_A4").getValue()), ACS_URL_LK("LK", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_LK").getValue()), + ACS_URL_BLK("BLK", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_BLK").getValue()), ACS_URL_B2("B2", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_B2").getValue()); private final String product_area; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java index c98d16eab..a99c71e1f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java @@ -375,6 +375,7 @@ public class CheckOutBillController { @PostMapping("/testInEmp") @Log("空载具入库测试") + @SaIgnore public ResponseEntity testInEmp(@RequestBody JSONObject whereJson) { new InVehicleManageServiceImpl().inVehicle(whereJson); return new ResponseEntity<>(HttpStatus.OK); diff --git a/lms/nladmin-ui/public/favicon.ico b/lms/nladmin-ui/public/favicon.ico index fcb69992e..63a158503 100644 Binary files a/lms/nladmin-ui/public/favicon.ico and b/lms/nladmin-ui/public/favicon.ico differ diff --git a/lms/nladmin-ui/src/assets/styles/eladmin.scss b/lms/nladmin-ui/src/assets/styles/eladmin.scss index 0970b01ac..4ed6f2887 100644 --- a/lms/nladmin-ui/src/assets/styles/eladmin.scss +++ b/lms/nladmin-ui/src/assets/styles/eladmin.scss @@ -1,14 +1,17 @@ .head-container { - padding-bottom: 10px; + padding-top: 8px; + padding-bottom: 6px; + background-color: #ffffff; + border-radius: 4px; .filter-item { display: inline-block; vertical-align: middle; - margin: 0 3px 3px 0; + margin: 0 3px 10px 0; input { - height: 28px; - line-height: 28px; + height: 30.5px; + line-height: 30.5px; } } @@ -19,7 +22,7 @@ vertical-align: middle; font-size: 14px; color: #606266; - line-height: 28px; + line-height: 30.5px; padding: 0 7px 0 7px; } @@ -28,7 +31,7 @@ } .el-select__caret.el-input__icon.el-icon-arrow-up { - line-height: 28px; + line-height: 30.5px; } .date-item { @@ -149,7 +152,7 @@ } .el-form-item--mini.el-form-item { - margin-bottom: 8px !important; + margin-bottom: 10px !important; } //去除编辑文本框为数字时的上下箭头start @@ -188,7 +191,7 @@ input[type="number"]::-webkit-outer-spin-button { .el-table__fixed-header-wrapper { th { word-break: break-word; - background-color: #f8f8f9; + background-color: #f5f5f5; color: #515a6e; height: 35px; font-size: 13px; diff --git a/lms/nladmin-ui/src/assets/styles/index.scss b/lms/nladmin-ui/src/assets/styles/index.scss index 21fbda181..c33d34787 100644 --- a/lms/nladmin-ui/src/assets/styles/index.scss +++ b/lms/nladmin-ui/src/assets/styles/index.scss @@ -21,6 +21,7 @@ label { html { height: 100%; box-sizing: border-box; + background-color: #eeeeee; } #app { @@ -98,7 +99,7 @@ div:focus { } aside { - background: #eef1f6; + background: #d40c70; padding: 8px 24px; margin-bottom: 20px; border-radius: 2px; @@ -122,7 +123,7 @@ aside { //main-container全局样式 .app-container { - padding: 20px 20px 45px 20px; + padding: 10px 10px 45px 10px; } .components-container { diff --git a/lms/nladmin-ui/src/assets/styles/variables.scss b/lms/nladmin-ui/src/assets/styles/variables.scss index 384517bb5..1d1c7bffd 100644 --- a/lms/nladmin-ui/src/assets/styles/variables.scss +++ b/lms/nladmin-ui/src/assets/styles/variables.scss @@ -13,17 +13,17 @@ $base-logo-light-title-color: #001529; $base-menu-light-background:#ffffff; // sidebar -$menuText:#bfcbd9; +$menuText: #ffffff; $menuActiveText:#409EFF; -$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951 +$subMenuActiveText: #ffffff; // https://github.com/ElemeFE/element/issues/12951 -$menuBg:#304156; //https://cloud.tencent.com/developer/article/1753773 -$menuHover:#263445; +$menuBg: #001529; //https://cloud.tencent.com/developer/article/1753773 +$menuHover:#4e5465; $base-menu-light-color:rgba(0,0,0,.70); -$subMenuBg:#1f2d3d; -$subMenuHover:#001528; +$subMenuBg:#000c17; +$subMenuHover:#4e5465; $sideBarWidth: 205px; @@ -45,4 +45,4 @@ $sideBarWidth: 205px; logoLightTitleColor: $base-logo-light-title-color } -$base-sidebar-width: 200px; +$base-sidebar-width: 2010px; diff --git a/lms/nladmin-ui/src/components/Crud/CRUD.operation.vue b/lms/nladmin-ui/src/components/Crud/CRUD.operation.vue index 4c5cc02cc..b3c07b89b 100644 --- a/lms/nladmin-ui/src/components/Crud/CRUD.operation.vue +++ b/lms/nladmin-ui/src/components/Crud/CRUD.operation.vue @@ -258,6 +258,7 @@ export default { display: -webkit-flex; display: flex; align-items: center; + margin: 0px 10px 0px 10px; } .crud-opts .crud-opts-right { margin-left: auto;