From 3d038430f3561f3de8c489047c2a035c41afa374 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Thu, 16 Oct 2025 16:55:56 +0800 Subject: [PATCH] =?UTF-8?q?add:CTU=E5=87=BA=E5=85=A5=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nladmin-system/nlsso-server/pom.xml | 8 +- .../service/dto/StructattrChangeDto.java | 1 + .../impl/BsrealStorattrServiceImpl.java | 1 - .../service/impl/StructattrServiceImpl.java | 10 +- .../impl/diy/SameBlockNumRuleHandler.java | 7 +- .../service/impl/GateWayServiceImpl.java | 41 ++- .../service/impl/PdaIosInServiceImpl.java | 17 +- .../service/impl/PdaIosOutServiceImpl.java | 64 ++-- .../service/impl/SchBaseTaskServiceImpl.java | 3 +- .../service/util/tasks/BackInTask.java | 2 +- .../service/util/tasks/CtuInTask.java | 302 ++++++++++++++++++ .../service/util/tasks/StOutTask.java | 2 +- .../enums/IOSConstant.java | 12 + .../service/impl/OutBillServiceImpl.java | 7 +- .../impl/RawAssistIStorServiceImpl.java | 2 - .../service/util/UpdateIvtUtils.java | 6 +- .../src/main/resources/private_key.txt | 1 + nladmin-ui/public/screen/index.html | 2 +- nladmin-ui/src/router/routers.js | 6 + nladmin-ui/src/utils/request.js | 6 + nladmin-ui/src/views/features/licenseTip.vue | 131 ++++++++ nladmin-ui/src/views/system/timing/index.vue | 65 ++-- .../src/views/wms/basedata/sectattr/index.vue | 10 +- nladmin-ui/src/views/wms/st/outbill/index.vue | 9 + 24 files changed, 632 insertions(+), 83 deletions(-) create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CtuInTask.java create mode 100644 nladmin-system/nlsso-server/src/main/resources/private_key.txt create mode 100644 nladmin-ui/src/views/features/licenseTip.vue diff --git a/nladmin-system/nlsso-server/pom.xml b/nladmin-system/nlsso-server/pom.xml index 6006c7b..83b844a 100644 --- a/nladmin-system/nlsso-server/pom.xml +++ b/nladmin-system/nlsso-server/pom.xml @@ -53,7 +53,13 @@ jna 5.6.0 - + + org.nl + nl-verify-check-sdk + 1.0-SNAPSHOT + system + ${project.basedir}/lib/nl-verify-check-sdk-1.0-SNAPSHOT.jar + net.java.dev.jna jna-platform diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrChangeDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrChangeDto.java index 8cbc408..8b8ea7a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrChangeDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrChangeDto.java @@ -13,6 +13,7 @@ public class StructattrChangeDto { String inv; String structCode; String storagevehicleCode; + //默认fale,true则是如果出库是手持库出确认则不在这边变动组盘信息 Boolean inBound; String taskType; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/BsrealStorattrServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/BsrealStorattrServiceImpl.java index d8c0b22..7838ccc 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/BsrealStorattrServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/BsrealStorattrServiceImpl.java @@ -172,7 +172,6 @@ public class BsrealStorattrServiceImpl extends ServiceImpl records = new ArrayList<>(); List groupPlates = iMdPbGroupplateService.list(new QueryWrapper() .eq("storagevehicle_code", changeDto.getStoragevehicleCode()) .eq("status", IOSEnum.GROUP_PLATE_STATUS.code("入库"))); - List records = new ArrayList<>(); - //更新冻结数量 - Structattr structattr = this.getByCode(changeDto.getStructCode()); for (GroupPlate vehicleMater : groupPlates) { String vehicleCode = vehicleMater.getStoragevehicle_code(); BigDecimal subtract = vehicleMater.getQty().subtract(vehicleMater.getFrozen_qty()); //100-出50 = 50 //如果出库是手持库出确认则不在这边变动组盘信息 if (!changeDto.getInBound()){ + String status = subtract.compareTo(BigDecimal.ZERO) > 0 ? IOSEnum.GROUP_PLATE_STATUS.code("组盘"):IOSEnum.GROUP_PLATE_STATUS.code("出库"); UpdateWrapper update = new UpdateWrapper() .set("frozen_qty", 0) .set("qty", subtract) .set("update_time", now) - .set("status", IOSEnum.GROUP_PLATE_STATUS.code("组盘")) + .set("status",status) .eq("group_id", vehicleMater.getGroup_id()); iMdPbGroupplateService.update(update); + iMdPbGroupplateService.update(update); } StIvtStructivtflow record = new StIvtStructivtflow(); record.setId(IdUtil.getStringId()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/SameBlockNumRuleHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/SameBlockNumRuleHandler.java index 431ada6..2394a3a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/SameBlockNumRuleHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/SameBlockNumRuleHandler.java @@ -51,21 +51,20 @@ public class SameBlockNumRuleHandler extends Decisioner .thenComparing(Structattr::getLayer_num)) .collect(Collectors.toList()); List result = new ArrayList<>(); - // 3. 找出所有层号(去重 + 升序) + // 3. 找出所有层号 Set allLayers = blockList.stream() .map(Structattr::getLayer_num) .collect(Collectors.toCollection(TreeSet::new)); // 自动排序 - // 4. 从小层号开始,尝试找同一列的货位 + // 4. 从小层号开始,找同一列的货位 for (Integer layer : allLayers) { List currentLayer = blockList.stream() .filter(item -> item.getLayer_num().compareTo(layer) == 0) .collect(Collectors.toList()); if (!currentLayer.isEmpty()) { result.addAll(currentLayer); - break; // 找到一层就跳出 + break; } } - // 5. 如果没找到符合的,就用全部 blockList if (result.isEmpty()) { result.addAll(blockList); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/impl/GateWayServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/impl/GateWayServiceImpl.java index a6a967f..547446b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/impl/GateWayServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/impl/GateWayServiceImpl.java @@ -4,9 +4,11 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.RedissonUtils; @@ -18,6 +20,7 @@ import org.nl.wms.gateway.dto.FeedBackTaskDto; import org.nl.wms.gateway.dto.InteracteDto; import org.nl.wms.gateway.dto.RcsResponse; import org.nl.wms.gateway.service.IGateWayService; +import org.nl.wms.pda.ios_manage.service.impl.PdaIosInServiceImpl; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; @@ -25,6 +28,9 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.TaskFactory; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_management.service.dao.GroupPlate; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; @@ -46,7 +52,11 @@ import java.util.concurrent.atomic.AtomicReference; @Slf4j @Service public class GateWayServiceImpl implements IGateWayService { - + /** + * 组盘记录服务 + */ + @Autowired + private IMdPbGroupplateService iMdPbGroupplateService; @Autowired private TaskFactory taskFactory; @@ -61,6 +71,11 @@ public class GateWayServiceImpl implements IGateWayService { @Autowired private ISchBaseTaskService iSchBaseTaskService; + @Autowired + private PdaIosInServiceImpl pdaIosInServiceImpl; + + + public String applyTask(String service, String type, JSONObject data, InteracteDto param) { if ("InStorage".equals(service)) { try { @@ -96,6 +111,30 @@ public class GateWayServiceImpl implements IGateWayService { result.put("taskCode", taskCode); }, param.getService() + param.getType(), null); } + if ("CtuInStorage".equals(service)) { + RedissonUtils.lock(() -> { + //tofix + String vehicleCode = jsonObject.keySet().iterator().next(); + String siteCode = jsonObject.getString(vehicleCode); + Assert.noNullElements(new Object[]{vehicleCode, siteCode}, "站点编号与料箱号不能为空"); + List groupPlateList = iMdPbGroupplateService.list( + new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code,vehicleCode) + .lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + ); + JSONObject jsonData = new JSONObject(); + jsonData.put("vehicle_code", vehicleCode); + jsonData.put("site_code", siteCode); + jsonData.put("sect_id", "1940612379800899585"); + jsonData.put("stor_code", "CTU"); + if(ObjectUtils.isEmpty(groupPlateList)) { + jsonData.put("is_empty_vehicle","1"); + } + pdaIosInServiceImpl.confirmIn(jsonData); + // String taskCode = gateWayServiceImpl.applyTask(param.getService(), type, jsonObject, param); + // result.put("taskCode", taskCode); + }, param.getService() + param.getType(), null); + } if ("Task".equals(service)) { iSchBaseTaskService.operation(jsonObject); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java index 127404f..b41c049 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -65,6 +66,7 @@ import static org.nl.wms.warehouse_management.enums.IOSEnum.GROUP_PLATE_STATUS; * @since 2025-06-05 */ @Service +@Slf4j public class PdaIosInServiceImpl implements PdaIosInService { @Autowired @@ -566,7 +568,8 @@ public class PdaIosInServiceImpl implements PdaIosInService { //库存校验 Structattr structattr = iStructattrService.getOne(new LambdaUpdateWrapper().eq(Structattr::getStoragevehicle_code, whereJson.getString("vehicle_code"))); if (structattr != null) { - throw new BadRequestException("此载具已在库内:" + structattr.getStruct_code() + " 中,请检查!"); + log.error("此载具:"+whereJson.getString("vehicle_code")+"已存在:" + structattr.getStruct_code() + " 中,请检查!"); + throw new BadRequestException("此载具:"+whereJson.getString("vehicle_code")+"已存在:" + structattr.getStruct_code() + " 中,请检查!"); } Sectattr sectDao = updateIvtUtils.checkVehicleType(whereJson.getString("sect_id"), whereJson.getString("vehicle_code")); whereJson.put("stor_code", sectDao.getStor_code()); @@ -609,11 +612,13 @@ public class PdaIosInServiceImpl implements PdaIosInService { }); taskJson.put("tableMater", tableMater); iRawAssistIStorService.divPoint(taskJson); - //更新组盘表状态 - mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper() - .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) - .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) - .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))); + if (!"CTU".equals(whereJson.getString("stor_code"))) { + //更新组盘表状态 + mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper() + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) + .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))); + } } else { //空载具入库 whereJson.put("qty", 1); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java index c3816e6..b6fb10a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java @@ -78,6 +78,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { */ @Autowired private MdPbGroupplateMapper mdPbGroupplateMapper; + /** * 库区服务 */ @@ -647,6 +648,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { @Override @Transactional(rollbackFor = Exception.class) public PdaResponse outStorageConfirm(JSONObject whereJson) { + String now = DateUtil.now(); //任务校验 SchBaseTask task = iSchBaseTaskService.getOne(new LambdaQueryWrapper().eq(SchBaseTask::getVehicle_code, whereJson.getString("storagevehicle_code")).lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())); if (ObjectUtil.isNotEmpty(task)) { @@ -666,13 +668,28 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { //自动送回空载具 autoReturnEmptyVehicle(whereJson, pointDao); } else { - List groupPlateList = iMdPbGroupplateService.list( - new LambdaQueryWrapper() - .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) - .lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) - ); - if (groupPlateList.stream().anyMatch(r -> r.getQty().compareTo(BigDecimal.ZERO) > 0)) { - throw new BadRequestException("该载具:" + whereJson.getString("storagevehicle_code") + "存在拣选余料或混托物料,不能直接出库确认,请选择拣选余料回库。"); + // List groupPlateList = iMdPbGroupplateService.list( + // new LambdaQueryWrapper() + // .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + // .lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + // ); + // if (groupPlateList.stream().anyMatch(r -> r.getQty().compareTo(BigDecimal.ZERO) > 0)) { + // throw new BadRequestException("该载具:" + whereJson.getString("storagevehicle_code") + "存在拣选余料或混托物料,不能直接出库确认,请选择拣选余料回库。"); + // } + List groupPlates = iMdPbGroupplateService.list(new QueryWrapper() + .eq("storagevehicle_code", whereJson.getString("storagevehicle_code")) + .eq("status", IOSEnum.GROUP_PLATE_STATUS.code("入库"))); + for (GroupPlate vehicleMater : groupPlates) { + BigDecimal subtract = vehicleMater.getQty().subtract(vehicleMater.getFrozen_qty()); + //100-出50 = 50 + String status = subtract.compareTo(BigDecimal.ZERO) > 0 ? IOSEnum.GROUP_PLATE_STATUS.code("组盘"):IOSEnum.GROUP_PLATE_STATUS.code("出库"); + UpdateWrapper update = new UpdateWrapper() + .set("frozen_qty", 0) + .set("qty", subtract) + .set("update_time", now) + .set("status",status) + .eq("group_id", vehicleMater.getGroup_id()); + iMdPbGroupplateService.update(update); } //载具解绑 iSchBasePointService.update(new SchBasePoint(), new LambdaUpdateWrapper<>(SchBasePoint.class) @@ -680,18 +697,29 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { .set(SchBasePoint::getIos_id, BaseDataEnum.IS_YES_NOT.code("否")) .eq(SchBasePoint::getPoint_code, pointDao.getPoint_code()) ); + //仓位解绑 + UpdateWrapper wrapper = new UpdateWrapper() + .set("update_time", now) + .set("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")) + .set("storagevehicle_code", null) + .eq("storagevehicle_code", whereJson.getString("storagevehicle_code")); + iStructattrService.update(wrapper); + // StructattrChangeDto changeDto = StructattrChangeDto.builder() + // .storagevehicleCode(whereJson.getString("storagevehicle_code")) + // .structCode(task.getPoint_code1()).taskType(task.getConfig_code()).inBound(false).build(); + // iStructattrService.changeStruct(changeDto); //物料全部出库 - if (CollectionUtils.isNotEmpty(groupPlateList)) { - LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); - Set plateCodes = groupPlateList.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet()); - update.set(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库")) - .set(GroupPlate::getUpdate_time, DateUtil.now()) - .set(GroupPlate::getCreate_time, DateUtil.now()) - .set(GroupPlate::getRemark, SecurityUtils.getCurrentNickName() + "于" + DateUtil.now() + "使用手持扫码确认出库。") - .set(GroupPlate::getUpdate_optname, SecurityUtils.getCurrentNickName()) - .in(GroupPlate::getGroup_id, plateCodes); - mdPbGroupplateMapper.update(null, update); - } + // if (CollectionUtils.isNotEmpty(groupPlateList)) { + // LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + // Set plateCodes = groupPlateList.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet()); + // update.set(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库")) + // .set(GroupPlate::getUpdate_time, DateUtil.now()) + // .set(GroupPlate::getCreate_time, DateUtil.now()) + // .set(GroupPlate::getRemark, SecurityUtils.getCurrentNickName() + "于" + DateUtil.now() + "使用手持扫码确认出库。") + // .set(GroupPlate::getUpdate_optname, SecurityUtils.getCurrentNickName()) + // .in(GroupPlate::getGroup_id, plateCodes); + // mdPbGroupplateMapper.update(null, update); + // } } return PdaResponse.requestOk(); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java index f177570..9d2fa51 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java @@ -16,6 +16,7 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.sch_manage.enums.StatusEnum; @@ -102,7 +103,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl().eq(Structattr::getStoragevehicle_code, vehicleCode)); + // if (structattr != null) { + // throw new BadRequestException("此载具已在库内:" + structattr.getStruct_code() + " 中,请检查!"); + // } + // List groupPlateList = iMdPbGroupplateService.list( + // new LambdaQueryWrapper() + // .eq(GroupPlate::getStoragevehicle_code, vehicleDao.getStoragevehicle_code()) + // .lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + // ); + // if (ObjectUtils.isEmpty(groupPlateList)) { + // throw new BadRequestException("该载具号未组盘,请检查"); + // } + json.put("vehicle_code", vehicleCode); + json.put("point_code1", startPoint); + String endPoint = getEndPoint(vehicleCode); + json.put("point_code2", endPoint); + updateIvtUtils.checkTask(json); + try { + UpdateWrapper updateWrapper = new UpdateWrapper() + .set("storagevehicle_code", vehicleCode) + .set("lock_type", IOSEnum.LOCK_TYPE.code("入库锁")) + .set("update_time", DateUtil.now()) + .set("update_optname", SecurityUtils.getCurrentNickName()) + .eq("struct_code", endPoint); + iStructattrService.update(updateWrapper); + } catch (Exception e) { + throw new BadRequestException("当前载具:" + vehicleCode + ",已绑定仓位,CTU申请任务失败,请检查仓位信息!" + e.getMessage()); + } + SchBaseTask task = new SchBaseTask(); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setAcs_trace_id(json.getString("acs_task_type")); + task.setVehicle_code(vehicleCode); + task.setPoint_code1(startPoint); + task.setPoint_code2(endPoint); + task.setRequest_param(json.toString()); + task.setVehicle_type(json.getString("vehicle_type")); + task.setConfig_code(IOSConstant.CTU_IN_TASK); + taskService.create(task); + return task.getTask_code(); + } + + public String getEndPoint(String vehicleCode) { + QueryWrapper query = new QueryWrapper() + .eq("is_used", true) + .eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")) + .eq("stor_code", StatusEnum.STOCK_INFO.code("二楼ctu缓存库")); + query.isNull("storagevehicle_code"); + List list = iStructattrService.list(query); + List structList = sameBlockNumRuleHandler.handler(list, null); + if (CollectionUtils.isEmpty(structList)) { + //iSchBasePointService.sendErrorMsg("1", null, "当前载具:" + vehicleCode + "CTU申请任务失败,没有可用仓位!"); + throw new BadRequestException("当前载具:" + vehicleCode + "CTU申请任务失败,没有可用仓位!"); + } + // Map map = SpringContextHolder.getBean(DecisionHandler.class) + // .dispenseTransa(ListOf.of("limitStorage","depthPriority","nearby"), new JSONObject(MapOf.of("stor_code", stIvtStructattr.getStor_code() + // ,"vehicleCode",task.getVehicle_code(), + // "startPoint",task.getPoint_code1()))); + // String new_struct_code = ((Map) map.get("form_data")).get("end_struct_code"); + log.info("货位绑定成功" + structList.get(0).getStruct_code() + "_" + vehicleCode); + return structList.get(0).getStruct_code(); + } + + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + if (taskDao.getPoint_code2().contains("-")) { + acsTaskDto.setNext_device_code(taskDao.getPoint_code2().replace('-', '_')); + } + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setTask_type("1"); + return acsTaskDto; + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("已完成"); + taskService.updateById(taskObj); + // 更新终点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) + .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) + .set(Structattr::getTaskdtl_id, null) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + List plates = mdPbGroupplateMapper.selectList( + new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()) + .lt(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库")) + ); + //更新组盘信息 + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(plates)) { + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + Set plateCodes = plates.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet()); + update.set(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("入库")) + .set(GroupPlate::getUpdate_time, DateUtil.now()) + .set(GroupPlate::getCreate_time, DateUtil.now()) + .in(GroupPlate::getGroup_id, plateCodes); + mdPbGroupplateMapper.update(null, update); + } + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) { + throw new BadRequestException("任务状态必须为生成才能取消任务"); + } + this.cancelTask(taskObj); + + } + + @Override + public void backMes(String task_code) { + } + + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj) { + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("已完成"); + taskService.updateById(taskObj); + // 更新终点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) + .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) + .set(Structattr::getTaskdtl_id, null) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + List plates = mdPbGroupplateMapper.selectList( + new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()) + .lt(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库")) + ); + //更新组盘信息 + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(plates)) { + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + Set plateCodes = plates.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet()); + update.set(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("入库")) + .set(GroupPlate::getUpdate_time, DateUtil.now()) + .set(GroupPlate::getCreate_time, DateUtil.now()) + .in(GroupPlate::getGroup_id, plateCodes); + mdPbGroupplateMapper.update(null, update); + } + } + + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj) { + //分配表清除任务 + ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class) + .set(IOStorInvDis::getTask_id, null) + .set(IOStorInvDis::getPoint_code, null) + .set(IOStorInvDis::getIs_issued, 0) + .set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成")) + .eq(IOStorInvDis::getTask_id, taskObj.getTask_id()) + ); + // 更新任务状态 + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark("已取消"); + taskService.updateById(taskObj); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java index a92336c..4782d32 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java @@ -69,7 +69,7 @@ public class StOutTask extends AbstractTask { task.setVehicle_type(json.getString("vehicle_type")); task.setGroup_id(json.getString("group_id")); task.setRequest_param(json.toString()); - task.setHandle_status(json.getString("vehicle_type")); + task.setHandle_status(json.getString("handle_status")); task.setIs_auto_confirm(StringUtils.isNotBlank(json.getString("is_auto_confirm"))?json.getInteger("is_auto_confirm"):0); task.setAcs_trace_id(json.getString("acs_task_type")); task.setCreate_id(SecurityUtils.getCurrentUserId()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java index 0d7c92b..8f2adf6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java @@ -105,4 +105,16 @@ public class IOSConstant { */ public final static String XB_OUT_TASK = "XbOutTask"; + + /** + * CTU入库 + */ + public final static String CTU_IN_TASK = "CtuInTask"; + + + /** + * CTU出库 + */ + public final static String CTU_OUT_TASK = "CtuOutTask"; + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java index 3e3ff23..05f2b04 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java @@ -177,8 +177,8 @@ public class OutBillServiceImpl extends ServiceImpl } List billTypeCollect = ObjectUtil.isNotEmpty(bill_type) ? Arrays.stream(bill_type).collect(Collectors.toList()) : null; - IPage SS= ioStorInvMapper.queryOutBillPage(new Page<>(page.getPage()+1,page.getSize()),map,billTypeCollect); - return SS; + IPage result= ioStorInvMapper.queryOutBillPage(new Page<>(page.getPage()+1,page.getSize()),map,billTypeCollect); + return result; } @Override @@ -1015,6 +1015,7 @@ public class OutBillServiceImpl extends ServiceImpl task_form.put("point_code1", ioStorInvDis.getStruct_code()); task_form.put("point_code2", pointCode); task_form.put("vehicle_code", ioStorInvDis.getStoragevehicle_code()); + task_form.put("handle_status",BaseDataEnum.IS_YES_NOT.code("是")); StOutTask stOutTask = SpringContextHolder.getBean("STOutTask"); String task_id = stOutTask.create(task_form); //更新点位 @@ -1234,7 +1235,7 @@ public class OutBillServiceImpl extends ServiceImpl StructattrChangeDto changeDto = StructattrChangeDto.builder() .inv(ioStorInvDis.getIostorinv_id()) .storagevehicleCode(ioStorInvDis.getStoragevehicle_code()) - .structCode(ioStorInvDis.getStruct_code()).taskType(task.getConfig_code()).inBound(false).build(); + .structCode(ioStorInvDis.getStruct_code()).taskType(task.getConfig_code()).inBound(true).build(); iStructattrService.changeStruct(changeDto); int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) .eq(IOStorInvDis::getIostorinvdtl_id, ioStorInvDis.getIostorinvdtl_id()) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java index 6a9bca7..59a6b53 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java @@ -548,9 +548,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl query = new QueryWrapper().lambda() .eq(GroupPlate::getStoragevehicle_code, where.getString("storagevehicle_code")) .eq(GroupPlate::getMaterial_id, where.getString("material_id")) @@ -395,10 +397,12 @@ public class UpdateIvtUtils { Sectattr sectDao = iSectattrService.getById(sectId); String vehicleTypeList = sectDao.getExt_id(); if (StringUtils.isBlank(vehicleTypeList)) { + log.error("库区:【" + sectDao.getSect_code() + "】未配置允许的载具类型!"); throw new BadRequestException("库区:【" + sectDao.getSect_code() + "】未配置允许的载具类型!"); } List allowedVehicleTypes = Arrays.asList(vehicleTypeList.split(",")); if (!allowedVehicleTypes.contains(vehicleType)) { + log.error("该载具类型【" + mdPbStoragevehicleinfo.getStoragevehicle_name() + "】不在仓库【"+sectDao.getSect_name()+"】的出入库范围内!"); throw new BadRequestException("该载具类型【" + mdPbStoragevehicleinfo.getStoragevehicle_name() + "】不在仓库【"+sectDao.getSect_name()+"】的出入库范围内!"); } return sectDao; diff --git a/nladmin-system/nlsso-server/src/main/resources/private_key.txt b/nladmin-system/nlsso-server/src/main/resources/private_key.txt new file mode 100644 index 0000000..7ae8272 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/resources/private_key.txt @@ -0,0 +1 @@ +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCBbWQ38mZdmOX379myX/NFn/qFIeP3kbogDiWlGtc1JNt6eDSsOEShUNj3o8Jo5Qaepyo6j4stP4WpmCAUFsdyOodzU0R60P7gFOR1OIdKyyQ2OS9J1MdNXRRuksfD1WVG+azoB+huQo2D52bcXSjnu1UDRDrXN3XXZgh1L2V/aDg+Gi9QAIsMDHtN62zKsHs4tlClHt0KORSdAxN9RjPzUFNYXfxW3dNTM9zfltoM2bgeUfG61F5EMipkAEVjDb4+Pu2BsNUamjy85eKDWA8NxDU6uuDkxLNiLx5KipLxOR+EM4/cOqRwHdEj8matpGlqBSOfOxXd6Sh5XmVStBjtAgMBAAECggEAQCbcme6IVrRGqJI2MXfluQkGv56AxGFzBBh/CEs5iJnwP8/9K6/oNJ1CLdz5q8x5b4IkKEqmDZOCyQEiRVLVIQVpxfvr4YReEOvKIWAXjzcJh+boTYwuDWapjfUrFyJaxMdUsN3ak2xhgJPeJDP45oOwK6JSGALhYhas8oi/olptl3leZs/5Z3h9UE69u80XRdhjtGyfS3AOOtT6dVcfKw6H8tmoKmx43ZfPvoV+a7hcwHO587mI1epAhYGOn81e5QoNBegiCEv9KutuZtauJuGHKcsvNh/FK8QujRJ1TFxOsMtxsJWZfxQxUuvJ0PulCpGpmkuHFNGDmV3ukJO1AQKBgQC8eiTaWgq8eCrIOi5fYtXQUmzv2e5BOhMrRyUWoB30N7GmKcdNGT5HJVXztidcBj53cNd8T6t5yTwYFrdZ5Lll7ItPAub25CSnGQU2nmceHK+46PNlQfLZRrlyeUuGYJTHVZanV+6Pneqn+6XifTa969HzpejpiJuG8iYVmcztfQKBgQCvy5ha6tBS+sIrjXL8/lrxXMDm4xT3CnCLmBqInppLwfFOgcQFzYWL6SQSJ7k3uC+xFT++VgsRLz/pQrVLsQzkY6mUF8sI7F0kevy/jAFzl9cgFn9BXu1ATyWloQIAX/UdSbzSWxIH3BW3BNOWZ0x91HUqBDAFzyLBkIns8LZ0MQKBgQCyg9oN+kS69/JFjV3IuLsdQkSt9LNGknP/hLYrNOLKIkofwOhlLOigyEsdt0SWU8+sn3Np6afXhPNnOXTWLt4vHJlh77TE2ZehsQAQGH5Athj1waZvHMSgaO1S8HHJSAcCuh0kSRPKcV8FVkNrPv+vaQGFjXoKX3o3mXja8r53nQKBgQCElQVj1GKnoo1csYJ+wgqurCikObFvG8WD0oR4cz2lUzD956qCQd2thnj45FKxbk0xvffkQhp4rG0ELJZ07qPtgCi+Ey/CnBknUUZb5GiX2HWbsrvo/oHqlYasIwFSbQx9OUaaU6sGmHscHBzD+0ZaRCjVNnFNgEoTOEJ9m5HPkQKBgQC0Kd29rQMIm5wXhIyW+bVdwmEyB/Xuq6Ch7lVVfZ6WMSoDbQZdYH3Mxw+yzjYpcS8jf/7x7mYH9Z0ggXwX7CAcRqhpjtKU800KzwQ2Cnd7Jmgq56Mn/e70J4btH73EZB6sm7vmhIuBZZlvc3oYGeJN/t/9vLwomFqrlXVw318J2A== diff --git a/nladmin-ui/public/screen/index.html b/nladmin-ui/public/screen/index.html index eac0eae..65e9df8 100644 --- a/nladmin-ui/public/screen/index.html +++ b/nladmin-ui/public/screen/index.html @@ -1 +1 @@ -欧伦可视化看板
\ No newline at end of file +欧伦可视化看板
\ No newline at end of file diff --git a/nladmin-ui/src/router/routers.js b/nladmin-ui/src/router/routers.js index 345a678..7f257a5 100644 --- a/nladmin-ui/src/router/routers.js +++ b/nladmin-ui/src/router/routers.js @@ -60,6 +60,12 @@ export const constantRouterMap = [ meta: { title: i18n.t('common.Personal_center') } } ] + }, + { + path: '/999', + meta: { title: '无授权码', noCache: true }, + component: (resolve) => require(['@/views/features/licenseTip'], resolve), + hidden: true } ] diff --git a/nladmin-ui/src/utils/request.js b/nladmin-ui/src/utils/request.js index fb21e1a..d1511df 100644 --- a/nladmin-ui/src/utils/request.js +++ b/nladmin-ui/src/utils/request.js @@ -66,6 +66,12 @@ service.interceptors.response.use( Cookies.set('point', 401) location.reload() }) + } else if (code === 402) { + router.push({ path: '/999', + query: { + message: error.response.data.message + } + }) } else if (code === 403) { router.push({ path: '/401' }) } else { diff --git a/nladmin-ui/src/views/features/licenseTip.vue b/nladmin-ui/src/views/features/licenseTip.vue new file mode 100644 index 0000000..31b7be0 --- /dev/null +++ b/nladmin-ui/src/views/features/licenseTip.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/nladmin-ui/src/views/system/timing/index.vue b/nladmin-ui/src/views/system/timing/index.vue index c57bbcf..14ff03c 100644 --- a/nladmin-ui/src/views/system/timing/index.vue +++ b/nladmin-ui/src/views/system/timing/index.vue @@ -136,7 +136,7 @@ {{ scope.row.is_pause ? $t('Scheduling.table.recover') : $t('Scheduling.table.pause') }} - -

{{ $t('Scheduling.msg.tip1') }}

-
- - {{ $t('common.Cancel') }} - - - {{ $t('common.Confirm') }} - -
- - {{ $t('common.Delete') }} - -
+ + + + + + + + + + + + + + + + + + +
@@ -236,8 +236,7 @@ export default { delLoading: false, permission: { add: ['admin', 'timing:add'], - edit: ['admin', 'timing:edit'], - del: ['admin', 'timing:del'] + edit: ['admin', 'timing:edit'] }, rules: { job_name: [ @@ -312,17 +311,17 @@ export default { console.log(id) }, delMethod(id) { - this.delLoading = true - crudJob.del([id]).then(() => { - this.delLoading = false - this.$refs[id].doClose() - this.crud.dleChangePage(1) - this.crud.delSuccessNotify() - this.crud.toQuery() - }).catch(() => { - this.delLoading = false - this.$refs[id].doClose() - }) + // this.delLoading = true + // crudJob.del([id]).then(() => { + // this.delLoading = false + // this.$refs[id].doClose() + // this.crud.dleChangePage(1) + // this.crud.delSuccessNotify() + // this.crud.toQuery() + // }).catch(() => { + // this.delLoading = false + // this.$refs[id].doClose() + // }) }, // 显示日志 doLog() { diff --git a/nladmin-ui/src/views/wms/basedata/sectattr/index.vue b/nladmin-ui/src/views/wms/basedata/sectattr/index.vue index 5b7521e..a7d3d7d 100644 --- a/nladmin-ui/src/views/wms/basedata/sectattr/index.vue +++ b/nladmin-ui/src/views/wms/basedata/sectattr/index.vue @@ -59,17 +59,17 @@ - + @@ -270,7 +270,7 @@ export default { sect_type_attr: [ { required: true, message: '库区类型不能为空', trigger: 'blur' } ], - stor_id: [ + stor_code: [ { required: true, message: '仓库标识不能为空', trigger: 'blur' } ], capacity: [ diff --git a/nladmin-ui/src/views/wms/st/outbill/index.vue b/nladmin-ui/src/views/wms/st/outbill/index.vue index 42a1ddb..41f4078 100644 --- a/nladmin-ui/src/views/wms/st/outbill/index.vue +++ b/nladmin-ui/src/views/wms/st/outbill/index.vue @@ -76,6 +76,15 @@ /> + + +