diff --git a/nladmin-system/nlsso-server/.idea/libraries/Maven__cn_hutool_hutool_all_5_7_14.xml b/nladmin-system/nlsso-server/.idea/libraries/Maven__cn_hutool_hutool_all_5_7_14.xml new file mode 100644 index 0000000..945ec61 --- /dev/null +++ b/nladmin-system/nlsso-server/.idea/libraries/Maven__cn_hutool_hutool_all_5_7_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_commons_commons_compress_1_18.xml b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_commons_commons_compress_1_18.xml new file mode 100644 index 0000000..c82e624 --- /dev/null +++ b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_commons_commons_compress_1_18.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_4_0_0.xml b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_4_0_0.xml new file mode 100644 index 0000000..7ba8c84 --- /dev/null +++ b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_4_0_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_ooxml_4_0_0.xml b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_ooxml_4_0_0.xml new file mode 100644 index 0000000..2a39c98 --- /dev/null +++ b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_ooxml_4_0_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_4_0_0.xml b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_4_0_0.xml new file mode 100644 index 0000000..0b3fbd0 --- /dev/null +++ b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_4_0_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_3_0_1.xml b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_3_0_1.xml new file mode 100644 index 0000000..91295e2 --- /dev/null +++ b/nladmin-system/nlsso-server/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_3_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/nladmin-system/nlsso-server/pom.xml b/nladmin-system/nlsso-server/pom.xml index d6fe0db..815d414 100644 --- a/nladmin-system/nlsso-server/pom.xml +++ b/nladmin-system/nlsso-server/pom.xml @@ -23,7 +23,7 @@ 2.5.0 1.3.1.Final 1.31.0 - 5.8.22 + 5.7.14 0.11.1 5.9.0 @@ -241,17 +241,17 @@ org.apache.poi poi-ooxml-schemas - 3.17 + 4.0.0 org.apache.poi poi - 3.17 + 4.0.0 org.apache.poi poi-ooxml - 3.17 + 4.0.0 xerces diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java index d502f78..5226754 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java @@ -36,6 +36,15 @@ public enum PackageInfoIvtEnum { //是否启用 IS_USED(MapOf.of("启用", "1", "未启用", "0")), + //agv二次分配类型 + AGV_ACTION_TYPE(MapOf.of("普通任务", "1", "取货二次分配", "2", "放货二次分配", "3", "取放货二次分配", "4","HXT取放货二次分配","5")), + //二次分配请求类型 + TASK_ACTION_TYPE(MapOf.of("普通任务", "1", "取货二次分配", "2", "放货二次分配", "3", "取放货二次分配", "4")), + //是否自动下发 + IS_SEND(MapOf.of("是", "1","否","0")), + + //起点终点类型 + TASK_POINT_TYPE(MapOf.of("取货任务", "1", "放货任务", "2", "取货分配", "3", "放货分配", "4", "取货任务取货分配", "5", "放货任务放货分配", "6", "四个点任务取货", "7","空载具放货", "8", "四个点任务分配", "9","空载具放货分配", "10")), //位置 POINT_LOCATION(MapOf.of("上", "0", "下", "1")), @@ -62,4 +71,4 @@ public enum PackageInfoIvtEnum { } throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); } -} \ No newline at end of file +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/RedissonUtils.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/RedissonUtils.java new file mode 100644 index 0000000..a1eec3e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/RedissonUtils.java @@ -0,0 +1,91 @@ +package org.nl.common.utils; + +import lombok.SneakyThrows; +import org.nl.common.exception.BadRequestException; +import org.nl.config.SpringContextHolder; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; + +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; +import java.util.function.Function; + +public class RedissonUtils { + + /** + * + * @param process 业务代码 + * @param key + * @param seconds 尝试获取锁的等待时间,允许为空 + */ + @SneakyThrows + public static void lock(Function process, String key, Object param){ + RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class); + RLock lock = redissonClient.getLock(key); + boolean isLock; + isLock = lock.tryLock(); + try { + if (isLock){ + process.apply(param); + } else { + throw new BadRequestException(key+"当前业务正在执行中"); + } + }catch (Exception ex){ + throw ex; + }finally { + if (isLock && lock.isHeldByCurrentThread()){ + lock.unlock(); + } + } + } + + /** + * + * @param process + * @param key + * @param secend:最大等待时间 + * @param param + */ + @SneakyThrows + public static void lock(Consumer process, String key, int secend, Object param){ + RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class); + RLock lock = redissonClient.getLock(key); + boolean isLock; + isLock = lock.tryLock(secend,secend+5, TimeUnit.SECONDS); + try { + if (isLock){ + process.accept(param); + } else { + throw new BadRequestException("当前业务"+key+"正在执行"); + } + }catch (Exception ex){ + ex.printStackTrace(); + throw ex; + }finally { + if (isLock && lock.isHeldByCurrentThread()){ + lock.unlock(); + } + } + } + @SneakyThrows + public static void lock(Consumer process, String key, int secend, Object param,String throwinfo){ + RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class); + RLock lock = redissonClient.getLock(key); + boolean isLock; + isLock = lock.tryLock(secend,secend+5,TimeUnit.SECONDS); + try { + if (isLock){ + process.accept(param); + } else { + throw new BadRequestException(throwinfo); + } + }catch (Exception ex){ + ex.printStackTrace(); + throw ex; + }finally { + if (isLock && lock.isHeldByCurrentThread()){ + lock.unlock(); + } + } + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java index 924dca2..14e48a8 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java @@ -72,11 +72,11 @@ public class MobileAuthorizationController { user.setPermissions(permissionList); // SaLoginModel 配置登录相关参数 StpUtil.login(userInfo.getUser_id(), new SaLoginModel() - .setDevice("PC") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 - .setExtra("loginInfo", JSONObject.toJSONString(user)) // Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) + .setDevice("PDA") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 + .setExtra("loginInfo", user) // Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) ); JSONObject result = new JSONObject(); - result.put("token", StpUtil.getTokenValue()); + result.put("token", "Bearer " + StpUtil.getTokenValue()); result.put("roles", permissionList); result.put("user", user); return new ResponseEntity<>(TableDataInfo.buildJson(result), HttpStatus.OK); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/controller/MaterialbaseController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/controller/MaterialbaseController.java index 0e39c32..afb6f75 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/controller/MaterialbaseController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/controller/MaterialbaseController.java @@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.base.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.logging.annotation.Log; +import org.nl.common.utils.RedissonUtils; import org.nl.wms.basedata.material.service.IMdMeMaterialbaseService; import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; import org.springframework.beans.factory.annotation.Autowired; @@ -51,9 +52,15 @@ public class MaterialbaseController { return new ResponseEntity<>(HttpStatus.CREATED); } +// @PostMapping("/excelImport") +// public ResponseEntity excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) { +// return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); +// } + @PostMapping("/excelImport") public ResponseEntity excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) { - return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + iMdMeMaterialbaseService.excelImport(file, request, response); + return new ResponseEntity<>(HttpStatus.OK); } @PutMapping diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/IMdMeMaterialbaseService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/IMdMeMaterialbaseService.java index 14cb265..258cef6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/IMdMeMaterialbaseService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/IMdMeMaterialbaseService.java @@ -5,7 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Map; import java.util.Set; @@ -57,4 +60,6 @@ public interface IMdMeMaterialbaseService extends IService { * @return 返回结果 */ MdMeMaterialbase getByCode(String material_code); + + void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/MdMeMaterialbase.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/MdMeMaterialbase.java index e7a5dd6..0254920 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/MdMeMaterialbase.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/MdMeMaterialbase.java @@ -83,6 +83,11 @@ public class MdMeMaterialbase implements Serializable { */ private String material_type_id; + /** + * 物料分类 + */ + private String material_type; + /** * 长度单位 */ diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml index 3988e31..7361c07 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml @@ -13,7 +13,7 @@ WHERE 1=1 - AND (mater.material_code = #{param.blurry} OR plan.material_name = #{param.blurry}) + AND (mater.material_code = #{param.blurry} OR mater.material_name = #{param.blurry}) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/impl/MdMeMaterialbaseServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/impl/MdMeMaterialbaseServiceImpl.java index 0c566fa..c60979d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/impl/MdMeMaterialbaseServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/impl/MdMeMaterialbaseServiceImpl.java @@ -3,6 +3,8 @@ package org.nl.wms.basedata.material.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -19,7 +21,13 @@ import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; import org.nl.wms.basedata.material.service.dao.mapper.MdMeMaterialbaseMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Set; @@ -40,11 +48,16 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper().lambda(); String search = MapUtil.getStr(whereJson, "search"); + String material_type = MapUtil.getStr(whereJson, "material_type"); + if (ObjectUtil.isNotEmpty(search)) { queryWrapper.likeRight(MdMeMaterialbase::getMaterial_code, search) .or(item -> item.likeRight(MdMeMaterialbase::getMaterial_name, search)); } + if (ObjectUtil.isNotEmpty(material_type)) { + queryWrapper.eq(MdMeMaterialbase::getMaterial_type, material_type); + } queryWrapper.orderByDesc(MdMeMaterialbase::getUpdate_time); return this.baseMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), @@ -122,4 +135,49 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl> read = excelReader.read(); + if (read.size() > 1) { + List materialList = new ArrayList<>(); + for (int i = 1; i < read.size(); i++) { + List list = read.get(i); + String m1 = String.valueOf(list.get(0)); + String m2 = String.valueOf(list.get(1)); + String m3 = ObjectUtil.isEmpty(list.get(2)) ? null : String.valueOf(list.get(2)); + String m4 = ObjectUtil.isEmpty(list.get(3)) ? null : String.valueOf(list.get(3)); + // 根据物料编码查询是否有相同物料编码的物料 + MdMeMaterialbase mdMeMaterialbase = this.baseMapper.selectOne( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_code, m2) + ); + if (ObjectUtil.isNotEmpty(mdMeMaterialbase)) { + continue; + } + MdMeMaterialbase dao = new MdMeMaterialbase(); + dao.setMaterial_id(IdUtil.getStringId()); + dao.setMaterial_type(m1); + dao.setMaterial_code(m2); + dao.setMaterial_name(m3); + dao.setUnit_name(m4); + dao.setIs_used("1"); + dao.setIs_delete("0"); + dao.setCreate_id(SecurityUtils.getCurrentUserId()); + dao.setCreate_name(SecurityUtils.getCurrentNickName()); + dao.setCreate_time(DateUtil.now()); + dao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + dao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + dao.setUpdate_time(DateUtil.now()); + materialList.add(dao); + } + this.saveBatch(materialList); + } + } catch (Exception ex) { + throw new BadRequestException("导入失败" + ex.getMessage()); + } + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java index bb9d0e3..8a9c28a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java @@ -1,10 +1,12 @@ package org.nl.wms.ext.acs.controller; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; import org.nl.common.logging.annotation.Log; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.springframework.beans.factory.annotation.Autowired; @@ -33,4 +35,42 @@ public class AcsToWmsController { return new ResponseEntity<>(acsToWmsService.acsApply(param), HttpStatus.OK); } + @PostMapping("/task/status") + @SaIgnore + public ResponseEntity feedbackTaskStatus(@RequestBody JSONObject param) { + return new ResponseEntity<>(acsToWmsService.feedbackTaskStatus(param), HttpStatus.OK); + } + + /** + * 二次分配 + * + * @param whereJson 任务编号,动作类型:1、取货分配 2、放货分配 + * @return JSONObject 返回信 + */ + @PostMapping("/secondaryAllocationPoint") + @Log("二次分配") + @SaIgnore + ResponseEntity secondaryAllocationPoint(@RequestBody JSONObject whereJson) { + log.info("二次分配接口请求参数:---------------------------------------------" + whereJson.toString()); + String taskCode = whereJson.getString("taskCode"); + String actionType = whereJson.getString("actionType"); + String type = whereJson.getString("type"); + if (StrUtil.isEmpty(whereJson.getString("taskCode")) || StrUtil.isEmpty(whereJson.getString("actionType")) || StrUtil.isEmpty(whereJson.getString("type"))) { + throw new BadRequestException("任务编号或动作类型或分配类型不能为空!"); + } + return new ResponseEntity<>(acsToWmsService.secondaryAllocationPoint(taskCode, actionType,type), HttpStatus.OK); + } + + @PostMapping("/task/actionFinishRequest2") + @SaIgnore + public ResponseEntity actionFinishRequest2(@RequestBody JSONObject jo) { + return new ResponseEntity<>(acsToWmsService.actionFinishRequest2(jo), HttpStatus.OK); + } + + @PostMapping("/applyIn") + @SaIgnore + public ResponseEntity applyIn(@RequestBody JSONObject jo) { + return new ResponseEntity<>(acsToWmsService.applyIn(jo), HttpStatus.OK); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 298a9da..e006ccd 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject; import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest; +import java.util.Map; + /** * @Author: lyd * @Description: acs请求wms @@ -17,6 +19,14 @@ public interface AcsToWmsService { */ BaseResponse acsApply(JSONObject param); + /** + * 二次分配 + * @param taskCode 任务编号 + * @param actionType 动作类型:1、申请起点 2、申请终点 + * @return JSONObject 返回信息 + */ + Map secondaryAllocationPoint(String taskCode, String actionType,String type); + /** * 任务反馈 * @param param @@ -30,4 +40,13 @@ public interface AcsToWmsService { * @return BaseResponse */ BaseResponse realTimeSetPoint(JSONObject param); + + /** + * 取货完成请求 + * @param param / + * @return / + */ + JSONObject actionFinishRequest2(JSONObject param); + + JSONObject applyIn(JSONObject jo); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index c212fd4..82ab96f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -1,5 +1,6 @@ package org.nl.wms.ext.acs.service; +import com.alibaba.fastjson.JSONObject; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; import org.nl.wms.sch.task_manage.AcsTaskDto; @@ -20,4 +21,6 @@ public interface WmsToAcsService { */ AcsResponse renotifyAcs(List list); + JSONObject putAction(JSONObject param); + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 231add1..2d3becc 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -3,30 +3,49 @@ package org.nl.wms.ext.acs.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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.enums.PackageInfoIvtEnum; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.RedissonUtils; import org.nl.config.language.LangProcess; import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.wms.FeedBackTaskStatusRequest; import org.nl.wms.ext.record.service.ISysInteractRecordService; +import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper; +import org.nl.wms.sch.region.service.dao.RegionCharge; +import org.nl.wms.sch.region.service.dao.mapper.RegionChargeMapper; import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; +import org.nl.wms.sch.task_manage.enums.RegionTypeEnum; +import org.nl.wms.sch.task_manage.enums.TaskStatusEnum; import org.nl.wms.sch.task_manage.task.TaskFactory; import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import oshi.driver.mac.net.NetStat; import javax.annotation.PostConstruct; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -52,6 +71,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private ISysNoticeService noticeService; @Autowired private ISysInteractRecordService interactRecordService; + @Autowired + private SchBasePointMapper pointMapper; + @Autowired + private RegionChargeMapper regionChargeMapper; /** * 初始化反射方法 @@ -75,7 +98,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String requestMethodCode = param.getString("request_medthod_code"); Method method = methodCache.get(StrUtil.toCamelCase(requestMethodCode)); if (method == null) { - throw new BadRequestException(LangProcess.msg("error_isNull",requestMethodCode)); + throw new BadRequestException(LangProcess.msg("error_isNull", requestMethodCode)); } result = (BaseResponse) method.invoke(this, param); } catch (Exception e) { @@ -95,6 +118,150 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } + @Override + public Map secondaryAllocationPoint(String taskCode, String actionType, String type) { + JSONObject result = new JSONObject(); + result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value()); +// RedissonUtils.lock(c -> { +// try { +// Thread.sleep(1000); +// } catch (InterruptedException e) { +// } + String pointCode = ""; + String action = ""; + switch (actionType) { + case "1": + case "2": + case "3": + case "4": + case "5": + // 取货分配, 放货分配 + pointCode = getNewPoint(taskCode, actionType, type); + result.put("data", pointCode); + result.put("message", taskCode + "取放货分配成功,新点位为:" + pointCode); + break; + default: + return null; + } + result.put("status", org.springframework.http.HttpStatus.OK.value()); + return result; +// }, "secondaryAllocationPoint" + actionType, null); +// log.info("二次分配" + taskCode + "---------------------------------------------" + result); +// return result; + } + + private String getNewPoint(String taskCode, String actionType, String type) { + SchBasePoint newPoint = null; + String taskPointType = null; + //执行中的任务 + SchBaseTask baseTask = taskService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTask::getTask_code, taskCode) + .eq(SchBaseTask::getIs_delete, PackageInfoIvtEnum.IS_SEND.code("否")) + .eq(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()) + .or() + .eq(SchBaseTask::getTask_status, TaskStatusEnum.PICK_UP_COMPLETED.getCode())); + if (baseTask == null) { + throw new BadRequestException("该任务未执行或不存在!"); + } + //已分配过二次分配点位 +// if (StringUtils.isNotBlank(baseTask.getResponse_param())) { +// if (baseTask.getResponse_param().equals(PackageInfoIvtEnum.IS_SEND.code("是"))) { +// if ("1".equals(type)) { +// return baseTask.getPoint_code1(); +// } else if ("2".equals(type)) { +// return baseTask.getPoint_code2(); +// } +// } +// } + // + if (baseTask.getVehicle_code2().equals("2")) { + newPoint = getNewStartBasePoint(baseTask); + } else if (baseTask.getVehicle_code2().equals("3")) { + newPoint = getNewEndBasePoint(baseTask); + } else if (baseTask.getVehicle_code2().equals("4") || baseTask.getVehicle_code2().equals("5")) { + if ("1".equals(type)) { + newPoint = getNewStartBasePoint(baseTask); + } else if ("2".equals(type)) { + newPoint = getNewEndBasePoint(baseTask); + } + } + //分配的点位 + if (newPoint != null) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() + .eq(SchBaseTask::getTask_id, baseTask.getTask_id()); + if (StringUtils.isNotBlank(newPoint.getPoint_code())) { + //更新任务起点或终点 + if (baseTask.getVehicle_code2().equals("2")) { + updateWrapper.set(SchBaseTask::getPoint_code1, newPoint.getPoint_code()); + if (StringUtils.isNotBlank(newPoint.getStoragevehicle_code())) { + //更新托盘号 + updateWrapper.set(SchBaseTask::getVehicle_code, newPoint.getStoragevehicle_code()); + } + } else if (baseTask.getVehicle_code2().equals("3")) { + updateWrapper.set(SchBaseTask::getPoint_code2, newPoint.getPoint_code()); + } else if (baseTask.getVehicle_code2().equals("4") || baseTask.getVehicle_code2().equals("5")) { + if ("1".equals(type)) { + updateWrapper.set(SchBaseTask::getPoint_code1, newPoint.getPoint_code()); + } else if ("2".equals(type)) { + updateWrapper.set(SchBaseTask::getPoint_code2, newPoint.getPoint_code()); + } + } + //标记二次分配已分配过点位 + updateWrapper.set(SchBaseTask::getResponse_param, PackageInfoIvtEnum.IS_SEND.code("是")); + taskService.update(null, updateWrapper); + log.info("二次分配" + taskCode + ",接口返回最新点位:---------------------------------------------" + newPoint.getPoint_code()); + return newPoint.getPoint_code(); + } else { + log.info("二次分配" + taskCode + ",分配失败,暂无点位资源或点位外层有载具阻挡!"); + throw new BadRequestException("二次分配" + taskCode + ",分配失败,暂无点位资源或点位外层有载具阻挡!"); + } + } else { + log.info("二次分配" + taskCode + ",分配失败,暂无点位资源或点位外层有载具阻挡!"); + throw new BadRequestException("二次分配" + taskCode + ",分配失败,暂无点位资源或点位外层有载具阻挡!"); + } + } + + private SchBasePoint getNewEndBasePoint(SchBaseTask baseTask) { + String point_code2 = baseTask.getPoint_code2(); + SchBasePoint schBasePoint = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code2)); + String region_code = schBasePoint.getRegion_code(); + List list = pointMapper.getNewEndBasePoints(point_code2, region_code); +// List list = pointMapper.selectList(new LambdaQueryWrapper() +// .eq(SchBasePoint::getParent_point_code, baseTask.getPoint_code2())//放货二次分配的等待点 +// .eq(SchBasePoint::getRegion_code,schBasePoint.getRegion_code()) +// .eq(SchBasePoint::getPoint_type, "1") +// .or() +// .eq(SchBasePoint::getPoint_type, "3") +// .eq(SchBasePoint::getIs_used, "1") +// .eq(SchBasePoint::getPoint_status, "1") +// .orderByAsc(SchBasePoint::getIn_order_seq)); + if (ObjectUtils.isNotEmpty(list)) { + return list.get(0); + } else { + log.info("二次分配任务编号为:" + baseTask.getTask_code() + ",分配失败,暂无点位资源或点位外层有载具阻挡!"); + throw new BadRequestException("二次分配任务编号为:" + baseTask.getTask_code() + ",分配失败,暂无点位资源或点位外层有载具阻挡!"); + } + } + + + private SchBasePoint getNewStartBasePoint(SchBaseTask baseTask) { + String point_code1 = baseTask.getPoint_code1(); + SchBasePoint schBasePoint = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code1)); + List list = pointMapper.selectList(new LambdaQueryWrapper() + .eq(SchBasePoint::getExt_point_code, baseTask.getPoint_code1()) //取货二次分配的等待点 + .eq(SchBasePoint::getRegion_code, schBasePoint.getRegion_code()) + .eq(SchBasePoint::getPoint_type, "1") + .eq(SchBasePoint::getIs_used, "1") + .eq(SchBasePoint::getPoint_status, "2") + .orderByAsc(SchBasePoint::getIn_order_seq)); + if (ObjectUtils.isNotEmpty(list)) { + return list.get(0); + } else { + log.info("二次分配任务编号为:" + baseTask.getTask_code() + ",分配失败,暂无点位资源或点位外层有载具阻挡!"); + throw new BadRequestException("二次分配任务编号为:" + baseTask.getTask_code() + ",分配失败,暂无点位资源或点位外层有载具阻挡!"); + } + } + /** * 提前要料 * @@ -113,15 +280,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public BaseResponse feedbackTaskStatus(JSONObject param) { // todo: action暂未维护 - String requestNo = param.getString("requestNo"); - FeedBackTaskStatusRequest taskStatusRequest = param.toJavaObject(FeedBackTaskStatusRequest.class); - JSONObject taskInfo = taskStatusRequest.getTask_info(); - if (ObjectUtil.isEmpty(taskInfo)) { - throw new BadRequestException("任务信息不能为空!"); + String taskCode = param.getString("task_code"); + if (ObjectUtil.isEmpty(taskCode)) { + throw new BadRequestException("任务号不能为空!"); } - SchBaseTask taskObj = taskService.getByCode(taskInfo.getString("task_code")); + SchBaseTask taskObj = taskService.getByCode(taskCode); if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException("未找到任务编码为 [" + taskInfo.getString("task_code") + "] 的任务"); + throw new BadRequestException("未找到任务编码为 [" + taskCode + "] 的任务"); } // 任务处理类 String processingClass = taskObj.getConfig_code(); @@ -146,12 +311,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { AbstractTask abstractTask = taskFactory.getTask(processingClass); // 更新任务 try { - abstractTask.updateTaskStatus(taskInfo.getString("task_code"), status); + abstractTask.updateTaskStatus(taskCode, status); } catch (Exception e) { log.error("任务状态更新失败: {}", message); - return BaseResponse.responseError(requestNo, "任务:[" + taskInfo.getString("task_code") + "]状态更新失败," + message); + return BaseResponse.responseError(taskObj.getTask_id(), "任务:[" + taskCode + "]状态更新失败," + message); } - return BaseResponse.responseOk(requestNo, "任务状态反馈成功!"); + return BaseResponse.responseOk(taskObj.getTask_id(), "任务状态反馈成功!"); } /** @@ -160,6 +325,58 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @SneakyThrows @Override public BaseResponse realTimeSetPoint(JSONObject param) { - return null; + return null; + } + + @Override + public JSONObject actionFinishRequest2(JSONObject param) { + log.info("ACS请求取货完成参数:{}", param); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.HTTP_OK); + result.put("message", "反馈取货成功!"); + String taskCode = param.getString("task_code"); + if (ObjectUtil.isEmpty(taskCode)) { + throw new BadRequestException("请求取货完成失败,任务号不能为空!"); + } + SchBaseTask task = taskService.getOne(new LambdaQueryWrapper().eq(SchBaseTask::getTask_code, taskCode) + .eq(SchBaseTask::getIs_delete, PackageInfoIvtEnum.IS_SEND.code("否")) + .eq(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode())); + if (ObjectUtil.isEmpty(task)) { + throw new BadRequestException("请求取货完成失败,找不到任务!"); + } + // 起点释放 + String start_point = task.getPoint_code1(); + SchBasePoint startPoint = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, start_point)); + PointUtils.setUpdateByAcs(startPoint); + PointUtils.clearPoint(startPoint); + task.setTask_status(TaskStatusEnum.PICK_UP_COMPLETED.getCode()); + TaskUtils.setUpdateByAcs(task); + taskService.updateById(task); + return result; + } + + @Override + public JSONObject applyIn(JSONObject param) { + log.info("ACS请求agv进入参数:{}", param); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.HTTP_OK); + result.put("message", "agv申请进入成功!"); + String point_code = param.getString("point_code"); + if (ObjectUtil.isEmpty(point_code)) { + throw new BadRequestException("请求进入失败,管制点不能为空!"); + } + SchBasePoint schBasePoint = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(schBasePoint)) { + throw new BadRequestException("请求进入失败,找不到点位是" + point_code + "的管制点位!"); + } + String region_code = schBasePoint.getRegion_code(); + List regionCharges = regionChargeMapper.selectList(new LambdaQueryWrapper() + .eq(RegionCharge::getRegion_code, region_code) + .eq(RegionCharge::getIs_delete, Integer.parseInt(GeneralDefinition.NO))); + if (regionCharges.size() > 0) { + log.info("agv申请进入" + point_code + ",失败,当前区域有人员存在!"); + throw new BadRequestException("agv申请进入" + point_code + ",失败,当前区域有人员存在!"); + } + return result; } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index e6a8c97..6b4d37c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -1,7 +1,16 @@ package org.nl.wms.ext.acs.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.dao.Param; +import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.ext.acs.service.dto.ResultForAcs; import org.nl.wms.ext.acs.service.dto.to.acs.IssueAcsRequest; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; import org.nl.wms.ext.record.service.ISysInteractRecordService; @@ -9,6 +18,7 @@ import org.nl.wms.sch.task_manage.AcsTaskDto; import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.task.AcsUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import java.util.List; @@ -33,4 +43,49 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return resultForAcs; } + @Override + public JSONObject putAction(JSONObject param) { + String api = "api/wms/action"; + //判断是否连接ACS系统 + SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); + String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue(); + JSONObject result = new JSONObject(); + if (StrUtil.equals("0", isConnect)) { + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功,但未连接ACS!"); + result.put("data", new JSONObject()); + return result; + } + //ACS地址:127.0.0.1:8010 + Param acsUrlObj = sysParamService.findByCode(GeneralDefinition.ACS_URL); + if (ObjectUtil.isEmpty(acsUrlObj)) { + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功,但未连接ACS!"); + result.put("data", new JSONObject()); + return result; + } + String acsUrl = acsUrlObj.getValue(); + String url = acsUrl + api; + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(param)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + + } catch (Exception e) { + String msg = e.getMessage(); + //ConnectException: Connection refused: connect + //网络不通 + System.out.println(msg); + result.put("status", HttpStatus.BAD_REQUEST); + result.put("message", "网络不通,操作失败!"); + result.put("data", new JSONObject()); + } + //acs抛异常这里 + if (!StrUtil.equals(result.getString("status"), "200")) { + throw new BadRequestException("解锁失败:" + result.getString("message")); + } + return result; + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java index 7af467b..9428880 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java @@ -3,10 +3,13 @@ package org.nl.wms.pda.task.controller; import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; import org.nl.wms.pda.task.service.PdaTaskService; import org.nl.wms.pda.task.service.dao.vo.PdaResponseVo; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -14,6 +17,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + @RestController @RequiredArgsConstructor @RequestMapping("/api/hand") @@ -21,6 +27,8 @@ import org.springframework.web.bind.annotation.RestController; @SaIgnore public class PdaTaskController { private final PdaTaskService pdaTaskService; + @Resource + private RedissonClient redissonClient; @PostMapping("/getRegionByPoint") @Log("根据点位获取区域") @@ -46,6 +54,30 @@ public class PdaTaskController { return new ResponseEntity<>(pdaTaskService.getRegions(), HttpStatus.OK); } + @PostMapping("/getNextRegions") + @Log("获取所有区域") + public ResponseEntity getNextRegions() { + return new ResponseEntity<>(pdaTaskService.getNextRegions(), HttpStatus.OK); + } + + @PostMapping("/getStartRegions") + @Log("获取所有区域") + public ResponseEntity getStartRegions() { + return new ResponseEntity<>(pdaTaskService.getStartRegions(), HttpStatus.OK); + } + + @PostMapping("/getEndRegions") + @Log("获取所有区域") + public ResponseEntity getEndRegions() { + return new ResponseEntity<>(pdaTaskService.getEndRegions(), HttpStatus.OK); + } + + @PostMapping("/getChargeRegions") + @Log("获取所有区域") + public ResponseEntity getChargeRegions() { + return new ResponseEntity<>(pdaTaskService.getChargeRegions(), HttpStatus.OK); + } + @PostMapping("/getPointInfo") @Log("获取点位信息") public ResponseEntity getPointInfo(@RequestBody JSONObject whereJson) { @@ -61,14 +93,42 @@ public class PdaTaskController { @PostMapping("/loading") @Log("产线上料") + @SneakyThrows public ResponseEntity loading(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(pdaTaskService.loading(whereJson), HttpStatus.OK); + RLock lock = redissonClient.getLock("loading"); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + return new ResponseEntity<>(pdaTaskService.loading(whereJson), HttpStatus.OK); + } else { + log.info("产线上料任务获取锁超时。"); + return new ResponseEntity<>(HttpStatus.REQUEST_TIMEOUT); + } + } finally { + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); + } + } } @PostMapping("/blanking") @Log("产线下料") + @SneakyThrows public ResponseEntity blanking(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(pdaTaskService.blanking(whereJson), HttpStatus.OK); + RLock lock = redissonClient.getLock("blanking"); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + return new ResponseEntity<>(pdaTaskService.blanking(whereJson), HttpStatus.OK); + } else { + log.info("产线下料任务获取锁超时。"); + return new ResponseEntity<>(HttpStatus.REQUEST_TIMEOUT); + } + } finally { + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); + } + } } @PostMapping("/materialBinding") @@ -137,6 +197,27 @@ public class PdaTaskController { return new ResponseEntity<>(pdaTaskService.selectRegionInfo(whereJson), HttpStatus.OK); } + @PostMapping("/inArea") + @Log("进入区域信息查询") + @SaIgnore + public ResponseEntity inArea(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.inArea(whereJson), HttpStatus.OK); + } + + @PostMapping("/outArea") + @Log("进入区域信息查询") + @SaIgnore + public ResponseEntity outArea(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.outArea(whereJson), HttpStatus.OK); + } + + @PostMapping("/selectMaterialByRegion") + @Log("根据区域编码查询用料清单") + @SaIgnore + public ResponseEntity selectMaterialByRegion(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.selectMaterialByRegion(whereJson), HttpStatus.OK); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java index f2e8ef0..0923879 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java @@ -50,4 +50,18 @@ public interface PdaTaskService { JSONObject getPointInfo(JSONObject whereJson); JSONObject selectRegionInfo(JSONObject whereJson); + + JSONObject selectMaterialByRegion(JSONObject whereJson); + + JSONObject inArea(JSONObject whereJson); + + JSONObject outArea(JSONObject whereJson); + + JSONObject getNextRegions(); + + JSONObject getStartRegions(); + + JSONObject getEndRegions(); + + JSONObject getChargeRegions(); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java index 7cfbea7..5c0683b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java @@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.nl.common.base.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; @@ -25,6 +26,7 @@ import org.nl.wms.basedata.material.service.IMdMeMaterialbaseService; import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; import org.nl.wms.basedata.material.service.dao.mapper.MdMeMaterialbaseMapper; import org.nl.wms.basedata.material.service.dto.MaterialQuery; +import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.pda.task.service.PdaTaskService; import org.nl.wms.pda.task.service.dao.dto.MoveDto; import org.nl.wms.pda.task.service.dao.mapper.PdaMapper; @@ -36,25 +38,31 @@ import org.nl.wms.sch.group.service.dao.GroupPlatedtl; import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplateMapper; import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplatedtlMapper; import org.nl.wms.sch.group.service.enums.GroupStatus; +import org.nl.wms.sch.material.service.dao.mapper.MaterialRecordMapper; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper; +import org.nl.wms.sch.region.service.dao.RegionCharge; import org.nl.wms.sch.region.service.dao.SchBaseRegion; +import org.nl.wms.sch.region.service.dao.mapper.RegionChargeMapper; import org.nl.wms.sch.region.service.dao.mapper.SchBaseRegionMapper; import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper; +import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.RegionTypeEnum; +import org.nl.wms.sch.task_manage.task.TaskFactory; import org.nl.wms.sch.tasks.PdaPointTask; import org.nl.wms.sch.tasks.netsl.NETSLTask; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import oshi.driver.mac.net.NetStat; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service @@ -80,6 +88,14 @@ public class PdaTaskServiceImpl implements PdaTaskService { private IMdPbGroupplatedtlService groupplatedtlService; @Autowired private MeasureunitMapper measureunitMapper; + @Autowired + private MaterialRecordMapper materialRecordMapper; + @Autowired + private TaskFactory taskFactory; + @Autowired + private RegionChargeMapper regionChargeMapper; + @Autowired + private WmsToAcsService wmsToAcsService; @Override @Transactional(rollbackFor = Exception.class) @@ -115,7 +131,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { param.put("material_code", material_code); param.put("requestNo", IdUtil.simpleUUID()); param.put("config_code", "NETSLTask"); - param.put("vehicle_qty", "1"); +// param.put("vehicle_qty", "1"); param.put("user_id", "1"); taskService.apply(param); } @@ -123,13 +139,12 @@ public class PdaTaskServiceImpl implements PdaTaskService { SchBasePoint schBasePoint = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); for (int i = 0; i < num1; i++) { //确定终点 - SchBasePoint point = checkNextPoint(schBasePoint, region_code); JSONObject param = new JSONObject(); - param.put("device_code", point.getPoint_code()); + checkNextPoint(schBasePoint, region_code, param); param.put("requestNo", IdUtil.simpleUUID()); param.put("material_code", material_code); param.put("config_code", "THSLTask"); - param.put("vehicle_qty", "1"); +// param.put("vehicle_qty", "1"); param.put("user_id", "1"); taskService.apply(param); } @@ -139,46 +154,38 @@ public class PdaTaskServiceImpl implements PdaTaskService { return PdaResponseVo.pdaResultOk("任务创建成功"); } - private SchBasePoint checkNextPoint(SchBasePoint schBasePoint, String region_code) { + public void checkNextPoint(SchBasePoint schBasePoint, String region_code, JSONObject param) { //如果是MB物料的上料点 需要下发二次分配点位 - if ("MB".contains(schBasePoint.getPoint_code())) { - if ("L1".equals(region_code)) { - return getWaitPoint(region_code); - } else { - return getWaitPoint(region_code); - } - } else { - //查找该区域空闲的点位 - List list = pointMapper.selectList(new LambdaQueryWrapper().eq(SchBasePoint::getRegion_code, region_code) - .eq(SchBasePoint::getPoint_type, "1") - .eq(SchBasePoint::getIs_used, "1") - .eq(SchBasePoint::getLock_type, "0") - .isNull(SchBasePoint::getIng_task_code) - .orderByAsc(SchBasePoint::getIn_order_seq)); + String prefix = schBasePoint.getPoint_code().substring(0, schBasePoint.getPoint_code().length() - 2); + List existTask = taskService.findUnFinishTasksByTaskConfig("THSLTask", prefix); + if (existTask.size() <= 1) { + List list = pointMapper.selectListByRegionAndPrefix(region_code, prefix); if (list.size() == 0) { throw new BadRequestException(region_code + "区域无空闲点位"); } - return list.get(0); + SchBasePoint point = list.get(0); + if (schBasePoint.getPoint_code().contains(RegionTypeEnum.REGION_TYPE.code("MB制布区"))) { + param.put("point4", point.getPoint_code());// + param.put("device_code", pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, schBasePoint.getParent_point_code())).getPoint_code());//等待点 + } else if (schBasePoint.getPoint_code().contains("GC") && schBasePoint.getRegion_code().equals("L1")) { + param.put("point4", point.getPoint_code());// + param.put("device_code", pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, schBasePoint.getParent_point_code())).getPoint_code());//等待点 + } else if (schBasePoint.getPoint_code().contains("HXT") && schBasePoint.getRegion_code().equals("L1")) { + param.put("point4", point.getPoint_code());// + param.put("device_code", pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, schBasePoint.getParent_point_code())).getPoint_code());//等待点 + } else { + //查找该区域空闲的点位 + List points = pointMapper.getEmptyPoints(region_code, prefix); + if (points.size() == 0) { + throw new BadRequestException(region_code + "区域无空闲点位"); + } + param.put("device_code", points.get(0).getPoint_code()); + } + } else { + throw new BadRequestException("该上料区域没有空闲区域"); } } - private SchBasePoint getWaitPoint(String region_code) { - //查找该区域空闲的等待点 - SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getRegion_code, region_code) - .eq(SchBasePoint::getPoint_status, "0") - .eq(SchBasePoint::getIs_used, "1") - .eq(SchBasePoint::getLock_type, "0") - .eq(SchBasePoint::getPoint_type, "4") - .isNull(SchBasePoint::getIng_task_code)); - if (ObjectUtil.isEmpty(point)) { - if ("L1".equals(region_code)) { - throw new BadRequestException("L1区域无空闲的等待点位"); - } else { - throw new BadRequestException("L2区域无空闲的等待点位"); - } - } - return point; - } @Override public JSONObject getRegionByPoint(JSONObject whereJson) { @@ -199,6 +206,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { } @Override + @Transactional(rollbackFor = Exception.class) public PdaResponseVo blanking(JSONObject whereJson) { String point_code = whereJson.getString("point_code"); String region_code = whereJson.getString("region_code"); @@ -220,38 +228,37 @@ public class PdaTaskServiceImpl implements PdaTaskService { String material_code = jo.getString("material_code"); MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_code, material_code)); if (mdMeMaterialbase == null) { - throw new BadRequestException("当前物料不存在【"+material_code+"】"); + throw new BadRequestException("当前物料不存在【" + material_code + "】"); } String vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE"); JSONObject param = new JSONObject(); param.put("device_code", point.getPoint_code()); param.put("material_code", mdMeMaterialbase.getMaterial_code()); param.put("requestNo", IdUtil.simpleUUID()); - if ("N1".equals(point.getRegion_code())||"N2".equals(point.getRegion_code())) { + if ("N1".equals(point.getRegion_code()) || "N3".equals(point.getRegion_code())) { param.put("config_code", "NETXLTask"); - } else if ("L1".equals(point.getRegion_code())||"L2".equals(point.getRegion_code())){ + } else if ("L1".equals(point.getRegion_code()) || "L2".equals(point.getRegion_code())) { param.put("config_code", "THXLTask"); } param.put("vehicle_code", vehicleCode); - param.put("vehicle_qty", "1"); +// param.put("vehicle_qty", "1"); param.put("user_id", "1"); param.put("region_code", region_code); taskService.apply(param); //维护物料信息 - packageData(data,point_code,vehicleCode); + packageData(data, point_code, vehicleCode); return PdaResponseVo.pdaResultOk("任务创建成功"); } - private void packageData(JSONArray data,String point_code,String vehicleCode) { + private void packageData(JSONArray data, String point_code, String vehicleCode) { JSONObject jo = data.getJSONObject(0); String material_name = jo.getString("material_name"); MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_name, material_name)); if (mdMeMaterialbase == null) { - throw new BadRequestException("当前物料不存在【"+material_name+"】"); + throw new BadRequestException("当前物料不存在【" + material_name + "】"); } String measure_unit_id = jo.getString("measure_unit_id"); - Measureunit measureunit = measureunitMapper.selectOne(new LambdaQueryWrapper().eq(Measureunit::getMeasure_unit_id, measure_unit_id)); - if(StrUtil.isEmpty(vehicleCode)) { + if (StrUtil.isEmpty(vehicleCode)) { vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE"); } String group_id = org.nl.common.utils.IdUtil.getStringId(); @@ -272,7 +279,10 @@ public class PdaTaskServiceImpl implements PdaTaskService { .material_code(mdMeMaterialbase.getMaterial_code()) .material_name(mdMeMaterialbase.getMaterial_name()) .measure_unit_id(measure_unit_id) - .unit_name(measureunit.getUnit_name()) + .unit_name(measure_unit_id) + .create_id(SecurityUtils.getCurrentUserId()) + .create_name(SecurityUtils.getCurrentNickName()) + .create_time(DateUtil.now()) .build(); groupPlatedtls.add(groupPlatedtlBuilder); list.add(container_code); @@ -287,7 +297,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { .pcsn(pscn) .qty(qty) .measure_unit_id(measure_unit_id) - .unit_name(measureunit.getUnit_name()) + .unit_name(measure_unit_id) .storagevehicle_code(vehicleCode) .create_id(SecurityUtils.getCurrentUserId()) .create_name(SecurityUtils.getCurrentNickName()) @@ -310,8 +320,91 @@ public class PdaTaskServiceImpl implements PdaTaskService { List ja = new ArrayList<>(); list.forEach(region -> { JSONObject jo = new JSONObject(); - jo.put("region_code", region.getRegion_code()); - jo.put("region_name", region.getRegion_name()); + jo.put("value", region.getRegion_code()); + jo.put("text", region.getRegion_name()); + ja.add(jo); + }); + JSONObject ret = new JSONObject(); + if (ObjectUtil.isNotEmpty(list)) { + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", ja); + return ret; + } + return ret; + } + + @Override + public JSONObject getNextRegions() { + List regions = Arrays.asList("E1", "E2", "DKB", "KTP"); + List list = regionMapper.selectList(new LambdaQueryWrapper().in(SchBaseRegion::getRegion_code, regions)); + List ja = new ArrayList<>(); + list.forEach(region -> { + JSONObject jo = new JSONObject(); + jo.put("value", region.getRegion_code()); + jo.put("text", region.getRegion_name()); + ja.add(jo); + }); + JSONObject ret = new JSONObject(); + if (ObjectUtil.isNotEmpty(list)) { + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", ja); + return ret; + } + return ret; + } + + @Override + public JSONObject getStartRegions() { + List list = regionMapper.selectList(new LambdaQueryWrapper().eq(SchBaseRegion::getRegion_code, "KCW")); + List ja = new ArrayList<>(); + list.forEach(region -> { + JSONObject jo = new JSONObject(); + jo.put("value", region.getRegion_code()); + jo.put("text", region.getRegion_name()); + ja.add(jo); + }); + JSONObject ret = new JSONObject(); + if (ObjectUtil.isNotEmpty(list)) { + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", ja); + return ret; + } + return ret; + } + + @Override + public JSONObject getEndRegions() { + List regions = Arrays.asList("L1", "L2"); + List list = regionMapper.selectList(new LambdaQueryWrapper().in(SchBaseRegion::getRegion_code, regions)); + List ja = new ArrayList<>(); + list.forEach(region -> { + JSONObject jo = new JSONObject(); + jo.put("value", region.getRegion_code()); + jo.put("text", region.getRegion_name()); + ja.add(jo); + }); + JSONObject ret = new JSONObject(); + if (ObjectUtil.isNotEmpty(list)) { + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", ja); + return ret; + } + return ret; + } + + @Override + public JSONObject getChargeRegions() { + List regions = Arrays.asList("H1", "H2"); + List list = regionMapper.selectList(new LambdaQueryWrapper().in(SchBaseRegion::getRegion_code, regions)); + List ja = new ArrayList<>(); + list.forEach(region -> { + JSONObject jo = new JSONObject(); + jo.put("value", region.getRegion_code()); + jo.put("text", region.getRegion_name()); ja.add(jo); }); JSONObject ret = new JSONObject(); @@ -326,7 +419,22 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public JSONObject getPointnByRegion(JSONObject whereJson) { - return null; + List list = pointMapper.selectList(new LambdaQueryWrapper().eq(SchBasePoint::getRegion_code, whereJson.getString("region_code"))); + List arr = new ArrayList<>(); + JSONObject ret = new JSONObject(); + if (ObjectUtil.isNotEmpty(list)) { + list.forEach(point -> { + JSONObject jo = new JSONObject(); + jo.put("value", point.getPoint_code()); + jo.put("text", point.getPoint_name()); + arr.add(jo); + }); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", arr); + return ret; + } + return ret; } // @Override @@ -358,7 +466,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public JSONObject getMaterialInfoByPoint(JSONObject whereJson) { String point_code = whereJson.getString("point_code"); - if (ObjectUtil.isEmpty(point_code)){ + if (ObjectUtil.isEmpty(point_code)) { throw new BadRequestException("点位不能为空!"); } SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); @@ -371,19 +479,19 @@ public class PdaTaskServiceImpl implements PdaTaskService { if (ObjectUtil.isNotEmpty(storagevehicle_code)) { GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper() .eq(GroupPlate::getStoragevehicle_code, storagevehicle_code) - .eq(GroupPlate::getStatus, GroupStatus.START.getCode())); + .eq(GroupPlate::getStatus, GroupStatus.START.getCode()) + .eq(GroupPlate::getIs_delete, GeneralDefinition.NO)); if (ObjectUtil.isNotEmpty(groupPlate)) { String group_id = groupPlate.getGroup_id(); list = groupplatedtlService.getGroupPlatedtlList(group_id); if (ObjectUtil.isNotEmpty(list)) { - Measureunit measureunit = measureunitMapper.selectOne(new LambdaQueryWrapper().eq(Measureunit::getMeasure_unit_id, list.get(0).getMeasure_unit_id())); list.forEach(groupPlatedtl -> { JSONObject jo = new JSONObject(); jo.put("container_code", groupPlatedtl.getContainer_code()); jo.put("material_code", groupPlatedtl.getMaterial_code()); jo.put("material_name", groupPlatedtl.getMaterial_name()); jo.put("qty", groupPlatedtl.getQty()); - jo.put("measure_unit_id", measureunit.getUnit_name()); + jo.put("measure_unit_id", groupPlatedtl.getUnit_name()); arr.add(jo); }); } @@ -398,17 +506,30 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public PdaResponseVo forceConfirm(JSONObject whereJson) { - return null; + // 查询当前任务 + SchBaseTask taskDao = taskService.getOne( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_code, whereJson.getString("task_code")) + ); + // 根据任务配置编码获取所属任务类抽象类 + AbstractTask task = taskFactory.getTask(taskDao.getConfig_code()); + task.forceFinish(taskDao.getTask_code()); + return PdaResponseVo.pdaResultOk("强制完成成功"); } @Override public PdaResponseVo againTask(JSONObject whereJson) { - return null; + return PdaResponseVo.pdaResultOk("重新创建成功"); } @Override public JSONObject queryTask(JSONObject whereJson) { - return null; + List list = taskService.queryPdaTask(whereJson); + JSONObject ret = new JSONObject(); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", list); + return ret; } @Override @@ -417,9 +538,9 @@ public class PdaTaskServiceImpl implements PdaTaskService { checkPoint(whereJson); // 创建任务 JSONObject task = new JSONObject(); - task.put("config_code", "PointTask"); - task.put("point_code1", whereJson.getString("start_point_code")); - task.put("point_code2", whereJson.getString("end_point_code")); + task.put("config_code", "PdaPointTask"); + task.put("device_code", whereJson.getString("point_code")); + task.put("point_code2", whereJson.getString("point_code2")); task.put("Priority", "1"); pdaPointTask.apply(task); return PdaResponseVo.pdaResultOk("下发成功!"); @@ -427,35 +548,78 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public PdaResponseVo unlock(JSONObject whereJson) { - - return null; + JSONArray data = whereJson.getJSONArray("data"); + if (ObjectUtil.isEmpty(data)) { + throw new BadRequestException("数据不能为空!"); + } + for (int i = 0; i < data.size(); i++) { + JSONObject jsonObject = data.getJSONObject(i); + String point_code = jsonObject.getString("point_code"); + SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位不存在!"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + point.setIs_used(true); + point.setUpdate_id(currentUserId); + point.setUpdate_name(nickName); + point.setUpdate_time(DateUtil.now()); + pointMapper.updateById(point); + } + return PdaResponseVo.pdaResultOk("解锁成功!"); } @Override public PdaResponseVo lock(JSONObject whereJson) { - return null; + JSONArray data = whereJson.getJSONArray("data"); + if (ObjectUtil.isEmpty(data)) { + throw new BadRequestException("数据不能为空!"); + } + for (int i = 0; i < data.size(); i++) { + JSONObject jsonObject = data.getJSONObject(i); + String point_code = jsonObject.getString("point_code"); + SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位不存在!"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + point.setIs_used(false); + point.setUpdate_id(currentUserId); + point.setUpdate_name(nickName); + point.setUpdate_time(DateUtil.now()); + pointMapper.updateById(point); + } + return PdaResponseVo.pdaResultOk("锁定成功!"); } @Override public JSONObject comfirmGetting(JSONObject whereJson) { String point_code = whereJson.getString("point_code"); - if (ObjectUtil.isEmpty(point_code)){ + if (ObjectUtil.isEmpty(point_code)) { throw new BadRequestException("点位不能为空!"); } SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); if (ObjectUtil.isEmpty(point)) { throw new BadRequestException("点位不存在!"); } - if (ObjectUtil.isNotEmpty(point.getStoragevehicle_code())){ - GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper().eq(GroupPlate::getStoragevehicle_code, point.getStoragevehicle_code())); + if (ObjectUtil.isNotEmpty(point.getStoragevehicle_code())) { + GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper().eq(GroupPlate::getStoragevehicle_code, point.getStoragevehicle_code()) + .eq(GroupPlate::getStatus, GroupStatus.START.getCode()) + .eq(GroupPlate::getIs_delete, GeneralDefinition.NO)); groupPlate.setStatus(GroupStatus.OUT.getCode()); + groupPlate.setUpdate_id(SecurityUtils.getCurrentUserId()); + groupPlate.setUpdate_name(SecurityUtils.getCurrentUsername()); + groupPlate.setUpdate_time(DateUtil.now()); + groupplateMapper.updateById(groupPlate); } point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); point.setStoragevehicle_code(""); pointMapper.updateById(point); JSONObject ret = new JSONObject(); ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); - ret.put("message","操作成功"); + ret.put("message", "操作成功"); return ret; } @@ -467,25 +631,102 @@ public class PdaTaskServiceImpl implements PdaTaskService { pointMapper.updateById(point); JSONObject ret = new JSONObject(); ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); - ret.put("message","托盘绑定成功"); + ret.put("message", "托盘绑定成功"); return ret; } @Override + @Transactional(rollbackFor = Exception.class) public JSONObject materialBinding(JSONObject whereJson) { String point_code = whereJson.getString("point_code"); + //校验该点位是否存在任务 + List taskList = taskService.findTaskByPoint(point_code); + if (ObjectUtil.isNotEmpty(taskList)) { + throw new BadRequestException("该点位有任务正在执行,请勿重复操作!"); + } JSONArray data = whereJson.getJSONArray("data"); - if (ObjectUtil.isEmpty(point_code)){ + if (ObjectUtil.isEmpty(point_code)) { throw new BadRequestException("点位不能为空"); } - if (ObjectUtil.isEmpty(data)){ + if (ObjectUtil.isEmpty(data)) { throw new BadRequestException("物料数据不能为空"); } - packageData(data,point_code,null); + + for (int i = 0; i < data.size(); i++) { + JSONObject jo = data.getJSONObject(i); + String container_code = jo.getString("container_code"); + List groupPlatedtlList = groupplatedtlService.selectDtlByContainerCode(container_code); + if (ObjectUtil.isNotEmpty(groupPlatedtlList)) { + throw new BadRequestException("该卷号【" + container_code + "】已绑定过,请勿重复操作!"); + } + } + + SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位" + point_code + "不存在!"); + } + if (point.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { + throw new BadRequestException("点位" + point_code + "有货!"); + } + if (point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("活性碳保管1区")) || point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("活性碳保管2区"))) { + JSONObject jo = data.getJSONObject(0); + String material_code = jo.getString("material_code"); + //找到相同排或者列其他点位 + List list = pointMapper.selectSameRowPoints(point); + if (ObjectUtil.isNotEmpty(list)) { + int count = 0; + for (SchBasePoint point1 : list) { + if (point1.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { + if (StrUtil.isNotEmpty(point1.getMaterial_code()) && !material_code.equals(point1.getMaterial_code())) { + count++; + } + } + } + if (count > 0) { + throw new BadRequestException("该排存在有不同的物料点位,请勿重复操作!"); + } + } + //找出比当前点位列大的的点位 + List pointList = list.stream().filter(point1 -> point1.getCol_num() > point.getCol_num()).collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(pointList)) { + List containlist = new ArrayList<>(); + for (int i = 0; i < data.size(); i++) { + JSONObject ja = data.getJSONObject(i); + String container_code = ja.getString("container_code"); + containlist.add(container_code); + } + String minContain = containlist.stream().min(String::compareTo).orElse(""); + List vehicleCodes = pointList.stream().map(SchBasePoint::getStoragevehicle_code).collect(Collectors.toList()); + List groupPlates = groupplateMapper.selectList(new LambdaQueryWrapper().in(GroupPlate::getStoragevehicle_code, vehicleCodes) + .eq(GroupPlate::getStatus, GroupStatus.START.getCode()) + .eq(GroupPlate::getIs_delete, GeneralDefinition.NO)); + if (ObjectUtil.isNotEmpty(groupPlates)) { + boolean b = groupPlates.stream() + .map(GroupPlate::getPcsn) + .anyMatch(pcsn -> pcsn.compareTo(minContain) < 0); + if (b) { + throw new BadRequestException("该排存在卷号小于当前卷号的点位,请检查后再重试!"); + } + } + } else { + pointList = list.stream().filter(point1 -> point1.getCol_num() < point.getCol_num()).collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(pointList)) { + for (int i = 0; i < pointList.size(); i++) { + SchBasePoint schBasePoint = pointList.get(i); + if (schBasePoint.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { + throw new BadRequestException("请检查当前点位的前面位置是否有货,请按顺序放货!"); + } + } + } + } + } + + packageData(data, point_code, null); + JSONObject ret = new JSONObject(); ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); - ret.put("message","物料绑定成功"); + ret.put("message", "物料绑定成功"); return ret; } @@ -493,27 +734,18 @@ public class PdaTaskServiceImpl implements PdaTaskService { public JSONObject getPointInfo(JSONObject whereJson) { List list = pointMapper.queryPointInfo(whereJson); JSONArray arr = new JSONArray(); - list.forEach(item -> { - GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper() - .eq(GroupPlate::getStoragevehicle_code, item.getString("storagevehicle_code")) - .eq(GroupPlate::getStatus, GroupStatus.START.getCode())); - if (ObjectUtil.isEmpty(groupPlate)){ - return; - } - List groupPlatedtlList = groupplatedtlService.getGroupPlatedtlList(item.getString("group_id")); - List containerCodeList = groupPlatedtlList.stream() - .map(GroupPlatedtl::getContainer_code) - .collect(Collectors.toList()); - JSONObject jo = new JSONObject(); - jo.put("point_code", item.getString("point_code")); - jo.put("is_used", item.getString("is_used")); - jo.put("material_code", item.getString("material_code")); - jo.put("material_name", item.getString("material_name")); - jo.put("qty", item.getString("qty")); - jo.put("measure_unit_id", item.getString("unit_name")); - jo.put("containers", containerCodeList); - arr.add(jo); - }); + list.forEach(item -> { + JSONArray ext_code = item.getJSONArray("ext_code"); + JSONObject jo = new JSONObject(); + jo.put("point_code", item.getString("point_code")); + jo.put("is_used", item.getString("is_used")); + jo.put("material_code", item.getString("material_code")); + jo.put("material_name", item.getString("material_name")); + jo.put("qty", item.getString("qty")); + jo.put("measure_unit_id", item.getString("unit_name")); + jo.put("containers", ext_code); + arr.add(jo); + }); JSONObject ret = new JSONObject(); ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); ret.put("message", "查询成功"); @@ -523,31 +755,115 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public JSONObject selectRegionInfo(JSONObject whereJson) { - PageHelper.startPage(whereJson.getIntValue("page"), whereJson.getIntValue("size")); - return null; +// PageHelper.startPage(whereJson.getIntValue("page"), whereJson.getIntValue("size")); + List list = regionChargeMapper.selectPageLeftJoin(whereJson); + JSONObject ret = new JSONObject(); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", list); + return ret; + } + + @Override + public JSONObject selectMaterialByRegion(JSONObject whereJson) { + String region_code = whereJson.getString("region_code"); + List list = materialRecordMapper.selectMaterialByRegion(region_code); + JSONArray arr = new JSONArray(); + list.forEach(item -> { + JSONObject jo = new JSONObject(); + jo.put("value", item.getString("material_code")); + jo.put("text", item.getString("material_name")); + jo.put("qty", item.getString("qty")); + arr.add(jo); + }); + JSONObject ret = new JSONObject(); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", arr); + return ret; + } + + @Override + public JSONObject inArea(JSONObject whereJson) { + String region_code = whereJson.getString("region_code"); + if (StrUtil.isEmpty(region_code)) { + throw new BadRequestException("区域编码不能为空!"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + RegionCharge regionCharge = regionChargeMapper.selectOne(new LambdaQueryWrapper() + .eq(RegionCharge::getRegion_code, region_code) + .eq(RegionCharge::getCreate_id, currentUserId) + .eq(RegionCharge::getIs_delete, Integer.parseInt(GeneralDefinition.NO))); + SchBaseRegion schBaseRegion = regionMapper.selectOne(new LambdaQueryWrapper().eq(SchBaseRegion::getRegion_code, region_code)); + if (ObjectUtil.isNotEmpty(regionCharge)) { + throw new BadRequestException("该用户已经进入管制区域,请不要重复操作!"); + } + RegionCharge charge = RegionCharge.builder() + .regioncharge_id(IdUtil.simpleUUID()) + .region_code(region_code) + .region_name(schBaseRegion.getRegion_name()) + .is_delete(Integer.parseInt(GeneralDefinition.NO)) + .create_id(currentUserId) + .create_name(SecurityUtils.getCurrentNickName()) + .create_time(DateUtil.now()) + .build(); + regionChargeMapper.insert(charge); + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "操作成功"); + return ret; + } + + @Override + public JSONObject outArea(JSONObject whereJson) { + String region_name = whereJson.getString("region_name"); + String create_name = whereJson.getString("create_name"); + SchBasePoint schBasePoint = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getRegion_name, region_name) + .eq(SchBasePoint::getPoint_type, "3")); + if (ObjectUtil.isEmpty(schBasePoint)) { + throw new BadRequestException(region_name + "区域找不到管制点!"); + } + RegionCharge regionCharge = regionChargeMapper.selectOne(new LambdaQueryWrapper() + .eq(RegionCharge::getRegion_name, region_name) + .eq(RegionCharge::getCreate_name, create_name) + .eq(RegionCharge::getIs_delete, Integer.parseInt(GeneralDefinition.NO))); + if (ObjectUtil.isNotEmpty(regionCharge)) { + regionCharge.setIs_delete(Integer.parseInt(GeneralDefinition.YES)); + regionChargeMapper.updateById(regionCharge); + } else { + throw new BadRequestException("该用户已经离开管制区域,请不要重复操作!"); + } + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "操作成功"); + return ret; } /** * 校验起点终点载具 + * * @param whereJson { * start_point_code:起点点位 * end_point_code:终点点位 * storagevehicle_code:终点点位 - * } + * } */ private void checkPoint(JSONObject whereJson) { - String start_point_code = whereJson.getString("start_point_code"); - String end_point_code = whereJson.getString("end_point_code"); + String start_point_code = whereJson.getString("point_code"); + String end_point_code = whereJson.getString("point_code2"); // 校验起点 SchBasePoint pointStartDao = pointMapper.selectOne(new LambdaQueryWrapper() .eq(SchBasePoint::getPoint_code, start_point_code)); - pointStartDao.setPoint_status("2"); - pointMapper.updateById(pointStartDao); + if (!pointStartDao.getPoint_status().equals("2")) { + throw new BadRequestException(end_point_code + "点位不是满位状态"); + } // 校验终点 SchBasePoint pointNextDao = pointMapper.selectOne(new LambdaQueryWrapper() .eq(SchBasePoint::getPoint_code, end_point_code)); - pointNextDao.setPoint_status("1"); - pointMapper.updateById(pointStartDao); + if (!pointNextDao.getPoint_status().equals("1")) { + throw new BadRequestException(end_point_code + "点位不是空位状态"); + } } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtForewarningconfigController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtForewarningconfigController.java new file mode 100644 index 0000000..eab5c28 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtForewarningconfigController.java @@ -0,0 +1,73 @@ +package org.nl.wms.sch.forewarn.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.sch.forewarn.service.IStIvtForewarningconfigService; +import org.nl.wms.sch.forewarn.service.dto.StIvtForewarningconfigDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +@Slf4j +@RestController +@RequestMapping("/api/stIvtForewarningconfig") +public class StIvtForewarningconfigController { + + @Autowired + private IStIvtForewarningconfigService stIvtForewarningconfigService; + + @GetMapping + @Log("查询预警配置") + //@SaCheckPermission("stIvtForewarningconfig:list") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(stIvtForewarningconfigService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增预警配置") + //@SaCheckPermission("stIvtForewarningconfig:add") + public ResponseEntity create(@Validated @RequestBody StIvtForewarningconfigDto entity){ + stIvtForewarningconfigService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改预警配置") + //@SaCheckPermission("stIvtForewarningconfig:edit") + public ResponseEntity update(@Validated @RequestBody StIvtForewarningconfigDto entity){ + stIvtForewarningconfigService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除预警配置") + //@SaCheckPermission("stIvtForewarningconfig:del") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + stIvtForewarningconfigService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getWarningMaterial") + @Log("查询预警物料") + public ResponseEntity getWarningMaterial(@RequestParam Map whereJson) { + return new ResponseEntity<>(stIvtForewarningconfigService.getWarningMaterial(whereJson), HttpStatus.OK); + } + + @PutMapping("/changeActive") + @Log("修改启用状态规格") + public ResponseEntity changeActive(@Validated @RequestBody StIvtForewarningconfigDto dao) { + stIvtForewarningconfigService.changeActive(dao); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtOverdueforewarningController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtOverdueforewarningController.java new file mode 100644 index 0000000..8c53bb0 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtOverdueforewarningController.java @@ -0,0 +1,67 @@ +package org.nl.wms.sch.forewarn.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.sch.forewarn.service.IStIvtOverdueforewarningService; +import org.nl.wms.sch.forewarn.service.dao.StIvtOverdueforewarning; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +@Slf4j +@RestController +@RequestMapping("/api/stIvtOverdueforewarning") +public class StIvtOverdueforewarningController { + + @Autowired + private IStIvtOverdueforewarningService stIvtOverdueforewarningService; + + @GetMapping + @Log("查询库存超期预警") + //@SaCheckPermission("stIvtOverdueforewarning:list") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(stIvtOverdueforewarningService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增库存超期预警") + //@SaCheckPermission("stIvtOverdueforewarning:add") + public ResponseEntity create(@Validated @RequestBody StIvtOverdueforewarning entity){ + stIvtOverdueforewarningService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改库存超期预警") + //@SaCheckPermission("stIvtOverdueforewarning:edit") + public ResponseEntity update(@Validated @RequestBody StIvtOverdueforewarning entity){ + stIvtOverdueforewarningService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除库存超期预警") + //@SaCheckPermission("stIvtOverdueforewarning:del") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + stIvtOverdueforewarningService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("将预警信息设置为已读") + //@SaCheckPermission("stIvtOverdueforewarning:del") + @PostMapping("/read") + public ResponseEntity read(@RequestBody Set ids) { + stIvtOverdueforewarningService.read(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtSafetyforewarningController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtSafetyforewarningController.java new file mode 100644 index 0000000..328afe7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/controller/StIvtSafetyforewarningController.java @@ -0,0 +1,67 @@ +package org.nl.wms.sch.forewarn.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.sch.forewarn.service.IStIvtSafetyforewarningService; +import org.nl.wms.sch.forewarn.service.dao.StIvtSafetyforewarning; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +@Slf4j +@RestController +@RequestMapping("/api/stIvtSafetyforewarning") +public class StIvtSafetyforewarningController { + + @Autowired + private IStIvtSafetyforewarningService stIvtSafetyforewarningService; + + @GetMapping + @Log("查询安全库存预警") + //@SaCheckPermission("stIvtSafetyforewarning:list") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(stIvtSafetyforewarningService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增安全库存预警") + //@SaCheckPermission("stIvtSafetyforewarning:add") + public ResponseEntity create(@Validated @RequestBody StIvtSafetyforewarning entity){ + stIvtSafetyforewarningService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改安全库存预警") + //@SaCheckPermission("stIvtSafetyforewarning:edit") + public ResponseEntity update(@Validated @RequestBody StIvtSafetyforewarning entity){ + stIvtSafetyforewarningService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除安全库存预警") + //@SaCheckPermission("stIvtSafetyforewarning:del") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + stIvtSafetyforewarningService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("将预警信息设置为已读") + //@SaCheckPermission("stIvtOverdueforewarning:del") + @PostMapping("/read") + public ResponseEntity read(@RequestBody Set ids) { + stIvtSafetyforewarningService.read(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtForewarningconfigService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtForewarningconfigService.java new file mode 100644 index 0000000..3598db3 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtForewarningconfigService.java @@ -0,0 +1,54 @@ +package org.nl.wms.sch.forewarn.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningconfig; +import org.nl.wms.sch.forewarn.service.dto.StIvtForewarningconfigDto; +import org.nl.wms.sch.forewarn.service.dto.StIvtOverdueforewarningDto; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author zhengxuming +* @date 2025-07-14 +**/ +public interface IStIvtForewarningconfigService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(StIvtForewarningconfigDto entity); + + /** + * 编辑 + * @param entity / + */ + void update(StIvtForewarningconfigDto entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + List getWarningMaterial(Map whereJson); + + /** + * 修改启用状态 + * @param dao:实体类 + */ + void changeActive(StIvtForewarningconfigDto dao); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtForewarningmaterialService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtForewarningmaterialService.java new file mode 100644 index 0000000..25d12e7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtForewarningmaterialService.java @@ -0,0 +1,43 @@ +package org.nl.wms.sch.forewarn.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningmaterial; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author zhengxuming +* @date 2025-07-15 +**/ +public interface IStIvtForewarningmaterialService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(StIvtForewarningmaterial entity); + + /** + * 编辑 + * @param entity / + */ + void update(StIvtForewarningmaterial entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtOverdueforewarningService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtOverdueforewarningService.java new file mode 100644 index 0000000..72eb99e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtOverdueforewarningService.java @@ -0,0 +1,56 @@ +package org.nl.wms.sch.forewarn.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sch.forewarn.service.dao.StIvtOverdueforewarning; +import org.nl.wms.sch.forewarn.service.dto.StIvtOverdueforewarningDto; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author zhengxuming +* @date 2025-07-14 +**/ +public interface IStIvtOverdueforewarningService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(StIvtOverdueforewarning entity); + + /** + * 编辑 + * @param entity / + */ + void update(StIvtOverdueforewarning entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + /** + * + * 删除全部 + */ + void deleteAllNoParam(); + + /** + * 已读全部 + * @param ids / + */ + void read(Set ids); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtSafetyforewarningService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtSafetyforewarningService.java new file mode 100644 index 0000000..6e850c7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/IStIvtSafetyforewarningService.java @@ -0,0 +1,52 @@ +package org.nl.wms.sch.forewarn.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sch.forewarn.service.dao.StIvtSafetyforewarning; +import org.nl.wms.sch.forewarn.service.dto.StIvtSafetyforewarningDto; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author zhengxuming +* @date 2025-07-14 +**/ +public interface IStIvtSafetyforewarningService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(StIvtSafetyforewarning entity); + + /** + * 编辑 + * @param entity / + */ + void update(StIvtSafetyforewarning entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + void deleteAllNoParam(); + + /** + * 已读全部 + * @param ids / + */ + void read(Set ids); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtForewarningconfig.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtForewarningconfig.java new file mode 100644 index 0000000..8c4c7c9 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtForewarningconfig.java @@ -0,0 +1,77 @@ +package org.nl.wms.sch.forewarn.service.dao; + + import com.baomidou.mybatisplus.annotation.IdType; + import com.baomidou.mybatisplus.annotation.TableId; + import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + import java.math.BigDecimal; + +/** +* @description / +* @author zhengxuming +* @date 2025-07-14 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_forewarningconfig") +public class StIvtForewarningconfig implements Serializable { + +private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.NONE) + /** id */ + private String id; + + /** 方案名称 */ + private String name; + + /** 仓库编码 */ + private String stor_code; + + /** 安全数量下限 */ + private BigDecimal safe_qty_lower_limit; + + /** 安全数量上限 */ + private BigDecimal safe_qty_upper_limit; + + /** 超期天数 */ + private BigDecimal safe_days; + + /** 备注 */ + private String remark; + + /** 是否启用 */ + private Boolean is_active; + + /** 是否删除 */ + private Boolean is_delete; + + /** 创建id */ + private String create_id; + + /** 创建者 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改id */ + private String update_id; + + /** 修改者 */ + private String update_name; + + /** 修改时间 */ + private String update_time; + + /** 表达式 */ + private String cron; + + /** 通知类型 */ + private String notify_type; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtForewarningmaterial.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtForewarningmaterial.java new file mode 100644 index 0000000..3e4de20 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtForewarningmaterial.java @@ -0,0 +1,64 @@ +package org.nl.wms.sch.forewarn.service.dao; + + import com.baomidou.mybatisplus.annotation.IdType; + import com.baomidou.mybatisplus.annotation.TableId; + import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** +* @description / +* @author zhengxuming +* @date 2025-07-15 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_forewarningmaterial") +public class StIvtForewarningmaterial implements Serializable { + +private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.NONE) + /** 明细id */ + private String id; + + /** 预警id */ + private String config_id; + + /** 物料标识 */ + private String material_id; + + /** 物料编号 */ + private String material_code; + + /** 物料名称 */ + private String material_name; + + /** 是否启用 */ + private String is_active; + + /** 是否删除 */ + private String is_delete; + + /** 创建id */ + private String create_id; + + /** 创建者 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改id */ + private String update_id; + + /** 修改者 */ + private String update_name; + + /** 修改时间 */ + private String update_time; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtOverdueforewarning.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtOverdueforewarning.java new file mode 100644 index 0000000..033c441 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtOverdueforewarning.java @@ -0,0 +1,89 @@ +package org.nl.wms.sch.forewarn.service.dao; + + import com.baomidou.mybatisplus.annotation.IdType; + import com.baomidou.mybatisplus.annotation.TableId; + import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + import java.math.BigDecimal; + +/** +* @description / +* @author zhengxuming +* @date 2025-07-14 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_overdueforewarning") +public class StIvtOverdueforewarning implements Serializable { + +private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.NONE) + /** id */ + private String id; + + /** 配置id */ + private String config_id; + + /** 物料编码 */ + private String material_code; + + /** 物料名称 */ + private String material_name; + + /** 仓库编码 */ + private String stor_code; + + /** 库区编码 */ + private String sect_code; + + /** 库区名称 */ + private String sect_name; + + /** 仓位编码 */ + private String struct_code; + + /** 仓位名称 */ + private String struct_name; + + /** 入库时间 */ + private String insert_time; + + /** 超时天数 */ + private BigDecimal overdue_days; + + /** 安全天数 */ + private BigDecimal safe_days; + + /** 备注 */ + private String remark; + + /** 是否删除 */ + private String is_delete; + + /** 是否已读 */ + private Boolean is_read; + + /** 创建id */ + private String create_id; + + /** 创建者 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改id */ + private String update_id; + + /** 修改者 */ + private String update_name; + + /** 修改时间 */ + private String update_time; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtSafetyforewarning.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtSafetyforewarning.java new file mode 100644 index 0000000..ab72d15 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/StIvtSafetyforewarning.java @@ -0,0 +1,89 @@ +package org.nl.wms.sch.forewarn.service.dao; + + import com.baomidou.mybatisplus.annotation.IdType; + import com.baomidou.mybatisplus.annotation.TableId; + import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + import java.math.BigDecimal; + +/** +* @description / +* @author zhengxuming +* @date 2025-07-14 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_safetyforewarning") +public class StIvtSafetyforewarning implements Serializable { + +private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.NONE) + /** id */ + private String id; + + /** 配置id */ + private String config_id; + + /** 物料编码 */ + private String material_code; + + /** 物料名称 */ + private String material_name; + + /** 仓库编码 */ + private String stor_code; + + /** 库区编码 */ + private String sect_code; + + /** 库区名称 */ + private String sect_name; + + /** 仓位编码 */ + private String struct_code; + + /** 仓位名称 */ + private String struct_name; + + /** 当前数量 */ + private BigDecimal current_qty; + + /** 安全数量下限 */ + private BigDecimal safe_qty_lower_limit; + + /** 安全数量上限 */ + private BigDecimal safe_qty_upper_limit; + + /** 备注 */ + private String remark; + + /** 是否删除 */ + private String is_delete; + + /** 是否已读 */ + private Boolean is_read; + + /** 创建id */ + private String create_id; + + /** 创建者 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改id */ + private String update_id; + + /** 修改者 */ + private String update_name; + + /** 修改时间 */ + private String update_time; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningconfigMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningconfigMapper.java new file mode 100644 index 0000000..8a2a5dd --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningconfigMapper.java @@ -0,0 +1,18 @@ +package org.nl.wms.sch.forewarn.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningconfig; +import org.nl.wms.sch.forewarn.service.dto.StIvtForewarningconfigDto; + +import java.util.Map; + +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +public interface StIvtForewarningconfigMapper extends BaseMapper { + IPage queryAllByPage(Page page, @Param("params") Map params); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningconfigMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningconfigMapper.xml new file mode 100644 index 0000000..5d908b2 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningconfigMapper.xml @@ -0,0 +1,37 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningmaterialMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningmaterialMapper.java new file mode 100644 index 0000000..2fd31f4 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningmaterialMapper.java @@ -0,0 +1,17 @@ +package org.nl.wms.sch.forewarn.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningmaterial; +import org.nl.wms.sch.forewarn.service.dto.StIvtOverdueforewarningDto; + +import java.util.List; +import java.util.Map; + +/** +* @author zhengxuming +* @date 2025-07-15 +**/ +public interface StIvtForewarningmaterialMapper extends BaseMapper { + List queryAllByList(@Param("params") Map params); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningmaterialMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningmaterialMapper.xml new file mode 100644 index 0000000..53b6208 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtForewarningmaterialMapper.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtOverdueforewarningMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtOverdueforewarningMapper.java new file mode 100644 index 0000000..6950b9b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtOverdueforewarningMapper.java @@ -0,0 +1,18 @@ +package org.nl.wms.sch.forewarn.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.forewarn.service.dao.StIvtOverdueforewarning; +import org.nl.wms.sch.forewarn.service.dto.StIvtOverdueforewarningDto; +import java.util.Map; + +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +public interface StIvtOverdueforewarningMapper extends BaseMapper { + IPage queryAllByPage(Page page, @Param("params") Map params); + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtOverdueforewarningMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtOverdueforewarningMapper.xml new file mode 100644 index 0000000..7335831 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtOverdueforewarningMapper.xml @@ -0,0 +1,30 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtSafetyforewarningMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtSafetyforewarningMapper.java new file mode 100644 index 0000000..d877190 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtSafetyforewarningMapper.java @@ -0,0 +1,18 @@ +package org.nl.wms.sch.forewarn.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.forewarn.service.dao.StIvtSafetyforewarning; +import org.nl.wms.sch.forewarn.service.dto.StIvtSafetyforewarningDto; + +import java.util.Map; + +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +public interface StIvtSafetyforewarningMapper extends BaseMapper { + IPage queryAllByPage(Page page, @Param("params") Map params); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtSafetyforewarningMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtSafetyforewarningMapper.xml new file mode 100644 index 0000000..24f2fbb --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/mapper/StIvtSafetyforewarningMapper.xml @@ -0,0 +1,30 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/MdPbStoragevehicleextDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/MdPbStoragevehicleextDto.java new file mode 100644 index 0000000..9de1a6a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/MdPbStoragevehicleextDto.java @@ -0,0 +1,64 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import lombok.Data; +import org.nl.wms.sch.forewarn.service.dao.MdPbStoragevehicleext; + +import java.math.BigDecimal; + +/** + * @author dsh + * 2025/6/5 + */ +@Data +public class MdPbStoragevehicleextDto extends MdPbStoragevehicleext { + + /** + * 库区标识 + */ + private String sect_id; + + /** + * 库区编码 + */ + private String sect_code; + + /** + * 仓库编码 + */ + private String stor_code; + + /** + * 库区名称 + */ + private String sect_name; + + /** + * 仓位标识 + */ + private String struct_id; + + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 仓位名称 + */ + private String struct_name; + + /** + * 物料名称 + */ + private String material_name; + + /** + * 数量 + */ + private BigDecimal qty; + + private String create_time; + + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningconfigDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningconfigDto.java new file mode 100644 index 0000000..edd82b7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningconfigDto.java @@ -0,0 +1,73 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import lombok.Data; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningmaterial; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** +* @description / +* @author zhengxuming +* @date 2025-07-14 +**/ +@Data +public class StIvtForewarningconfigDto implements Serializable { + + /** id */ + private String id; + + /** 方案名称 */ + private String name; + + /** 仓库编码 */ + private String stor_code; + + /** 仓库名称 */ + private String stor_name; + + /** 安全数量下限 */ + private BigDecimal safe_qty_lower_limit; + + /** 安全数量上限 */ + private BigDecimal safe_qty_upper_limit; + + /** 超期天数 */ + private BigDecimal safe_days; + + /** 备注 */ + private String remark; + + /** 是否启用 */ + private Boolean is_active; + + /** 是否删除 */ + private Boolean is_delete; + + /** 创建id */ + private String create_id; + + /** 创建者 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改id */ + private String update_id; + + /** 修改者 */ + private String update_name; + + /** 修改时间 */ + private String update_time; + + /** 表达式 */ + private String cron; + + /** 通知类型 */ + private String notify_type; + + List tableData; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningconfigQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningconfigQuery.java new file mode 100644 index 0000000..767119d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningconfigQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningconfig; + +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +public class StIvtForewarningconfigQuery extends BaseQuery { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningmaterialDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningmaterialDto.java new file mode 100644 index 0000000..f8be9a8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningmaterialDto.java @@ -0,0 +1,60 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author zhengxuming +* @date 2025-07-15 +**/ +@Data +public class StIvtForewarningmaterialDto implements Serializable { + + /** 明细id */ + private String id; + + /** 预警id */ + private String config_id; + + /** 物料标识 */ + private String material_id; + + /** 物料编号 */ + private String material_code; + + /** 物料名称 */ + private String material_name; + + /** 物料规格 */ + private String material_spec; + + /** 物料型号 */ + private String material_model; + + /** 是否启用 */ + private String is_active; + + /** 是否删除 */ + private String is_delete; + + /** 创建id */ + private Long create_id; + + /** 创建者 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改id */ + private Long update_id; + + /** 修改者 */ + private String update_name; + + /** 修改时间 */ + private String update_time; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningmaterialQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningmaterialQuery.java new file mode 100644 index 0000000..b6066d3 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtForewarningmaterialQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningmaterial; + +/** +* @author zhengxuming +* @date 2025-07-15 +**/ +public class StIvtForewarningmaterialQuery extends BaseQuery { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtOverdueforewarningDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtOverdueforewarningDto.java new file mode 100644 index 0000000..25053ca --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtOverdueforewarningDto.java @@ -0,0 +1,83 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* @description / +* @author zhengxuming +* @date 2025-07-14 +**/ +@Data +public class StIvtOverdueforewarningDto implements Serializable { + + /** id */ + private String id; + + /** 配置id */ + private String config_id; + + private String config_name; + + /** 物料编码 */ + private String material_code; + + /** 物料名称 */ + private String material_name; + + /** 仓库编码 */ + private String stor_code; + + private String stor_name; + + /** 库区编码 */ + private String sect_code; + + /** 库区名称 */ + private String sect_name; + + /** 仓位编码 */ + private String struct_code; + + /** 仓位名称 */ + private String struct_name; + + /** 入库时间 */ + private String insert_time; + + /** 超时天数 */ + private BigDecimal overdue_days; + + /** 安全天数 */ + private BigDecimal safe_days; + + /** 备注 */ + private String remark; + + /** 是否删除 */ + private String is_delete; + + /** 是否已读 */ + private Boolean is_read; + + /** 创建id */ + private String create_id; + + /** 创建者 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改id */ + private String update_id; + + /** 修改者 */ + private String update_name; + + /** 修改时间 */ + private String update_time; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtOverdueforewarningQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtOverdueforewarningQuery.java new file mode 100644 index 0000000..c5bcc73 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtOverdueforewarningQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.sch.forewarn.service.dao.StIvtOverdueforewarning; + +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +public class StIvtOverdueforewarningQuery extends BaseQuery { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtSafetyforewarningDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtSafetyforewarningDto.java new file mode 100644 index 0000000..62d484c --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtSafetyforewarningDto.java @@ -0,0 +1,83 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* @description / +* @author zhengxuming +* @date 2025-07-14 +**/ +@Data +public class StIvtSafetyforewarningDto implements Serializable { + + /** id */ + private String id; + + /** 配置id */ + private String config_id; + + private String config_name; + + /** 物料编码 */ + private String material_code; + + /** 物料名称 */ + private String material_name; + + /** 仓库编码 */ + private String stor_code; + + private String stor_name; + + /** 库区编码 */ + private String sect_code; + + /** 库区名称 */ + private String sect_name; + + /** 仓位编码 */ + private String struct_code; + + /** 仓位名称 */ + private String struct_name; + + /** 当前数量 */ + private BigDecimal current_qty; + + /** 安全数量下限 */ + private BigDecimal safe_qty_lower_limit; + + /** 安全数量上限 */ + private BigDecimal safe_qty_upper_limit; + + /** 备注 */ + private String remark; + + /** 是否删除 */ + private String is_delete; + + /** 是否已读 */ + private Boolean is_read; + + /** 创建id */ + private String create_id; + + /** 创建者 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改id */ + private String update_id; + + /** 修改者 */ + private String update_name; + + /** 修改时间 */ + private String update_time; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtSafetyforewarningQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtSafetyforewarningQuery.java new file mode 100644 index 0000000..15e312b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dto/StIvtSafetyforewarningQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.sch.forewarn.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.sch.forewarn.service.dao.StIvtSafetyforewarning; + +/** +* @author zhengxuming +* @date 2025-07-14 +**/ +public class StIvtSafetyforewarningQuery extends BaseQuery { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtForewarningconfigServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtForewarningconfigServiceImpl.java new file mode 100644 index 0000000..11a796b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtForewarningconfigServiceImpl.java @@ -0,0 +1,133 @@ +package org.nl.wms.sch.forewarn.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.nl.config.language.LangProcess; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.sch.forewarn.service.IStIvtForewarningconfigService; +import org.nl.wms.sch.forewarn.service.IStIvtForewarningmaterialService; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningmaterial; +import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtForewarningconfigMapper; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningconfig; +import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtForewarningmaterialMapper; +import org.nl.wms.sch.forewarn.service.dto.StIvtForewarningconfigDto; +import org.nl.wms.sch.forewarn.service.dto.StIvtOverdueforewarningDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** +* @description 服务实现 +* @author zhengxuming +* @date 2025-07-14 +**/ +@Slf4j +@Service +public class StIvtForewarningconfigServiceImpl extends ServiceImpl implements IStIvtForewarningconfigService { + + @Autowired + private StIvtForewarningconfigMapper stIvtForewarningconfigMapper; + + @Autowired + private IStIvtForewarningmaterialService iStIvtForewarningmaterialService; + + @Autowired + private StIvtForewarningmaterialMapper stIvtForewarningmaterialMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + return stIvtForewarningconfigMapper.queryAllByPage(new Page<>(page.getPage() +1 ,page.getSize()), whereJson); + + } + + @Override + public void create(StIvtForewarningconfigDto dto) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + dto.setId(IdUtil.getSnowflake(1, 1).nextIdStr()); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setCreate_time(now); + dto.setUpdate_id(currentUserId); + dto.setUpdate_name(nickName); + dto.setUpdate_time(now); + StIvtForewarningconfig entity = BeanUtil.copyProperties(dto, StIvtForewarningconfig.class); + List stIvtForewarningmaterialList = dto.getTableData(); + + if( stIvtForewarningconfigMapper.insert(entity)>0) { + stIvtForewarningmaterialList.forEach(stIvtForewarningmaterial -> { + stIvtForewarningmaterial.setConfig_id(dto.getId()); + iStIvtForewarningmaterialService.create(stIvtForewarningmaterial); + }); + } + } + + @Override + public void update(StIvtForewarningconfigDto dto) { + StIvtForewarningconfig entity = stIvtForewarningconfigMapper.selectById(dto.getId()); + if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); + + entity = BeanUtil.copyProperties(dto, StIvtForewarningconfig.class); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + List stIvtForewarningmaterialList = dto.getTableData(); + + if( stIvtForewarningconfigMapper.updateById(entity)>0) { + stIvtForewarningmaterialMapper.delete(new LambdaQueryWrapper() + .eq(StIvtForewarningmaterial::getConfig_id,dto.getId())); + stIvtForewarningmaterialList.forEach(stIvtForewarningmaterial -> { + stIvtForewarningmaterial.setConfig_id(dto.getId()); + iStIvtForewarningmaterialService.create(stIvtForewarningmaterial); + }); + } + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + if (stIvtForewarningconfigMapper.deleteBatchIds(ids) > 0) { + stIvtForewarningmaterialMapper.delete(new LambdaQueryWrapper() + .in(StIvtForewarningmaterial::getConfig_id, ids)); + } + } + + @Override + public List getWarningMaterial(Map whereJson) { + return stIvtForewarningmaterialMapper.queryAllByList(whereJson); + } + + @Override + public void changeActive(StIvtForewarningconfigDto dao) { + if(StringUtils.isBlank(dao.getId())){ + return; + } + Boolean isUsed = true; + if (dao.getIs_active()) { + isUsed = false; + } + StIvtForewarningconfig stIvtForewarningconfig = stIvtForewarningconfigMapper.selectById(dao.getId()); + stIvtForewarningconfig.setIs_active(isUsed); + stIvtForewarningconfig.setUpdate_time(DateUtil.now()); + stIvtForewarningconfig.setUpdate_name(SecurityUtils.getCurrentNickName()); + this.updateById(stIvtForewarningconfig); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtForewarningmaterialServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtForewarningmaterialServiceImpl.java new file mode 100644 index 0000000..210e13c --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtForewarningmaterialServiceImpl.java @@ -0,0 +1,80 @@ +package org.nl.wms.sch.forewarn.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.config.language.LangProcess; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.sch.forewarn.service.IStIvtForewarningmaterialService; +import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtForewarningmaterialMapper; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningmaterial; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务实现 +* @author zhengxuming +* @date 2025-07-15 +**/ +@Slf4j +@Service +public class StIvtForewarningmaterialServiceImpl extends ServiceImpl implements IStIvtForewarningmaterialService { + + @Autowired + private StIvtForewarningmaterialMapper stIvtForewarningmaterialMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + stIvtForewarningmaterialMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(StIvtForewarningmaterial entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setId(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + stIvtForewarningmaterialMapper.insert(entity); + } + + @Override + public void update(StIvtForewarningmaterial entity) { + StIvtForewarningmaterial dto = stIvtForewarningmaterialMapper.selectById(entity.getId()); + if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + stIvtForewarningmaterialMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + stIvtForewarningmaterialMapper.deleteBatchIds(ids); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtOverdueforewarningServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtOverdueforewarningServiceImpl.java new file mode 100644 index 0000000..340f55d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtOverdueforewarningServiceImpl.java @@ -0,0 +1,97 @@ +package org.nl.wms.sch.forewarn.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.config.language.LangProcess; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.sch.forewarn.service.IStIvtOverdueforewarningService; +import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtOverdueforewarningMapper; +import org.nl.wms.sch.forewarn.service.dao.StIvtOverdueforewarning; +import org.nl.wms.sch.forewarn.service.dto.StIvtOverdueforewarningDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务实现 +* @author zhengxuming +* @date 2025-07-14 +**/ +@Slf4j +@Service +public class StIvtOverdueforewarningServiceImpl extends ServiceImpl implements IStIvtOverdueforewarningService { + + @Autowired + private StIvtOverdueforewarningMapper stIvtOverdueforewarningMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + return stIvtOverdueforewarningMapper.queryAllByPage(new Page<>(page.getPage() +1 ,page.getSize()), whereJson); + } + + @Override + public void create(StIvtOverdueforewarning entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setId(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + stIvtOverdueforewarningMapper.insert(entity); + } + + @Override + public void update(StIvtOverdueforewarning entity) { + StIvtOverdueforewarning dto = stIvtOverdueforewarningMapper.selectById(entity.getId()); + if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + stIvtOverdueforewarningMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + stIvtOverdueforewarningMapper.deleteBatchIds(ids); + } + + @Override + public void deleteAllNoParam() { + // 真删除 + stIvtOverdueforewarningMapper.deleteByMap(null); + } + + @Override + public void read(Set ids) { + this.update( + new UpdateWrapper().lambda() + .in(StIvtOverdueforewarning::getId, ids) + .eq(StIvtOverdueforewarning::getIs_read,false) + .set(StIvtOverdueforewarning::getIs_read, true) + .set(StIvtOverdueforewarning::getUpdate_id, SecurityUtils.getCurrentUserId()) + .set(StIvtOverdueforewarning::getUpdate_name, SecurityUtils.getCurrentNickName()) + .set(StIvtOverdueforewarning::getUpdate_time, DateUtil.now()) + ); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtSafetyforewarningServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtSafetyforewarningServiceImpl.java new file mode 100644 index 0000000..320c626 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/impl/StIvtSafetyforewarningServiceImpl.java @@ -0,0 +1,101 @@ +package org.nl.wms.sch.forewarn.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.config.language.LangProcess; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.sch.forewarn.service.IStIvtSafetyforewarningService; +import org.nl.wms.sch.forewarn.service.dao.StIvtSafetyforewarning; +import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtForewarningconfigMapper; +import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtSafetyforewarningMapper; +import org.nl.wms.sch.forewarn.service.dto.StIvtSafetyforewarningDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** +* @description 服务实现 +* @author zhengxuming +* @date 2025-07-14 +**/ +@Slf4j +@Service +public class StIvtSafetyforewarningServiceImpl extends ServiceImpl implements IStIvtSafetyforewarningService { + + @Autowired + private StIvtSafetyforewarningMapper stIvtSafetyforewarningMapper; + + @Autowired + private StIvtForewarningconfigMapper stIvtForewarningconfigMapper; + + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + return stIvtSafetyforewarningMapper.queryAllByPage(new Page<>(page.getPage() +1 ,page.getSize()), whereJson); + } + + @Override + public void create(StIvtSafetyforewarning entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setId(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + stIvtSafetyforewarningMapper.insert(entity); + } + + @Override + public void update(StIvtSafetyforewarning entity) { + StIvtSafetyforewarning dto = stIvtSafetyforewarningMapper.selectById(entity.getId()); + if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + stIvtSafetyforewarningMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + stIvtSafetyforewarningMapper.deleteBatchIds(ids); + } + + @Override + public void deleteAllNoParam() { + // 真删除 + stIvtSafetyforewarningMapper.deleteByMap(null); + } + + @Override + public void read(Set ids) { + this.update( + new UpdateWrapper().lambda() + .in(StIvtSafetyforewarning::getId, ids) + .eq(StIvtSafetyforewarning::getIs_read,false) + .set(StIvtSafetyforewarning::getIs_read, true) + .set(StIvtSafetyforewarning::getUpdate_id, SecurityUtils.getCurrentUserId()) + .set(StIvtSafetyforewarning::getUpdate_name, SecurityUtils.getCurrentNickName()) + .set(StIvtSafetyforewarning::getUpdate_time, DateUtil.now()) + ); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplatedtlService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplatedtlService.java index 2974043..e3c3ca6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplatedtlService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplatedtlService.java @@ -7,4 +7,6 @@ import java.util.List; public interface IMdPbGroupplatedtlService extends IService { List getGroupPlatedtlList(String groupId); + + List selectDtlByContainerCode(String container_code); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlate.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlate.java index 74ec687..6a825ac 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlate.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlate.java @@ -2,10 +2,7 @@ package org.nl.wms.sch.group.service.dao; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import java.io.Serializable; import java.math.BigDecimal; @@ -17,6 +14,7 @@ import java.math.BigDecimal; @Data @Builder @NoArgsConstructor +@EqualsAndHashCode(callSuper = false) @AllArgsConstructor @TableName("md_pb_groupplate") public class GroupPlate implements Serializable { @@ -74,6 +72,9 @@ public class GroupPlate implements Serializable { */ private String remark; + private String is_delete; + + /** * 状态 01组盘 02入库 03出库 */ diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlatedtl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlatedtl.java index 78dee50..5df8901 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlatedtl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlatedtl.java @@ -7,12 +7,14 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; + @Data @Builder @NoArgsConstructor @AllArgsConstructor @TableName("md_pb_groupplatedtl") -public class GroupPlatedtl { +public class GroupPlatedtl implements Serializable { private static final long serialVersionUID = 1L; /** diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplateMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplateMapper.java index d9745b3..3349601 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplateMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplateMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.forewarn.service.dto.MdPbStoragevehicleextDto; import org.nl.wms.sch.group.service.dao.GroupPlate; import java.util.List; @@ -41,4 +42,5 @@ public interface MdPbGroupplateMapper extends BaseMapper { //查询载具物料信息 List getVehicleMaterial(@Param("params") Map whereJson); + List queryAll(@Param("params") Map queryMap); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplateMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplateMapper.xml index b219e51..5a43160 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplateMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplateMapper.xml @@ -78,4 +78,33 @@ ORDER BY gro.create_time Desc + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplatedtlServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplatedtlServiceImpl.java index c5cd558..e1c58ed 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplatedtlServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplatedtlServiceImpl.java @@ -20,4 +20,10 @@ public class MdPbGroupplatedtlServiceImpl extends ServiceImpl list = mdpbGroupplatedtlMapper.selectList(new LambdaQueryWrapper().eq(GroupPlatedtl::getGroup_id, groupId)); return list.size() > 0 ? list : null; } + + @Override + public List selectDtlByContainerCode(String container_code) { + List list = mdpbGroupplatedtlMapper.selectList(new LambdaQueryWrapper().eq(GroupPlatedtl::getContainer_code, container_code)); + return list; + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/controller/MaterialRecordController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/controller/MaterialRecordController.java new file mode 100644 index 0000000..d0e3067 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/controller/MaterialRecordController.java @@ -0,0 +1,55 @@ +package org.nl.wms.sch.material.controller; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.sch.material.service.MaterialRecordService; +import org.nl.wms.sch.material.service.dao.MaterialRecord; +import org.nl.wms.sch.material.service.dto.MaterialRecordQuery; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Set; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/materialRecord") +@Slf4j +public class MaterialRecordController { + private final MaterialRecordService materialRecordService; + + + @GetMapping + @Log("查询用料清单") + public ResponseEntity query(MaterialRecordQuery whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(materialRecordService.queryAll(whereJson,page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增用料清单") + public ResponseEntity create(@Validated @RequestBody MaterialRecord entity){ + materialRecordService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改用料清单") + public ResponseEntity update(@Validated @RequestBody MaterialRecord entity){ + materialRecordService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除用料清单") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + materialRecordService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/MaterialRecordService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/MaterialRecordService.java new file mode 100644 index 0000000..b1e4665 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/MaterialRecordService.java @@ -0,0 +1,40 @@ +package org.nl.wms.sch.material.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.sch.material.service.dao.MaterialRecord; +import org.nl.wms.sch.material.service.dto.MaterialRecordQuery; +import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.wms.sch.task.service.dto.SchBaseTaskconfigQuery; + +import java.util.Set; + +public interface MaterialRecordService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(MaterialRecordQuery whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(MaterialRecord entity); + + /** + * 编辑 + * @param entity / + */ + void update(MaterialRecord entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/MaterialRecord.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/MaterialRecord.java new file mode 100644 index 0000000..019ead1 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/MaterialRecord.java @@ -0,0 +1,93 @@ +package org.nl.wms.sch.material.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("pdm_bd_material_record") +public class MaterialRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 要料记录标识 + */ + @TableId(value = "record_id") + private String record_id; + + /** + * 物料编码 + */ + private String material_code; + + /** + * 物料名称 + */ + private String material_name; + + private String region_code; + + + private String region_name; + + /** + * 计量单位标识 + */ + private String measure_unit_id; + + /** + * 计量单位名称 + */ + private String unit_name; + + /** + * 数量 + */ + private int qty; + + /** + * 冻结数量 + */ + private int frozen_qty; + + /** + * 备注 + */ + private String remark; + + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_id; + + /** + * 修改人姓名 + */ + private String update_name; + + /** + * 修改时间 + */ + private String update_time; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/mapper/MaterialRecordMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/mapper/MaterialRecordMapper.java new file mode 100644 index 0000000..b9e8024 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/mapper/MaterialRecordMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.sch.material.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.material.service.dao.MaterialRecord; +import org.nl.wms.sch.material.service.dto.MaterialRecordQuery; + +import java.util.List; + +public interface MaterialRecordMapper extends BaseMapper { + IPage selectPageLeftJoin(IPage pages, MaterialRecordQuery whereJson); + + List selectMaterialByRegion(@Param("region_code") String region_code); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/mapper/MaterialRecordMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/mapper/MaterialRecordMapper.xml new file mode 100644 index 0000000..b85525e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dao/mapper/MaterialRecordMapper.xml @@ -0,0 +1,31 @@ + + + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dto/MaterialRecordQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dto/MaterialRecordQuery.java new file mode 100644 index 0000000..abc9a7c --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/dto/MaterialRecordQuery.java @@ -0,0 +1,9 @@ +package org.nl.wms.sch.material.service.dto; + +import lombok.Data; +import org.nl.wms.sch.material.service.dao.MaterialRecord; + +@Data +public class MaterialRecordQuery extends MaterialRecord { + private String blurry; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/impl/MaterialRecordServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/impl/MaterialRecordServiceImpl.java new file mode 100644 index 0000000..226ebd2 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/material/service/impl/MaterialRecordServiceImpl.java @@ -0,0 +1,92 @@ +package org.nl.wms.sch.material.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.language.LangProcess; +import org.nl.wms.basedata.master.unit.service.dao.Measureunit; +import org.nl.wms.basedata.master.unit.service.dao.mapper.MeasureunitMapper; +import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata.material.service.dao.mapper.MdMeMaterialbaseMapper; +import org.nl.wms.sch.material.service.MaterialRecordService; +import org.nl.wms.sch.material.service.dao.MaterialRecord; +import org.nl.wms.sch.material.service.dao.mapper.MaterialRecordMapper; +import org.nl.wms.sch.material.service.dto.MaterialRecordQuery; +import org.nl.wms.sch.region.service.dao.SchBaseRegion; +import org.nl.wms.sch.region.service.dao.mapper.SchBaseRegionMapper; +import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Set; + +@Service +public class MaterialRecordServiceImpl extends ServiceImpl implements MaterialRecordService { + + @Autowired + private MaterialRecordMapper materialRecordMapper; + @Autowired + private MdMeMaterialbaseMapper mdMeMaterialbaseMapper; + @Autowired + private SchBaseRegionMapper schBaseRegionMapper; + @Autowired + private MeasureunitMapper measureunitMapper; + + @Override + public IPage queryAll(MaterialRecordQuery whereJson, PageQuery page) { + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + pages = materialRecordMapper.selectPageLeftJoin(pages, whereJson); + return pages; + } + + @Override + public void create(MaterialRecord entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + SchBaseRegion schBaseRegion = schBaseRegionMapper.selectOne(new LambdaQueryWrapper() + .eq(SchBaseRegion::getRegion_code, entity.getRegion_code())); + MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper() + .eq(MdMeMaterialbase::getMaterial_code, entity.getMaterial_code())); + String measure_unit_id = mdMeMaterialbase.getMeasure_unit_id(); + Measureunit measureunit = measureunitMapper.selectById(measure_unit_id); + entity.setRecord_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setRegion_name(schBaseRegion.getRegion_name()); + entity.setMeasure_unit_id(measureunit.getUnit_name()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + materialRecordMapper.insert(entity); + + } + + @Override + public void update(MaterialRecord entity) { + MaterialRecord dto = materialRecordMapper.selectById(entity.getRecord_id()); + if (dto == null) { + throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + materialRecordMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + materialRecordMapper.deleteBatchIds(ids); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java index 3c10444..84162ba 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java @@ -9,6 +9,7 @@ import org.nl.wms.pdm.structivt.service.dto.RegionStructIvtVo; import org.nl.wms.pdm.structivt.service.dto.RegionStructQuery; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.dto.SchBasePointQuery; +import org.nl.wms.sch.task.service.dao.SchBaseTask; import java.util.List; @@ -42,5 +43,13 @@ public interface SchBasePointMapper extends BaseMapper { List getPointByMaxCol(@Param("regionCode") String regionCode, @Param("col") int col); - List getEmptyPoints(@Param("regionCode") String regionCode); + List getEmptyPoints(@Param("regionCode") String regionCode,@Param("prefix") String prefix); + + List checkEndPointTask(SchBaseTask baseTask); + + List selectListByRegionAndPrefix(@Param("region_code") String region_code, @Param("prefix") String prefix); + + List selectSameRowPoints(@Param("point") SchBasePoint point); + + List getNewEndBasePoints(@Param("point_code2") String point_code2, @Param("region_code") String region_code); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml index dc50d4f..a3993b8 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml @@ -34,6 +34,9 @@ AND point_status = #{whereJson.point_status} + + AND storagevehicle_code = #{whereJson.storagevehicle_code} + AND is_used = #{whereJson.is_used} @@ -64,9 +67,9 @@ md_pb_groupplate.status, md_pb_groupplate.create_time as inbound_time, md_pb_groupplate.remark - from sch_base_point + from sch_base_point inner join md_pb_groupplate on sch_base_point.storagevehicle_code = md_pb_groupplate.storagevehicle_code - left join md_me_materialbase on md_pb_groupplate.material_code = md_me_materialbase.material_code + left join md_me_materialbase on md_pb_groupplate.material_code = md_me_materialbase.material_code where sch_base_point.storagevehicle_code is not null and sch_base_point.is_used = 1 AND sch_base_point.storagevehicle_code = #{query.storagevehicle_code} @@ -74,8 +77,8 @@ AND sch_base_point.region_code = #{query.region_code} - - AND md_pb_groupplate.pcsn = #{query.pcsn} + + AND sch_base_point.point_code = #{query.point_code} AND md_pb_groupplate.material_code = #{query.material_code} @@ -84,43 +87,38 @@ + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dto/SchBasePointQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dto/SchBasePointQuery.java index e4eb6b5..2e3dd9a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dto/SchBasePointQuery.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dto/SchBasePointQuery.java @@ -15,6 +15,7 @@ public class SchBasePointQuery implements Serializable { private String blurry; private String workshop_code; private String region_code; + private String storagevehicle_code; private String point_type; private String point_status; private Boolean is_used; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java index 3470896..e1dd761 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java @@ -210,6 +210,7 @@ public class SchBasePointServiceImpl extends ServiceImpl getSamePoints(String regionCode, String material_code) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(SchBasePoint::getRegion_code, regionCode) + .eq(SchBasePoint::getPoint_status, "2") .eq(SchBasePoint::getMaterial_code, material_code) .orderByAsc(SchBasePoint::getIn_order_seq); List list = pointMapper.selectList(queryWrapper); @@ -230,7 +231,7 @@ public class SchBasePointServiceImpl extends ServiceImpl getEmptyPoints(String regionCode) { - List list = pointMapper.getEmptyPoints(regionCode); + List list = pointMapper.getEmptyPoints(regionCode,null); if (CollUtil.isNotEmpty(list)){ return list; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/RegionChargeController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/RegionChargeController.java new file mode 100644 index 0000000..7b4b17a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/RegionChargeController.java @@ -0,0 +1,11 @@ +package org.nl.wms.sch.region.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequestMapping("/api/regionCharge") +public class RegionChargeController { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/SchBaseRegionController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/SchBaseRegionController.java index c5452d6..5c2614c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/SchBaseRegionController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/SchBaseRegionController.java @@ -66,6 +66,13 @@ public class SchBaseRegionController { return new ResponseEntity<>(regionService.getRegionList(region),HttpStatus.OK); } + @PostMapping("/getRegions") + @Log("获取区域下拉框") + + public ResponseEntity getRegions(@RequestBody(required = false) SchBaseRegion region){ + return new ResponseEntity<>(regionService.getRegions(region),HttpStatus.OK); + } + @PostMapping("/getPointStatusSelectById") @Log("获取点位状态下拉框") diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/ISchBaseRegionService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/ISchBaseRegionService.java index 0a091cf..3be3cb0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/ISchBaseRegionService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/ISchBaseRegionService.java @@ -63,4 +63,6 @@ public interface ISchBaseRegionService extends IService { * @return JSONArray */ JSONArray getPointTypeSelectById(String regionId); + + List getRegions(SchBaseRegion region); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/RegionChargeService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/RegionChargeService.java new file mode 100644 index 0000000..397cb0b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/RegionChargeService.java @@ -0,0 +1,7 @@ +package org.nl.wms.sch.region.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sch.region.service.dao.RegionCharge; + +public interface RegionChargeService extends IService { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/RegionCharge.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/RegionCharge.java new file mode 100644 index 0000000..cbeb4f0 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/RegionCharge.java @@ -0,0 +1,42 @@ +package org.nl.wms.sch.region.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_regioncharge") +@Builder +public class RegionCharge implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "regioncharge_id", type = IdType.NONE) + private String regioncharge_id; + + private String region_code; + + private String region_name; + + private int is_delete; + + private String remark; + + private String create_id; + + private String create_name; + + private String create_time; + + private String update_optid; + + private String update_optname; + + + private String update_time; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.java new file mode 100644 index 0000000..41256cf --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.java @@ -0,0 +1,12 @@ +package org.nl.wms.sch.region.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.region.service.dao.RegionCharge; + +import java.util.List; + +public interface RegionChargeMapper extends BaseMapper { + List selectPageLeftJoin(@Param("whereJson") JSONObject whereJson); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.xml new file mode 100644 index 0000000..f994eec --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/RegionChargeServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/RegionChargeServiceImpl.java new file mode 100644 index 0000000..e1fe798 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/RegionChargeServiceImpl.java @@ -0,0 +1,11 @@ +package org.nl.wms.sch.region.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.sch.region.service.RegionChargeService; +import org.nl.wms.sch.region.service.dao.RegionCharge; +import org.nl.wms.sch.region.service.dao.mapper.RegionChargeMapper; +import org.springframework.stereotype.Service; + +@Service +public class RegionChargeServiceImpl extends ServiceImpl implements RegionChargeService { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/SchBaseRegionServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/SchBaseRegionServiceImpl.java index e892d7e..357cf31 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/SchBaseRegionServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/SchBaseRegionServiceImpl.java @@ -17,6 +17,7 @@ import org.nl.wms.sch.region.service.dao.SchBaseRegion; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Set; @@ -129,4 +130,13 @@ public class SchBaseRegionServiceImpl extends ServiceImpl getRegions(SchBaseRegion region) { + List list = Arrays.asList("N1", "N3", "L1", "L2"); + return schBaseRegionMapper.selectList(new LambdaQueryWrapper() + .in(SchBaseRegion::getRegion_code, list) + .eq(ObjectUtil.isNotEmpty(region), SchBaseRegion::getIs_has_workder, true) + .orderByAsc(SchBaseRegion::getOrder_seq)); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java index 04751f0..596dee1 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java @@ -65,10 +65,10 @@ public interface ISchBaseTaskService extends IService { * 根据任务配置查询为完成的列表 * * @param config_code 任务配置编码 - * @param task_code 当前任务 + * @param prefix 点位前缀 * @return 未完成任务列表 */ - List findUnFinishTasksByTaskConfig(String config_code, String task_code); + List findUnFinishTasksByTaskConfig(String config_code, String prefix); /** * 根据任务配置查询同台设备未完成的任务列表 @@ -121,4 +121,8 @@ public interface ISchBaseTaskService extends IService { * @return List */ List findUnFinishTasksByTaskConfigAndPointCode(String config_code, String newPoint_code); + + List queryPdaTask(JSONObject whereJson); + + List findTaskByPoint(String point_code); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java index 6427785..09d25a6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java @@ -46,12 +46,18 @@ public class SchBaseTask implements Serializable { /** 点位4 */ private String point_code4; + /** 点位5 */ + private String point_code5; + /** 点位6 */ + private String point_code6; /** 载具类型 */ private String vehicle_type; /** 载具编码 */ private String vehicle_code; + /** 载具编码2 */ + private String vehicle_code2; /** * 载具物料信息 */ @@ -93,6 +99,7 @@ public class SchBaseTask implements Serializable { /** 更新时间 */ private String update_time; private String request_param; + private String response_param; @TableField(exist = false) private String task_type; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.java index d97fa90..1be5b00 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.java @@ -1,7 +1,9 @@ package org.nl.wms.sch.task.service.dao.mapper; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dto.SchBaseTaskQuery; @@ -14,4 +16,6 @@ import java.util.List; public interface SchBaseTaskMapper extends BaseMapper { IPage selectPageLeftJoin(IPage pages, SchBaseTaskQuery whereJson, List collect); + + List queryPdaTask(@Param("param") JSONObject whereJson); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.xml index 002dd4c..26858d0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.xml @@ -45,4 +45,33 @@ ORDER BY t.create_time DESC + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java index 04f7819..cd909e7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -133,12 +133,12 @@ public class SchBaseTaskServiceImpl extends ServiceImpl findUnFinishTasksByTaskConfig(String config_code, String task_code) { + public List findUnFinishTasksByTaskConfig(String config_code, String prefix) { Assert.notNull(config_code, "任务配置编码不能为空!"); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.eq(SchBaseTask::getConfig_code, config_code) .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) - .ne(SchBaseTask::getTask_code, task_code) + .like(SchBaseTask::getPoint_code3, prefix) .eq(SchBaseTask::getIs_delete, false); List schBaseTasks = schBaseTaskMapper.selectList(lam); return schBaseTasks; @@ -280,4 +280,26 @@ public class SchBaseTaskServiceImpl extends ServiceImpl queryPdaTask(JSONObject whereJson) { + List list = schBaseTaskMapper.queryPdaTask(whereJson); + return list; + } + + @Override + public List findTaskByPoint(String point_code) { + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) + .and(la -> la.eq(SchBaseTask::getPoint_code1, point_code) + .or() + .eq(SchBaseTask::getPoint_code2, point_code) + .or() + .eq(SchBaseTask::getPoint_code3, point_code) + .or() + .eq(SchBaseTask::getPoint_code4, point_code)) + .eq(SchBaseTask::getIs_delete, false); + List schBaseTasks = schBaseTaskMapper.selectList(lam); + return schBaseTasks; + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index d42a0b6..9886371 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -101,6 +101,7 @@ AbstractTask { taskDto.setStart_device_code2(task.getPoint_code3()); taskDto.setNext_device_code2(task.getPoint_code4()); taskDto.setVehicle_code(task.getVehicle_code()); + taskDto.setAgv_action_type(task.getVehicle_code2()); this.setTask(task.getConfig_code(), taskDto); // 如果各类方法对返回参数有不同,可以通过调用子类实现的deliveryBeforeProcessing方法来完成赋值,也可以是统一封装到参数值中。 this.deliveryBeforeProcessing(task, taskDto); @@ -142,7 +143,7 @@ AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, config_code)); taskDto.setPriority(taskConfig.getPriority()); - taskDto.setTask_type(taskConfig.getAcs_task_type()); + taskDto.setTask_type(taskDto.getAgv_action_type()); taskDto.setProduct_area(taskConfig.getWorkshop_code()); taskDto.setAgv_system_type(taskConfig.getAgv_system_type()); taskDto.setRoute_plan_code(taskConfig.getRoute_plan_code()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AcsTaskDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AcsTaskDto.java index f9cd2f7..0b8e260 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AcsTaskDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AcsTaskDto.java @@ -139,4 +139,9 @@ public class AcsTaskDto { */ private String product_area; private String truss_type; + + /** + * agv二次分配类型(1、普通任务 2、取货二次分配 3、放货二次分配 4、取放货二次分配) + */ + private String agv_action_type; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java index 9623d96..69768d7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java @@ -13,6 +13,10 @@ public class GeneralDefinition { public static final String YES = "1"; /** 否/错误/不可用... */ public static final String NO = "0"; + + public static final String ONE = "1"; + /** 否/错误/不可用... */ + public static final String TWO = "2"; // 账号定义 /** acs系统 */ public static final String ACS_ID = "2"; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PackageInfoIvtEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PackageInfoIvtEnum.java index 35103f2..9ddc8e3 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PackageInfoIvtEnum.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PackageInfoIvtEnum.java @@ -37,6 +37,12 @@ public enum PackageInfoIvtEnum { //是否 IS_USED(MapOf.of("启用", "1", "未启用", "0")), + //是否自动下发 + IS_SEND(MapOf.of("是", "1","否","0")), + + //二次分配请求类型 + TASK_ACTION_TYPE(MapOf.of("取货分配", "1", "放货分配", "2")), + //位置 POINT_LOCATION(MapOf.of("上", "0", "下", "1")), @@ -62,4 +68,4 @@ public enum PackageInfoIvtEnum { } throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); } -} \ No newline at end of file +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/RegionTypeEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/RegionTypeEnum.java new file mode 100644 index 0000000..c07ccfe --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/RegionTypeEnum.java @@ -0,0 +1,48 @@ +package org.nl.wms.sch.task_manage.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.MapOf; + +import java.util.Map; + +@AllArgsConstructor +@Getter +public enum RegionTypeEnum { + //点位类型 + POINT_STATUS(MapOf.of("满轴缓存位", "1", "空载具缓存位", "2", "待检区", "3", "管制区", "4", "装箱位", "5", "装箱区", "6","等待点", "7")), + + //深浅位类型 + REGION_TYPE(MapOf.of("MB制布区", "MB", "NET加工区1", "N1", "NET加工区3", "N3", "E反保管1区", "E1", + "E反保管2区", "E2", "骨才区", "GC", "活性碳保管1区", "H1", "活性碳保管2区", "H2", "活性碳放置区", "HXTFZW", "贴合加工区1", "L1", + "贴合加工区1", "L1", "贴合加工区2", "L2", "待捆包区", "DKB", "空托盘区", "KTP")); + + private Map code; + + public String code(String desc) { + String code = this.getCode().get(desc); + if (StringUtils.isNotEmpty(code)) { + return code; + } + throw new BadRequestException(this.name() + "对应类型" + desc + "未定义"); + } + + public Long longCode(String desc) { + String code = this.getCode().get(desc); + if (StringUtils.isNotEmpty(code)) { + return Long.valueOf(code); + } + throw new BadRequestException(this.name() + "对应类型" + desc + "未定义"); + } + + public String check(String code) { + for (Map.Entry entry : this.getCode().entrySet()) { + if (entry.getValue().equals("code")) { + return entry.getValue(); + } + } + throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskStatusEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskStatusEnum.java new file mode 100644 index 0000000..1facb18 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskStatusEnum.java @@ -0,0 +1,29 @@ +package org.nl.wms.sch.task_manage.enums; + +public enum TaskStatusEnum { + CREATED("01", "生成"), + SURE_START("02", "确定起点"), + SURE_END("03", "确定终点"), + START_AND_POINT("04", "起点终点确认"), + ISSUE("05", "下发"), + EXECUTING("06", "执行中"), + FINISHED("07", "完成"), + PICK_UP_COMPLETED("071", "取货完成,执行中"), + CANCEL("08", "取消"); + + private String name; + private String code; + + private TaskStatusEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public String getName() { + return name; + } + + public String getCode() { + return code; + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/PdaPointTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/PdaPointTask.java index 23b32e0..60684f6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/PdaPointTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/PdaPointTask.java @@ -85,29 +85,14 @@ public class PdaPointTask extends AbstractTask { @Override @Transactional(rollbackFor = Exception.class) public void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - SchBasePoint point = findStartPoint(startRegionStr); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("货架暂无托盘!", TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("货架暂无托盘!"); - } + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String point_code2 = jsonObject.getString("point_code2"); // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); + task.setPoint_code2(point_code2); task.setRemark(""); task.setTask_status(TaskStatus.CREATED.getCode()); taskService.save(task); - // 点位更新 - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); } private SchBasePoint findStartPoint(List startRegionStr) { @@ -164,12 +149,9 @@ public class PdaPointTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 - SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); + // 取货完成时起点清空 + if (ObjectUtil.isNotEmpty(endPointObj)) { endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); // endPointObj.setVehicle_type(GeneralDefinition.STEEL_TRAY); // endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/NETSLTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/NETSLTask.java index 2982962..91f4111 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/NETSLTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/NETSLTask.java @@ -3,9 +3,24 @@ package org.nl.wms.sch.tasks.netsl; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.language.LangProcess; import org.nl.system.service.notice.ISysNoticeService; +import org.nl.system.service.role.ISysRoleService; +import org.nl.system.service.user.ISysUserService; +import org.nl.system.service.user.dao.SysUser; +import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata.material.service.dao.mapper.MdMeMaterialbaseMapper; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningconfig; +import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningmaterial; +import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtForewarningconfigMapper; +import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtForewarningmaterialMapper; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.dto.SchBasePointDto; @@ -27,10 +42,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; + // NET加工区上料任务 @Component(value = "NETSLTask") @TaskType("NETSLTask") @@ -47,6 +64,16 @@ public class NETSLTask extends AbstractTask { private ISysNoticeService noticeService; @Autowired private NETSLMapper netslMapper; + @Autowired + private ISysUserService sysUserService; + @Autowired + private ISysRoleService roleService; + @Autowired + private StIvtForewarningmaterialMapper stIvtForewarningmaterialMapper; + @Autowired + private StIvtForewarningconfigMapper stIvtForewarningconfigMapper; + @Autowired + private MdMeMaterialbaseMapper mdMeMaterialbaseMapper; @Override public void create() throws BadRequestException { @@ -60,7 +87,7 @@ public class NETSLTask extends AbstractTask { List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) .collect(Collectors.toList()); // 找终点 - SchBasePoint point = findStartPoint(startRegionStr,task.getMaterial_code()); + SchBasePoint point = findStartPoint(startRegionStr, task.getMaterial_code()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.updateById(task); @@ -92,16 +119,17 @@ public class NETSLTask extends AbstractTask { List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) .collect(Collectors.toList()); // 找起点 - SchBasePoint point = findStartPoint(startRegionStr,task.getMaterial_code()); + SchBasePoint point = findStartPoint(startRegionStr, task.getMaterial_code()); if (ObjectUtil.isEmpty(point)) { // 消息通知 noticeService.createNotice("找不到可用的MB制布区点位!", TASK_CONFIG_CODE + task.getPoint_code2(), NoticeTypeEnum.WARN.getCode()); throw new BadRequestException("找不到可用的MB制布区点位!"); } - // 设置终点并修改创建成功状态 + // 设置起点并修改创建成功状态 task.setPoint_code1(point.getPoint_code()); task.setVehicle_code(point.getStoragevehicle_code()); + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); task.setRemark(""); task.setTask_status(TaskStatus.CREATED.getCode()); taskService.save(task); @@ -111,12 +139,12 @@ public class NETSLTask extends AbstractTask { pointService.updateById(point); } - private SchBasePoint findStartPoint(List startRegionStr,String material_code) { + private SchBasePoint findStartPoint(List startRegionStr, String material_code) { // 查询该物料所存放的位置 List points = netslMapper.findPointForNETSL(startRegionStr, material_code); //找到最小PCSN的点位 SchBasePointDto schBasePointDto = points.stream() - .min(Comparator.comparing(SchBasePointDto::getPcsn)).orElse( null); + .min(Comparator.comparing(SchBasePointDto::getPcsn)).orElse(null); return ObjectUtil.isNotEmpty(schBasePointDto) ? Convert.convert(SchBasePoint.class, schBasePointDto) : null; } @@ -167,12 +195,9 @@ public class NETSLTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 - SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); + if (ObjectUtil.isNotEmpty(endPointObj)) { endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); // endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); @@ -186,8 +211,28 @@ public class NETSLTask extends AbstractTask { // taskObj.setFinished_type(taskFinishedType.getCode()); TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); + //判断起点区域库存是否小于预警值 +// List samePoints = pointService.getSamePoints(startPointObj.getRegion_code(), taskObj.getMaterial_code()); +// List list = stIvtForewarningmaterialMapper.selectList(new QueryWrapper().eq("material_code", taskObj.getMaterial_code())); +// if (list.size() > 0) { +// StIvtForewarningmaterial stIvtForewarningmaterial = list.get(0); +// StIvtForewarningconfig forewarningconfig = stIvtForewarningconfigMapper.selectOne(new QueryWrapper().eq("id", stIvtForewarningmaterial.getConfig_id())); +// BigDecimal safe_qty_lower_limit = forewarningconfig.getSafe_qty_lower_limit(); +// int low = safe_qty_lower_limit.intValue(); +// if (samePoints.size() < low) { +// String currentUserId = SecurityUtils.getCurrentUserId(); +// SysUser userInfo = sysUserService.getOne(new QueryWrapper().eq("user_id", currentUserId)); +// // 获取权限列表 - 登录查找权限 +// List permissionList = roleService.getPermissionList((JSONObject) JSON.toJSON(userInfo)); +// if (permissionList.contains("dd")) { +// MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_code, taskObj.getMaterial_code())); +// noticeService.createNotice(startPointObj.getRegion_name()+"【"+mdMeMaterialbase.getMaterial_name()+"】物料数量低于库存预警值", "库存预警", "dd"); +// } +// } +// } } + @Transactional(rollbackFor = Exception.class) public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/mapper/NETSLMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/mapper/NETSLMapper.xml index 59fa2ed..cc7d630 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/mapper/NETSLMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/mapper/NETSLMapper.xml @@ -21,10 +21,6 @@ AND g.material_code = #{material_code} AND p.point_status = '2' AND p.is_used = 1 - AND p.region_code IN - - #{code} - ORDER BY g.inbound_time ASC diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/NETXLTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/NETXLTask.java index 2a4b26a..9d25298 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/NETXLTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/NETXLTask.java @@ -5,8 +5,14 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.SneakyThrows; +import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.sch.group.service.dao.GroupPlate; +import org.nl.wms.sch.group.service.dao.GroupPlatedtl; +import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplateMapper; +import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplatedtlMapper; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -23,6 +29,8 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.tasks.netxl.mapper.NETXLMapper; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +38,7 @@ import org.springframework.util.CollectionUtils; import java.util.Arrays; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; //// NET加工区下料任务 @@ -48,6 +57,12 @@ public class NETXLTask extends AbstractTask { private ISysNoticeService noticeService; @Autowired private NETXLMapper netxlMapper; + @Autowired + private RedissonClient redissonClient; + @Autowired + private MdPbGroupplateMapper mdPbGroupplateMapper; + @Autowired + private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper; @Override public void create() throws BadRequestException { @@ -64,7 +79,7 @@ public class NETXLTask extends AbstractTask { String requestParam = task.getRequest_param(); JSONObject jsonObject = JSONObject.parseObject(requestParam); String regionCode = jsonObject.getString("region_code"); - SchBasePoint point = findNextPoint(nextRegionStr, regionCode, task.getMaterial_code()); + SchBasePoint point = findNextPoint(nextRegionStr, regionCode, task); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.updateById(task); @@ -74,11 +89,13 @@ public class NETXLTask extends AbstractTask { continue; } // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); if ("E2".equals(regionCode)) { //设置等待点 - task.setPoint_code3(point.getParent_point_code()); + task.setPoint_code2(point.getParent_point_code()); + task.setPoint_code3(point.getPoint_code()); + } else { + task.setPoint_code2(point.getPoint_code()); } task.setRemark(""); taskService.updateById(task); @@ -90,6 +107,7 @@ public class NETXLTask extends AbstractTask { } @Override + @SneakyThrows @Transactional(rollbackFor = Exception.class) public void createCompletion(SchBaseTask task) { // 配置信息 @@ -102,32 +120,46 @@ public class NETXLTask extends AbstractTask { String requestParam = task.getRequest_param(); JSONObject jsonObject = JSONObject.parseObject(requestParam); String regionCode = jsonObject.getString("region_code"); - SchBasePoint point = findNextPoint(nextRegionStr, regionCode, task.getMaterial_code()); + SchBasePoint point = findNextPoint(nextRegionStr, regionCode, task); if (ObjectUtil.isEmpty(point)) { // 消息通知 noticeService.createNotice("E反保管区没有空闲的点位!", TASK_CONFIG_CODE + task.getPoint_code1(), NoticeTypeEnum.WARN.getCode()); throw new BadRequestException("E反保管区没有空闲的点位!"); } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - if ("E2".equals(regionCode)) { - //设置等待点 - task.setPoint_code3(point.getParent_point_code()); + RLock lock = redissonClient.getLock(point.getPoint_code()); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + // 设置终点并修改创建成功状态 + if ("E2".equals(regionCode)) { + //设置等待点 + task.setPoint_code2(point.getParent_point_code()); + task.setPoint_code3(point.getPoint_code()); + } else { + task.setPoint_code2(point.getPoint_code()); + } + task.setRemark(""); + task.setTask_status(TaskStatus.CREATED.getCode()); + taskService.save(task); + // 点位更新 + point.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); + } else { + throw new BadRequestException("系统繁忙,稍后在试!"); + } + } finally { + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); + } } - task.setRemark(""); - task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.save(task); - // 点位更新 - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); } - private SchBasePoint findNextPoint(List nextRegionStr, String regionCode, String material_code) { + private SchBasePoint findNextPoint(List nextRegionStr, String regionCode, SchBaseTask task) { // 找到同一个区域下物料相同的所有点位 if ("E2".equals(regionCode)) { - List list = pointService.getSamePoints(regionCode, material_code); + List list = pointService.getSamePoints(regionCode, task.getMaterial_code()); if (!CollectionUtils.isEmpty(list)) { for (int i = 0; i < list.size(); i++) { SchBasePoint point = list.get(0); @@ -137,7 +169,7 @@ public class NETXLTask extends AbstractTask { } SchBasePoint newPoint; String newPoint_code = ""; - int new_col = col_num-1; + int new_col = col_num - 1; // 校验当前点位相邻的点是否空闲 for (int j = 0; j < (col_num - 1); j++) { newPoint_code = forametDevice_code(point.getPoint_code(), new_col); @@ -148,11 +180,13 @@ public class NETXLTask extends AbstractTask { point = newPoint; continue; } - return point; + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); + return newPoint; } } - } else if (CollectionUtils.isEmpty(list)){ - //找一排都是空的点位 + } + if (CollectionUtils.isEmpty(list)) { + //找一排都是空的点位 //todo: 两台机台有没有生成相同物料 机台速度 //找最大列为空且没有任务的点位 List points = pointService.getPointByMaxCol(regionCode, 3); for (int i = 0; i < points.size(); i++) { @@ -168,19 +202,20 @@ public class NETXLTask extends AbstractTask { boolean isSecondColFree = checkIsEmpty(secondColPoint); // 如果第一列和第二列都为空,则返回这个第三列点位 if (isFirstColFree && isSecondColFree) { + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); return thirdColPoint; + } else { + continue; } - continue; } - } else { - return null; } + return null; } else { //E1 + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); List points = netxlMapper.findPointForNETXL(nextRegionStr, regionCode); return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; } - return null; } private boolean checkIsEmpty(SchBasePoint point) { @@ -256,12 +291,9 @@ public class NETXLTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 - SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); + if (ObjectUtil.isNotEmpty(endPointObj)) { endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); endPointObj.setUpdate_time(DateUtil.now()); @@ -282,7 +314,15 @@ public class NETXLTask extends AbstractTask { SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); // 起点解锁 if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); + String storagevehicle_code = startPointObj.getStoragevehicle_code(); + if (ObjectUtil.isNotEmpty(storagevehicle_code)) { + GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper().eq(GroupPlate::getStoragevehicle_code, storagevehicle_code)); + if (ObjectUtil.isNotEmpty(groupPlate)) { + //删除组盘信息 + groupPlate.setIs_delete(GeneralDefinition.YES); + mdPbGroupplateMapper.updateById(groupPlate); + } + } PointUtils.setUpdateByType(startPointObj, taskFinishedType); pointService.updateById(startPointObj); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java index 087127e..07619b8 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -51,6 +52,8 @@ public class THSLTask extends AbstractTask { private ISysNoticeService noticeService; @Autowired private THSLMapper thslMapper; + @Autowired + private SchBasePointMapper pointMapper; @Override public void create() throws BadRequestException { @@ -64,25 +67,7 @@ public class THSLTask extends AbstractTask { List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) .collect(Collectors.toList()); // 找起点 - SchBasePoint point = findStartPoint(startRegionStr,task.getMaterial_code()); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终起点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setVehicle_code(point.getStoragevehicle_code()); - task.setRemark(""); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); + findStartPoint(startRegionStr, task); } } @@ -96,57 +81,60 @@ public class THSLTask extends AbstractTask { List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) .collect(Collectors.toList()); // 找起点 - SchBasePoint point = findStartPoint(startRegionStr, task.getMaterial_code()); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("货架暂无托盘!", TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("货架暂无托盘!"); - } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setVehicle_code(point.getStoragevehicle_code()); - task.setRemark(""); - task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.save(task); - // 点位更新 - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); + findStartPoint(startRegionStr, task); + } - private SchBasePoint findStartPoint(List startRegionStr, String material_code) { + private void findStartPoint(List startRegionStr, SchBaseTask task) { - // 根据物料和区域找到无任务的点位 - List points = thslMapper.findPointForTHSL(startRegionStr, material_code); + // 根据物料和区域找到无任务按出库顺序的所有点位 + List points = thslMapper.findPointForTHSL(startRegionStr, task.getMaterial_code()); + if (points.isEmpty()) { + throw new BadRequestException("未找到物料编码为【" + task.getMaterial_code() + "】所需点位!"); + } //找到最小PCSN的点位 SchBasePointDto schBasePointDto = points.stream() .min(Comparator.comparing(SchBasePointDto::getPcsn)).orElse(null); - if (schBasePointDto == null) { - throw new BadRequestException("未找到物料编码为【" + material_code + "】所需点位!"); - } String region_code = schBasePointDto.getRegion_code(); - String point_code = schBasePointDto.getPoint_code(); - SchBasePoint point = pointService.findByCode(point_code); if ("E2".equals(region_code)) { - return getWaitPoint(point); + //根据物料查找E2区域无任务按批次升序的所有点位 + List pointDtos = thslMapper.findPointsByMaterialCode(startRegionStr, task.getMaterial_code()); + if (pointDtos.size() == 0) { + throw new BadRequestException("区域" + region_code + "未找到物料编码为【" + task.getMaterial_code() + "】所需点位!"); + } + schBasePointDto = pointDtos.get(0); + task.setPoint_code1(schBasePointDto.getExt_point_code());//E2取货等待点位 + task.setPoint_code3(schBasePointDto.getPoint_code()); + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("E2取放货二次分配")); } else if ("H1".equals(schBasePointDto.getRegion_code())) { - return getWaitPoint(point); + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("HXT取放货二次分配")); + task.setPoint_code1(schBasePointDto.getExt_point_code());//等待点 + task.setPoint_code3(schBasePointDto.getPoint_code()); } else if ("H2".equals(schBasePointDto.getRegion_code())) { - return getWaitPoint(point); + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("HXT取放货二次分配")); + task.setPoint_code1(schBasePointDto.getExt_point_code()); + task.setPoint_code3(schBasePointDto.getPoint_code()); + } else if ("GC".equals(schBasePointDto.getRegion_code())) { + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); + task.setPoint_code1(schBasePointDto.getPoint_code()); + } else if ("HXTFZW".equals(schBasePointDto.getRegion_code())) { + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); + task.setPoint_code1(schBasePointDto.getPoint_code()); }else { - return ObjectUtil.isNotEmpty(schBasePointDto) ? Convert.convert(SchBasePoint.class, schBasePointDto) : null; + task.setPoint_code1(schBasePointDto.getPoint_code()); + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); } + // 设置终点并修改创建成功状态 + task.setVehicle_code(schBasePointDto.getStoragevehicle_code()); + task.setRemark(""); + task.setTask_status(TaskStatus.CREATED.getCode()); + taskService.save(task); + SchBasePoint basePoint = Convert.convert(SchBasePoint.class, schBasePointDto); + // 点位更新 + PointUtils.setUpdateByAcs(basePoint); + pointService.updateById(basePoint); } - private SchBasePoint getWaitPoint(SchBasePoint point) { - //查找该区域空闲的等待点 - SchBasePoint waitPoint = pointService.findByCode(point.getParent_point_code()); - if (ObjectUtil.isEmpty(waitPoint)){ - throw new BadRequestException("未找到点位编码为【" + point.getParent_point_code() + "】所需的等待点位!"); - } - return waitPoint; - } @Override public void updateStatus(String task_code, TaskStatus status) { @@ -195,12 +183,9 @@ public class THSLTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 - SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); + // 取货完成起点清空 + if (ObjectUtil.isNotEmpty(endPointObj)) { endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); endPointObj.setUpdate_time(DateUtil.now()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.java index 6bd0098..3965818 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.java @@ -7,4 +7,6 @@ import java.util.List; public interface THSLMapper { List findPointForTHSL(List startRegionStr, String material_code); + + List findPointsByMaterialCode(List startRegionStr, String material_code); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.xml index 9d96920..d4dd09e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.xml @@ -2,19 +2,44 @@ + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java index 0233c04..7495f16 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -64,7 +65,7 @@ public class THXLTask extends AbstractTask { String requestParam = task.getRequest_param(); JSONObject jsonObject = JSONObject.parseObject(requestParam); String regionCode = jsonObject.getString("region_code"); - SchBasePoint point = findNextPoint(nextRegionStr,regionCode,task.getMaterial_code()); + SchBasePoint point = findNextPoint(nextRegionStr, regionCode, task); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.updateById(task); @@ -98,7 +99,7 @@ public class THXLTask extends AbstractTask { String requestParam = task.getRequest_param(); JSONObject jsonObject = JSONObject.parseObject(requestParam); String regionCode = jsonObject.getString("region_code"); - SchBasePoint point = findNextPoint(nextRegionStr,regionCode,task.getMaterial_code()); + SchBasePoint point = findNextPoint(nextRegionStr, regionCode, task); if (ObjectUtil.isEmpty(point)) { // 消息通知 noticeService.createNotice("待捆包区域无空闲点位!", TASK_CONFIG_CODE + task.getPoint_code1(), @@ -106,9 +107,9 @@ public class THXLTask extends AbstractTask { throw new BadRequestException("待捆包区域无空闲点位!"); } // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); + task.setPoint_code4(point.getPoint_code()); //设置等待点 - task.setPoint_code3(point.getParent_point_code()); + task.setPoint_code2(point.getParent_point_code()); task.setRemark(""); task.setTask_status(TaskStatus.CREATED.getCode()); taskService.save(task); @@ -118,8 +119,9 @@ public class THXLTask extends AbstractTask { pointService.updateById(point); } - private SchBasePoint findNextPoint(List nextRegionStr, String regionCode, String material_code) { - List list = pointService.getSamePoints(regionCode, material_code); + private SchBasePoint findNextPoint(List nextRegionStr, String regionCode, SchBaseTask task) { + // 找到同一个区域下物料相同的所有点位 + List list = pointService.getSamePoints(regionCode, task.getMaterial_code()); if (!CollectionUtils.isEmpty(list)) { for (int i = 0; i < list.size(); i++) { SchBasePoint point = list.get(0); @@ -129,7 +131,7 @@ public class THXLTask extends AbstractTask { } SchBasePoint newPoint; String newPoint_code = ""; - int new_col = col_num-1; + int new_col = col_num - 1; // 校验当前点位相邻的点是否空闲 for (int j = 0; j < (col_num - 1); j++) { newPoint_code = forametDevice_code(point.getPoint_code(), new_col); @@ -140,28 +142,55 @@ public class THXLTask extends AbstractTask { point = newPoint; continue; } + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); return point; } } - } else if (CollectionUtils.isEmpty(list)){ + } + if (CollectionUtils.isEmpty(list)) { //找一排都是空的点位 //找最大列为空且没有任务的点位 - List points = pointService.getPointByMaxCol(regionCode, 3); - for (int i = 0; i < points.size(); i++) { - SchBasePoint twoColPoint = points.get(0); - String firstColPointCode = twoColPoint.getPoint_code().substring(0, twoColPoint.getPoint_code().length() - 1) + "1"; - // 查询第一列 - SchBasePoint firstColPoint = pointService.findByCode(firstColPointCode); - // 判断第一列否为空且没有任务 - boolean isFirstColFree = checkIsEmpty(firstColPoint); - // 如果第一列为空,则返回这个第二列点位 - if (isFirstColFree) { - return twoColPoint; + if (regionCode.equals("KTP")) { + List points = pointService.getPointByMaxCol(regionCode, 2); + for (int i = 0; i < points.size(); i++) { + SchBasePoint twoColPoint = points.get(0); + String firstColPointCode = twoColPoint.getPoint_code().substring(0, twoColPoint.getPoint_code().length() - 1) + "1"; + // 查询第一列 + SchBasePoint firstColPoint = pointService.findByCode(firstColPointCode); + // 判断第一列否为空且没有任务 + boolean isFirstColFree = checkIsEmpty(firstColPoint); + // 如果第一列为空,则返回这个第二列点位 + if (isFirstColFree) { + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); + return twoColPoint; + } + continue; + } + } + if (regionCode.equals("DKB")){ + //找一排都是空的点位 //todo: 两台机台有没有生成相同物料 机台速度 + //找最大列为空且没有任务的点位 + List points = pointService.getPointByMaxCol(regionCode, 3); + for (int i = 0; i < points.size(); i++) { + SchBasePoint thirdColPoint = points.get(0); + String firstColPointCode = thirdColPoint.getPoint_code().substring(0, thirdColPoint.getPoint_code().length() - 1) + "1"; + String secondColPointCode = thirdColPoint.getPoint_code().substring(0, thirdColPoint.getPoint_code().length() - 1) + "2"; + + // 查询第一列和第二列点位 + SchBasePoint firstColPoint = pointService.findByCode(firstColPointCode); + SchBasePoint secondColPoint = pointService.findByCode(secondColPointCode); + // 判断第一列和第二列点位是否为空且没有任务 + boolean isFirstColFree = checkIsEmpty(firstColPoint); + boolean isSecondColFree = checkIsEmpty(secondColPoint); + // 如果第一列和第二列都为空,则返回这个第三列点位 + if (isFirstColFree && isSecondColFree) { + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); + return thirdColPoint; + } else { + continue; + } } - continue; } - } else { - return null; } return null; } @@ -239,12 +268,9 @@ public class THXLTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 - SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); + // 取货完成时候起点清空 + if (ObjectUtil.isNotEmpty(endPointObj)) { endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); diff --git a/nladmin-ui/public/config.js b/nladmin-ui/public/config.js index 441302a..2b49343 100644 --- a/nladmin-ui/public/config.js +++ b/nladmin-ui/public/config.js @@ -1,9 +1,9 @@ window.g = { dev: { - VUE_APP_BASE_API: 'http://127.0.0.1:8010' + VUE_APP_BASE_API: 'http://192.168.217.2:8011' }, prod: { - VUE_APP_BASE_API: 'http://127.0.0.1:8010' + VUE_APP_BASE_API: 'http://192.168.217.2:8011' } } diff --git a/nladmin-ui/src/assets/images/ftdl.png b/nladmin-ui/src/assets/images/ftdl.png new file mode 100644 index 0000000..d065d63 Binary files /dev/null and b/nladmin-ui/src/assets/images/ftdl.png differ diff --git a/nladmin-ui/src/assets/images/miri.png b/nladmin-ui/src/assets/images/miri.png new file mode 100644 index 0000000..fca2d58 Binary files /dev/null and b/nladmin-ui/src/assets/images/miri.png differ diff --git a/nladmin-ui/src/i18n/langs/zh-CN.js b/nladmin-ui/src/i18n/langs/zh-CN.js index 3556d31..5be8d66 100644 --- a/nladmin-ui/src/i18n/langs/zh-CN.js +++ b/nladmin-ui/src/i18n/langs/zh-CN.js @@ -2,7 +2,7 @@ export default { 'lang': 'zh', // 平台 'platform': { - 'title': '诺力开发平台', + 'title': 'WMS系统', 'tip1': '用户名不能为空', 'tip2': '密码不能为空', 'tip3': '验证码不能为空' diff --git a/nladmin-ui/src/layout/components/Sidebar/Logo.vue b/nladmin-ui/src/layout/components/Sidebar/Logo.vue index 75734b1..a85d6c0 100644 --- a/nladmin-ui/src/layout/components/Sidebar/Logo.vue +++ b/nladmin-ui/src/layout/components/Sidebar/Logo.vue @@ -14,7 +14,7 @@ + + diff --git a/nladmin-ui/src/views/wms/sch/materialRecord/materialRecord.js b/nladmin-ui/src/views/wms/sch/materialRecord/materialRecord.js new file mode 100644 index 0000000..6737d7a --- /dev/null +++ b/nladmin-ui/src/views/wms/sch/materialRecord/materialRecord.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/materialRecord', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/materialRecord/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/materialRecord', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/nladmin-ui/src/views/wms/sch/point/index.vue b/nladmin-ui/src/views/wms/sch/point/index.vue index 94a7846..562a886 100644 --- a/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/nladmin-ui/src/views/wms/sch/point/index.vue @@ -34,6 +34,15 @@ @keyup.enter.native="crud.toQuery" /> + + + - - 查看详情 - + + + + + + + + + @@ -472,7 +481,6 @@ export default { // }, getRegionList() { crudSchBaseRegion.getRegionList().then(res => { - debugger this.regionList = res }) }, diff --git a/nladmin-ui/src/views/wms/sch/region/schBaseRegion.js b/nladmin-ui/src/views/wms/sch/region/schBaseRegion.js index 2550d2a..3332ccc 100644 --- a/nladmin-ui/src/views/wms/sch/region/schBaseRegion.js +++ b/nladmin-ui/src/views/wms/sch/region/schBaseRegion.js @@ -31,6 +31,14 @@ export function getRegionList(data) { }) } +export function getRegions(data) { + return request({ + url: 'api/schBaseRegion/getRegions', + method: 'post', + data + }) +} + export function getPointStatusSelectById(id) { return request({ url: 'api/schBaseRegion/getPointStatusSelectById', @@ -47,4 +55,4 @@ export function getPointTypeSelectById(id) { }) } -export default { add, edit, del, getRegionList, getPointStatusSelectById, getPointTypeSelectById } +export default { add, edit, del, getRegionList, getPointStatusSelectById, getPointTypeSelectById, getRegions }