diff --git a/lms/nladmin-system/doc/套轴点位日志记录实时看板.html b/lms/nladmin-system/doc/套轴点位日志记录实时看板.html new file mode 100644 index 000000000..4b9f52d8b --- /dev/null +++ b/lms/nladmin-system/doc/套轴点位日志记录实时看板.html @@ -0,0 +1,435 @@ + + + + + + 套轴点位日志记录实时看板 + + + +

套轴点位日志记录实时看板

+
+
+

B_CBJ01

+ +
+
+ +
+
+
+

B_CBJ02

+ +
+
+ +
+
+
+ + +
+

套轴监控系统实时数据

+ + + + + + + + + + + + + + + + + +
设备子卷号轴位置气胀轴尺寸气胀轴代数气胀轴状态呼叫时间管芯规格套轴标记
+
+ + + + diff --git a/lms/nladmin-system/doc/套轴点位日志记录实时看板v2.html b/lms/nladmin-system/doc/套轴点位日志记录实时看板v2.html new file mode 100644 index 000000000..63d52457b --- /dev/null +++ b/lms/nladmin-system/doc/套轴点位日志记录实时看板v2.html @@ -0,0 +1,507 @@ + + + + + + 套轴点位日志记录实时看板 + + + +

套轴点位日志记录实时看板

+
+
+

B_CBJ01

+ +
+
+ +
+
+
+

B_CBJ02

+ +
+
+ +
+
+
+ + +
+

套轴监控系统实时数据

+ + + + + + + + + + + + + + + + + + +
设备子卷号轴位置气胀轴尺寸气胀轴代数气胀轴状态呼叫时间管芯规格套轴标记一键恢复
+
+ + + + + diff --git a/lms/nladmin-system/doc/套轴点位日志记录实时看板v3.html b/lms/nladmin-system/doc/套轴点位日志记录实时看板v3.html new file mode 100644 index 000000000..60bfa33da --- /dev/null +++ b/lms/nladmin-system/doc/套轴点位日志记录实时看板v3.html @@ -0,0 +1,558 @@ + + + + + + 套轴点位日志记录实时看板 + + + +

套轴点位日志记录实时看板

+
+
+

B_CBJ01

+ +
+
+ +
+
+
+

B_CBJ02

+ +
+
+ +
+
+
+ + +
+

套轴监控系统实时数据

+ +
+ 呼叫超过2小时 + 存在异常 +
+ + + + + + + + + + + + + + + + + + + +
设备子卷号轴位置气胀轴尺寸气胀轴代数气胀轴状态呼叫时间管芯规格套轴标记是否加急一键恢复
+
+ + + + + diff --git a/lms/nladmin-system/doc/套轴点位日志记录实时看板v4.html b/lms/nladmin-system/doc/套轴点位日志记录实时看板v4.html new file mode 100644 index 000000000..73d2b0054 --- /dev/null +++ b/lms/nladmin-system/doc/套轴点位日志记录实时看板v4.html @@ -0,0 +1,618 @@ + + + + + + 套轴点位日志记录实时看板 + + + +

套轴点位日志记录实时看板

+
+
+

B_CBJ01

+ +
+
+ +
+
+
+

B_CBJ02

+ +
+
+ +
+
+
+ + +
+

套轴监控系统实时数据

+ +
+ 呼叫超过2小时 + 存在异常 + 暂时不套轴 +
+ + + + + + + + + + + + + + + + + + + +
设备子卷号轴位置气胀轴尺寸气胀轴代数气胀轴状态呼叫时间管芯规格套轴标记是否加急一键恢复
+
+ + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java index ac3e1fd77..221a0b8b8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java @@ -54,6 +54,15 @@ public interface IBstIvtCutpointivtService extends IService { * @return / */ List getAreaNotTaskPointByStatus(String type, String pointStatus, String area, String sort); + + /** + * + * @param type 点位类型:1套轴对接位,2分切缓存位,3分切对接位,4套轴异常位 + * @param area 区域(0上1下) + * @return + */ + List getCanUseMinPointByShelf(String type, String area); + List getCanUseMinPointByShelfSpecial(String type, String area); /** * 获取类型状态,没任务的点位,不校验取货完成的任务 * @param type 点位类型:1套轴对接位,2分切缓存位,3分切对接位,4套轴异常位 @@ -138,4 +147,21 @@ public interface IBstIvtCutpointivtService extends IService { List getNBJCanUsePoint(String type, String pointStatus, String area, String sort); List getNBJAreaNotTaskPointByStatus(String type, String pointStatus, String area, String sort); + + /*** + * 获取桁架或者AGV点位编码 + * @param endPoint + * @param b + * @return + */ + BstIvtCutpointivt getPointByTrussOrAgvCode(String endPoint, boolean flag); + + /** + * 获取可以拔轴的卷 + * @param qzzSize 尺寸 + * @param generation 代数 + * @param pointLocation 点位半区(0下,1上) + * @return + */ + List getCanPullPoints(String qzzSize, String generation, String pointLocation); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.java index 0a1e42765..f3d8d0338 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.java @@ -32,4 +32,9 @@ public interface BstIvtCutpointivtMapper extends BaseMapper { List getNBJCanUsePoint(String type, String pointStatus, String area, String sort); List getNBJAreaNotTaskPointByStatus(String type, String pointStatus, String area, String sort); + + List getCanUseMinPointByShelf(String type, String area); + List getCanUseMinPointByShelfSpecial(String type, String area); + + List getCanPullPoints(String size, String generation, String area); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.xml index 51dfdddc0..315865d87 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.xml @@ -98,19 +98,40 @@ + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java index 5908cdfa2..aef40dfbf 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.b_lms.bst.ivt.cutpointivt.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -58,7 +58,7 @@ public class BstIvtCutpointivtServiceImpl extends ServiceImpl getCanUseMinPointByShelf(String type, String area) { + return bstIvtCutpointivtMapper.getCanUseMinPointByShelf(type, area); + } + @Override + public List getCanUseMinPointByShelfSpecial(String type, String area) { + return bstIvtCutpointivtMapper.getCanUseMinPointByShelfSpecial(type, area); + } + @Override public List getAreaNotTaskPointByStatusNotCheckPickUpCompleted(String type, String pointStatus, String area, String sort) { return bstIvtCutpointivtMapper.getAreaNotTaskPointByStatusNotCheckPickUpCompleted(type, pointStatus, area, sort); @@ -169,4 +178,21 @@ public class BstIvtCutpointivtServiceImpl extends ServiceImpl getNBJAreaNotTaskPointByStatus(String type, String pointStatus, String area, String sort) { return bstIvtCutpointivtMapper.getNBJAreaNotTaskPointByStatus(type, pointStatus, area, sort); } + + @Override + public BstIvtCutpointivt getPointByTrussOrAgvCode(String point, boolean flag) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(flag, BstIvtCutpointivt::getIs_used, "1") + .and(ll -> ll.eq(BstIvtCutpointivt::getPoint_code, point) + .or() + .eq(BstIvtCutpointivt::getTruss_point_code1, point) + .or() + .eq(BstIvtCutpointivt::getTruss_point_code2, point)); + return bstIvtCutpointivtMapper.selectOne(lam); + } + + @Override + public List getCanPullPoints(String qzzSize, String generation, String pointLocation) { + return bstIvtCutpointivtMapper.getCanPullPoints(qzzSize, generation, pointLocation); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/IMdPbPapervehicleService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/IMdPbPapervehicleService.java index 017d1ea72..8ad3f4768 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/IMdPbPapervehicleService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/IMdPbPapervehicleService.java @@ -63,4 +63,17 @@ public interface IMdPbPapervehicleService extends IService { * @return */ List getAllTubesByPoint(String location); + + /** + * 获取任务中的管芯信息 + * @return + */ + List getInfoByTask(); + + /** + * 通过载具获取管芯编码 + * @param vehicleCode + * @return + */ + List getTubeCodesByVehicle(String vehicleCode); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/dao/mapper/MdPbPapervehicleMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/dao/mapper/MdPbPapervehicleMapper.java index 695d7ec11..a563cfe3e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/dao/mapper/MdPbPapervehicleMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/dao/mapper/MdPbPapervehicleMapper.java @@ -21,4 +21,6 @@ public interface MdPbPapervehicleMapper extends BaseMapper { Integer checkHaveTaskByPoints(List pointCodes); List getAllTubesByPoint(String location); + + List getInfoByTask(); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/dao/mapper/MdPbPapervehicleMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/dao/mapper/MdPbPapervehicleMapper.xml index 99a8c5987..4d1cb13a7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/dao/mapper/MdPbPapervehicleMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/dao/mapper/MdPbPapervehicleMapper.xml @@ -32,6 +32,7 @@ #{code} AND mp.qty > 0 + AND bs.point_type '2' AND bs.point_location = #{pointLocation} GROUP BY bs.point_code, bs.point_type @@ -70,4 +71,13 @@ AND bs.is_used = '1' AND p.qty > 0 + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/impl/MdPbPapervehicleServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/impl/MdPbPapervehicleServiceImpl.java index c7ef3784e..838fac8e2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/impl/MdPbPapervehicleServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/papervehicle/service/impl/MdPbPapervehicleServiceImpl.java @@ -1,7 +1,8 @@ package org.nl.b_lms.bst.ivt.papervehicle.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -20,9 +21,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; /** * @description 服务实现 @@ -50,7 +53,7 @@ public class MdPbPapervehicleServiceImpl extends ServiceImpl getInfoByTask() { + return mdPbPapervehicleMapper.getInfoByTask(); + } + + @Override + public List getTubeCodesByVehicle(String vehicleCode) { + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(MdPbPapervehicle::getVehicle_code, vehicleCode) + .isNotNull(MdPbPapervehicle::getMaterial_code) + .ne(MdPbPapervehicle::getMaterial_code, ""); + List list = list(lam); + if (list.size() == 0) { + return new ArrayList<>(); + } + return list.stream().map(MdPbPapervehicle::getMaterial_code).distinct().collect(Collectors.toList()); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/scale/bound/service/impl/BstIvtScaleboundServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/scale/bound/service/impl/BstIvtScaleboundServiceImpl.java index 3b0878730..697384059 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/scale/bound/service/impl/BstIvtScaleboundServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/scale/bound/service/impl/BstIvtScaleboundServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.b_lms.bst.ivt.scale.bound.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -43,7 +43,7 @@ public class BstIvtScaleboundServiceImpl extends ServiceImpl List getOtherCBJData(String pointCode, String location); List getNotTaskEmptyShaftCache(String size, String qzz_generation, String location); + + /** + * 获取预分配的点位 + * @param qzzSize + * @param qzzGen + * @param location + * @return + */ + BstIvtShafttubeivt getNeedInitPoint(String qzzSize, String qzzGen, String location); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.java index 80995005c..38c47b65e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.java @@ -50,4 +50,8 @@ public interface BstIvtShafttubeivtMapper extends BaseMapper List getNotTaskShaftCache2(@Param("qzzSize") String qzzSize, @Param("specification") String specification, @Param("location") String location); + + BstIvtShafttubeivt getNeedInitPoint(@Param("qzzSize") String qzzSize, + @Param("specification") String specification, + @Param("location") String location); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.xml index 8d2842d02..4619ec858 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.xml @@ -98,4 +98,21 @@ AND (b.plan ]]> '1' OR b.plan IS NULL) ORDER BY b.sort_seq DESC + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/impl/BstIvtShafttubeivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/impl/BstIvtShafttubeivtServiceImpl.java index 03a3a67eb..ccdd720c2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/impl/BstIvtShafttubeivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/impl/BstIvtShafttubeivtServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.b_lms.bst.ivt.shafttubeivt.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -24,6 +24,7 @@ import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; @@ -59,7 +60,7 @@ public class BstIvtShafttubeivtServiceImpl extends ServiceImpl getAllByPointType(String type, boolean flag) { if (ObjectUtil.isEmpty(type)) { - return null; + return new ArrayList<>(); } LambdaQueryWrapper lam = new QueryWrapper().lambda(); lam.eq(BstIvtShafttubeivt::getPoint_type, type) @@ -159,4 +160,9 @@ public class BstIvtShafttubeivtServiceImpl extends ServiceImpl operateIvt(@RequestBody JSONObject param) { return new ResponseEntity<>(bstIvtStockingivtService.operateIvt(param), HttpStatus.OK); } + @Log("操作管芯托盘库存") + //@SaCheckPermission("@el.check('bstIvtStockingivt:del')") + @PostMapping("/callCheckTube") + public ResponseEntity callCheckTube(@RequestBody JSONObject param) { + return new ResponseEntity<>(bstIvtStockingivtService.callCheckTube(param), HttpStatus.OK); + } + @Log("操作管芯托盘库存") + @SaIgnore + //@SaCheckPermission("@el.check('bstIvtStockingivt:del')") + @PostMapping("/seePalletTube") + public ResponseEntity seePalletTube(@RequestBody JSONObject param) { + return new ResponseEntity<>(bstIvtStockingivtService.seePalletTube(param), HttpStatus.OK); + } @Log("管芯托盘库存") //@SaCheckPermission("@el.check('bstIvtStockingivt:del')") @@ -83,7 +106,14 @@ public class BstIvtStockingivtController { @Log("查询bom记录") @GetMapping("/showBom2") public ResponseEntity showBom2(@RequestParam Map param) { - return new ResponseEntity<>(bstIvtStockingivtService.showBom2(param), HttpStatus.OK); + PdmBiOrderbominfo pdmBiOrderbominfo = bstIvtStockingivtService.showBom2(param); + List list = imdpbSameBoxService.list(new LambdaQueryWrapper().eq(MdpbSameBox::getBox_code, pdmBiOrderbominfo.getProductName())); + JSONObject json = (JSONObject) JSONObject.toJSON(pdmBiOrderbominfo); + ArrayList arrayList = new ArrayList<>(); + list.stream().map(MdpbSameBox::getSame_box_code).forEach(arrayList::add); + json.put("sameBoxCode", arrayList); + json.put("sameBoxName", arrayList); + return new ResponseEntity<>(json, HttpStatus.OK); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java index b987f4fff..07958e7da 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java @@ -58,6 +58,16 @@ public interface IBstIvtStockingivtService extends IService { */ List getPaperTubePoint(String pointType, String tube, String location, int qty); + + /** + * 获取备货区中指定条件的货位 + * @param pointType 类型:0暂存位置,1靠近分切机 + * @param location 位置:0上区域,1下区域 + * @param qty 数量 + * @return / + */ + List getPaperTubesPoint(String pointType, String location, int qty); + /** * 获取备货区空位,没有任务的位置 * @param location 位置:0上区域,1下区域 @@ -65,6 +75,13 @@ public interface IBstIvtStockingivtService extends IService { * @return / */ List getEmptyPointNotTask(String location, String pointType); + /** + * 获取备货区空位,没有任务的位置 + * @param location 位置:0上区域,1下区域 + * @param pointType [] 类型:0暂存位置,1靠近分切机 + * @return / + */ + List getEmptyPointNotTask2(String location, List pointType); /** * 根据点位编码获取备货区点位 @@ -92,6 +109,23 @@ public interface IBstIvtStockingivtService extends IService { * @return */ List getNeedPaperTubePoint(String pointType, String tube, String location); + /** + * 分组聚合获取需要管芯数组的托盘位置 + * @param pointType + * @param tubes + * @param location + * @return + */ + List getNeedPaperTubesPoint(String pointType, List tubes, String location); + + /** + * 分组聚合获取需要管芯数组的托盘位置(搬运中的数据) + * @param pointType + * @param tube + * @param location + * @return + */ + List getNeedPaperTubePointInTasking(String pointType, String tube, String location); /** * 获取3个托盘的数据 @@ -106,4 +140,12 @@ public interface IBstIvtStockingivtService extends IService { List showDetail2(Map param); PdmBiOrderbominfo showBom2(Map param); + + List getMoveTaskPoints(); + + List getPointByVehicle(String vehicleCode, String pointCode); + + JSONObject callCheckTube(JSONObject param); + + JSONObject seePalletTube(JSONObject param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/BstIvtStockingivt.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/BstIvtStockingivt.java index 9aabb4514..8ed6d4eff 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/BstIvtStockingivt.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/BstIvtStockingivt.java @@ -4,12 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; -import java.math.BigDecimal; import java.io.Serializable; +import java.math.BigDecimal; /** * @description 添加'@Builder'注解最好不好添加'@NoArgsConstructor' diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java index 42edf4d39..d434cbb0c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java @@ -1,6 +1,7 @@ package org.nl.b_lms.bst.ivt.stockingivt.service.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle; import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt; import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubeMovePointDto; import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubePointDto; @@ -22,6 +23,9 @@ public interface BstIvtStockingivtMapper extends BaseMapper { * @return / */ List getPaperTubePoint(String pointType, String tube, String location, int qty); + + + List getPaperTubesPoint(String pointType, String location, int qty); /** * 获取备货区空位,没有任务的位置 * @param location 位置:0上区域,1下区域 @@ -30,16 +34,36 @@ public interface BstIvtStockingivtMapper extends BaseMapper { */ List getEmptyPointNotTask(String location, String pointType); + List getEmptyPointNotTask2(String location, List pointTypes); + BstIvtStockingivt getCanMovePointOne(String location, String pointType); /** * 分组聚合获取备货区中数量够用的的货位 - * @param pointType 类型:0暂存位置,1靠近分切机 + * @param pointType 类型:2暂存位置,1靠近桁架 * @param tube 纸管号 两个都是一样的,因此拿一个就行 * @param location 位置:0上区域,1下区域 * @return / */ List getNeedPaperTubePoint(String pointType, String tube, String location); + /** + * 分组聚合获取备货区中数量够用的的货位 + * @param pointType 类型:2暂存位置,1靠近桁架 + * @param tubes 纸管号 两个不一定一样的 + * @param location 位置:0上区域,1下区域 + * @return / + */ + List getNeedPaperTubesPoint(String pointType, List tubes, String location); List getCanMovePointList(String location, String pointType); + + List getMoveTaskPoints(); + /** + * 分组聚合获取备货区中数量够用的的货位(任务中) + * @param pointType 类型:2暂存位置,1靠近桁架 + * @param tube 纸管号 两个都是一样的,因此拿一个就行 + * @param location 位置:0上区域,1下区域 + * @return / + */ + List getNeedPaperTubePointInTasking(String pointType, String tube, String location); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml index baaa70bff..7aaf74c7f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml @@ -19,6 +19,23 @@ t.point_code3 = bs.point_code) AND t.task_status '07') + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java index 19b40105c..c0323b306 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java @@ -1,7 +1,8 @@ package org.nl.b_lms.bst.ivt.stockingivt.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONArray; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -36,6 +37,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; /** * @author lyd @@ -73,7 +75,7 @@ public class BstIvtStockingivtServiceImpl extends ServiceImpl getPaperTubesPoint(String pointType, String location, int qty) { + return bstIvtStockingivtMapper.getPaperTubesPoint(pointType, location, qty); + } + @Override public List getEmptyPointNotTask(String location, String pointType) { return bstIvtStockingivtMapper.getEmptyPointNotTask(location, pointType); } + @Override + public List getEmptyPointNotTask2(String location, List pointType) { + return bstIvtStockingivtMapper.getEmptyPointNotTask2(location, pointType); + } + @Override public BstIvtStockingivt getPointByCode(String pointCode, boolean flag) { LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); @@ -254,7 +266,7 @@ public class BstIvtStockingivtServiceImpl extends ServiceImpl().eq(BstIvtStockingivt::getVehicle_code, vehicle_code)); - if (bstIvtStockingivt != null && bstIvtStockingivt.getPoint_type().equals("1")) { - List list = papervehicleService.list(new LambdaQueryWrapper().eq(MdPbPapervehicle::getVehicle_code, vehicle_code)); - JSONObject jo = new JSONObject(); - SlitterTaskUtil.doSavePaperInfos(list, jo); - jo.put("product_area", bstIvtStockingivt.getProduct_area()); - jo.put("device_code", bstIvtStockingivt.getPoint_code()); - wmsToAcsService.getTubeMsg(jo); - } - JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "操作成功!"); return result; } + @Override + public JSONObject callCheckTube(JSONObject param) { + log.info("手持呼叫相机拍照检测: {}", param); + String vehicle_code = param.getString("vehicle_code"); + //判断绑定的纸管是否在机械手范围内,如果存在的话把最新库存推送给电气 + BstIvtStockingivt bstIvtStockingivt = bstIvtStockingivtMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtStockingivt::getVehicle_code, vehicle_code)); + if (ObjectUtil.isEmpty(bstIvtStockingivt)) { + throw new BadRequestException("托盘:" + vehicle_code + " 不在点位上,请先绑定!"); + } + if (!bstIvtStockingivt.getPoint_type().equals("1")) { + throw new BadRequestException("该站点" + bstIvtStockingivt.getPoint_code() + "不允许呼叫检测!"); + } + if (bstIvtStockingivt != null) { + List list = papervehicleService.list(new LambdaQueryWrapper().eq(MdPbPapervehicle::getVehicle_code, vehicle_code)); + JSONObject jo = new JSONObject(); + SlitterTaskUtil.doSavePaperInfos(list, jo); + jo.put("product_area", bstIvtStockingivt.getProduct_area()); + jo.put("device_code", bstIvtStockingivt.getPoint_code()); + wmsToAcsService.getTubeMsg(jo); + } + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "操作成功!"); + return result; + } + + @Override + public JSONObject seePalletTube(JSONObject param) { + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "操作成功!"); + String vehicle_code = param.getString("vehicle_code"); + List list = papervehicleService.list(new LambdaQueryWrapper() + .eq(MdPbPapervehicle::getVehicle_code, vehicle_code) + .orderByAsc(MdPbPapervehicle::getRow_num)); + if (list.size() == 0) { + result.put("flag", "1"); + result.put("data", "LMS系统中该托盘没有管芯信息!"); + return result; + } + List bstIvtStockingivt = bstIvtStockingivtMapper.selectList(new LambdaQueryWrapper() + .eq(BstIvtStockingivt::getVehicle_code, vehicle_code)); + if (bstIvtStockingivt.size() != 1) { + result.put("flag", "1"); + result.put("data", bstIvtStockingivt.size() == 0 ? "LMS系统中该托盘没有绑定到点位上!" + : "该托盘绑定到多个位置:" + bstIvtStockingivt.stream().map(BstIvtStockingivt::getPoint_code).collect(Collectors.joining(",")) + " 请确认!"); + return result; + } + JSONArray arr = new JSONArray(); + list.stream().forEach(l -> { + JSONObject paper = new JSONObject(); + paper.put("row_num", l.getRow_num()); + paper.put("number", l.getQty()); + paper.put("tube", l.getMaterial_name()); + arr.add(paper); + }); + result.put("flag", "2"); + result.put("data", arr); + return result; + } + @Override public List getNeedPaperTubePoint(String pointType, String tube, String location) { return bstIvtStockingivtMapper.getNeedPaperTubePoint(pointType, tube, location); } + @Override + public List getNeedPaperTubesPoint(String pointType, List tubes, String location) { + return bstIvtStockingivtMapper.getNeedPaperTubesPoint(pointType, tubes, location); + } + + @Override + public List getNeedPaperTubePointInTasking(String pointType, String tube, String location) { + return bstIvtStockingivtMapper.getNeedPaperTubePointInTasking(pointType, tube, location); + } @Override public List getCanMovePointList(String location, String pointType) { @@ -379,4 +450,17 @@ public class BstIvtStockingivtServiceImpl extends ServiceImpl getMoveTaskPoints() { + return bstIvtStockingivtMapper.getMoveTaskPoints(); + } + + @Override + public List getPointByVehicle(String vehicleCode, String pointCode) { + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(BstIvtStockingivt::getVehicle_code, vehicleCode) + .ne(BstIvtStockingivt::getPoint_code, pointCode); + return list(lam); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/ProductOutTwoController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/ProductOutTwoController.java index bb42a7cb1..e25d67879 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/ProductOutTwoController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/ProductOutTwoController.java @@ -90,4 +90,19 @@ public class ProductOutTwoController { return new ResponseEntity<>(productOutTwoService.boxOut(whereJson),HttpStatus.OK); } + @PostMapping("/outExcepionPointPass") + @Log("出库异常口取货点放行") + @SaIgnore + public ResponseEntity outExcepionPointPass(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(productOutTwoService.outExcepionPointPass(whereJson), HttpStatus.OK); + } + + @PostMapping("/vehicleUnbind") + @Log("空托盘解绑") + @SaIgnore + public ResponseEntity vehicleUnbind(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(productOutTwoService.vehicleUnbind(whereJson), HttpStatus.OK); + } + + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/SlitterPdaController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/SlitterPdaController.java index e6601d2ec..69d9863c6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/SlitterPdaController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/SlitterPdaController.java @@ -4,12 +4,17 @@ import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.logging.annotation.Log; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.concurrent.TimeUnit; + /** * @Author: lyd * @Description: @@ -22,6 +27,8 @@ public class SlitterPdaController { @Autowired private SlitterService slitterService; + @Autowired + private RedissonClient redissonClient; @PostMapping("/slitterDevices") @Log("获取分切设备") @@ -41,7 +48,26 @@ public class SlitterPdaController { @Log("下卷2") @SaIgnore public ResponseEntity downRolls2(@RequestBody JSONObject param) { - return new ResponseEntity<>(slitterService.downRolls2(param), HttpStatus.OK); + RLock open = redissonClient.getLock("doDownRoll"); + JSONObject res; + boolean openLock; + try { + openLock = open.tryLock(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + if (openLock) { + res = slitterService.downRolls2(param); + } else { + throw new BadRequestException("请勿多次下卷!"); + } + } finally { + if (open.isLocked() && open.isHeldByCurrentThread()) { + open.unlock(); + } + } + return new ResponseEntity<>(res, HttpStatus.OK); } @PostMapping("/downRollsCheck") @Log("下卷2提示确认") @@ -248,4 +274,60 @@ public class SlitterPdaController { public ResponseEntity returnShaft(@RequestBody JSONObject param) { return new ResponseEntity<>(slitterService.returnShaft(param), HttpStatus.OK); } + + @PostMapping("/cutCacheInventory") + @Log("分切暂存维护") + @SaIgnore + public ResponseEntity cutCacheInventory(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.cutCacheInventory(param), HttpStatus.OK); + } + @PostMapping("/doCallTubeShaftShow") + @Log("呼叫套轴") + @SaIgnore + public ResponseEntity doCallTubeShaftShow(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.doCallTubeShaftShow(param), HttpStatus.OK); + } + @PostMapping("/doCallTubeShaft") + @Log("呼叫套轴") + @SaIgnore + public ResponseEntity doCallTubeShaft(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.doCallTubeShaft(param), HttpStatus.OK); + } + @PostMapping("/getTubeLength") + @Log("获取轴长") + @SaIgnore + public ResponseEntity getTubeLength(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.getTubeLength(param), HttpStatus.OK); + } + @PostMapping("/fullTubeVehicleIn") + @Log("托盘搬入") + @SaIgnore + public ResponseEntity fullTubeVehicleIn(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.fullTubeVehicleIn(param), HttpStatus.OK); + } + @PostMapping("/emptyTubeVehicleOut") + @Log("托盘搬出") + @SaIgnore + public ResponseEntity emptyTubeVehicleOut(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.emptyTubeVehicleOut(param), HttpStatus.OK); + } + @PostMapping("/taskTubeVehicle") + @Log("任务") + @SaIgnore + public ResponseEntity taskTubeVehicle(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.taskTubeVehicle(param), HttpStatus.OK); + } + @PostMapping("/getTubeVehicleInfo") + @Log("任务") + @SaIgnore + public ResponseEntity getTubeVehicleInfo(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.getTubeVehicleInfo(param), HttpStatus.OK); + } + @PostMapping("/seeTaskByPoint") + @Log("任务查看") + @SaIgnore + public ResponseEntity seeTaskByPoint(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterService.seeTaskByPoint(param), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/VehicleTwoController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/VehicleTwoController.java index 0dabf07cc..8288017ce 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/VehicleTwoController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/VehicleTwoController.java @@ -2,10 +2,14 @@ package org.nl.b_lms.pda.controller; import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.pda.service.VehicleTwoService; import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService; +import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; +import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.modules.logging.annotation.Log; import org.springframework.beans.factory.annotation.Autowired; @@ -17,7 +21,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @author liuxy @@ -35,6 +41,8 @@ public class VehicleTwoController { private IbstIvtPackageinfoivtService bstIvtPackageInfoIvtService; @Autowired private IpdmBiSubpackagerelationService subpackagerelationService; + @Autowired + private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper; @PostMapping("/vehicleIn") @@ -73,6 +81,13 @@ public class VehicleTwoController { return new ResponseEntity<>(bstIvtPackageInfoIvtService.update(whereJson), HttpStatus.OK); } + @PostMapping("/getPointInfo") + @Log("获取装箱区点位子卷信息") + @SaIgnore + public ResponseEntity getPointInfo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(bstIvtPackageInfoIvtService.getOne(new LambdaQueryWrapper().eq(BstIvtPackageinfoivt::getPoint_code, whereJson.getString("point_code"))), HttpStatus.OK); + } + @PostMapping("/toEndSub") @Log("二期子卷包装解绑") @SaIgnore @@ -80,4 +95,27 @@ public class VehicleTwoController { Map result = subpackagerelationService.toEndSubpackagerelation(whereJson.getString("container_name")); return new ResponseEntity<>(result, HttpStatus.OK); } + + @PostMapping("/getControlList") + @Log("获取管制下拉框") + @SaIgnore + public ResponseEntity getControlList(@RequestBody JSONObject whereJson) { + List bstIvtPackageinfoivts = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper().eq(BstIvtPackageinfoivt::getPoint_status, "4")); + JSONArray jsonArray = bstIvtPackageinfoivts.stream() + .map(item -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("text", item.getPoint_code()); + jsonObject.put("value", item.getPoint_code()); + return jsonObject; + }) + .collect(Collectors.toCollection(JSONArray::new)); + return new ResponseEntity<>(jsonArray, HttpStatus.OK); + } + + @PostMapping("/relabel") + @Log("换标出库") + @SaIgnore + public ResponseEntity Relabel(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(vehicleTwoService.relabel(whereJson), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/ProductOutTwoService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/ProductOutTwoService.java index 59ed6c3ef..3963672d4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/ProductOutTwoService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/ProductOutTwoService.java @@ -90,4 +90,8 @@ public interface ProductOutTwoService { * @return 、 */ JSONObject boxOut(JSONObject whereJson); + + JSONObject outExcepionPointPass(JSONObject whereJson); + + JSONObject vehicleUnbind(JSONObject whereJson); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/VehicleTwoService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/VehicleTwoService.java index 92910b437..fdea4676d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/VehicleTwoService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/VehicleTwoService.java @@ -52,4 +52,6 @@ public interface VehicleTwoService { * @return :JSONObject:返回前端参数~ */ JSONObject reback(JSONObject whereJson); + + JSONObject relabel(JSONObject whereJson); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/ProductOutTwoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/ProductOutTwoServiceImpl.java index 7136e178f..f36c4e341 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/ProductOutTwoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/ProductOutTwoServiceImpl.java @@ -1,14 +1,20 @@ package org.nl.b_lms.pda.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.druid.util.StringUtils; 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.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.pda.service.ProductOutTwoService; import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo; import org.nl.b_lms.pdm.info.service.IPdmBiOrderbominfoService; +import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation; +import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService; import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound; @@ -17,6 +23,7 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxMana import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.pda.st.service.impl.ProductionOutServiceImpl; import org.nl.wms.sch.manage.TaskStatusEnum; @@ -51,6 +58,12 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService { @Autowired private OutBoxManageService outBoxManageService; + @Autowired + private IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService; + + @Autowired + private IschBaseTaskService ischBaseTaskService; + @Override public JSONObject ivtQuery(JSONObject whereJson) { @@ -183,6 +196,9 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService { @Override public List woodenBoxPoint(JSONObject whereJson) { + if (ObjectUtil.isEmpty(whereJson.getString("container_name"))) { + throw new BadRequestException("卷号不能为空!"); + } JSONObject jsonPlan = WQLObject.getWQLObject("pdm_bi_slittingproductionplan") .query("container_name = '" + whereJson.getString("container_name") + "' and is_delete = '0'") .uniqueResult(0); @@ -215,4 +231,83 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService { result.put("message", "下发出库成功!"); return result; } + + @Override + public JSONObject outExcepionPointPass(JSONObject whereJson) { + WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class); + JSONArray action_rows = new JSONArray(); + JSONObject action_jo = new JSONObject(); + + String to_command = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("to_command").getValue(); + action_jo.put("device_code", whereJson.getString("point_code")); + action_jo.put("code", "to_command"); + action_jo.put("product_area", "BLK"); + action_jo.put("value", to_command); + action_rows.add(action_jo); + wmsToAcsService.action(action_rows); + + JSONObject result = new JSONObject(); + result.put("message", "成功放行!"); + return result; + } + + @Override + public JSONObject vehicleUnbind(JSONObject whereJson) { + String vehicle_code = whereJson.getString("vehicle_code"); + + if (ObjectUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("托盘号不能为空!"); + } + + WQLObject vehicle_ext = WQLObject.getWQLObject("md_pb_storagevehicleext"); + + JSONObject vehicle_info = vehicle_ext.query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(vehicle_info)) { + throw new BadRequestException("未查询到载具【" + vehicle_code + "】对应的绑定关系"); + } + + String box_no = vehicle_info.getString("pcsn"); + if (StringUtils.isEmpty(box_no)) { + throw new BadRequestException("载具【" + vehicle_code + "】上未绑定木箱!"); + } + + List list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, box_no)); + if (ObjectUtil.isNotEmpty(list)) { + boolean anyMatch = list.stream().anyMatch(sub -> sub.getStatus().equals("1") || sub.getStatus().equals("2")); + if (anyMatch) { + throw new BadRequestException("载具上木箱【" + box_no + "】的包装关系为包装或者入库状态!"); + } + } + + String collect = list.stream().map(sub -> sub.getContainer_name()).collect(Collectors.joining("','")); + + JSONArray ivt_arr = WQLObject.getWQLObject("st_ivt_structivt").query("pcsn IN ('" + collect + "')").getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(ivt_arr)) { + throw new BadRequestException("载具【" + vehicle_code + "】上绑定的木箱【" + box_no + "】存在库存,不能进行解绑!"); + } + + int hasTask = ischBaseTaskService.count(new QueryWrapper() + .eq("is_delete", "0") + .eq("vehicle_code2", vehicle_code) + .lt("task_status", TaskStatusEnum.FINISHED.getCode())); + + if (hasTask > 0) { + throw new BadRequestException("该托盘【" + vehicle_code + "】存在正在执行中的任务,不能进行解绑!"); + } + + int hasTask2 = ischBaseTaskService.count(new QueryWrapper() + .eq("is_delete", "0") + .eq("vehicle_code", box_no) + .lt("task_status", TaskStatusEnum.FINISHED.getCode())); + + if (hasTask2 > 0) { + throw new BadRequestException("该木箱【" + box_no + "】存在正在执行中的任务,不能进行解绑!"); + } + + vehicle_info.put("pcsn", ""); + vehicle_ext.update(vehicle_info); + JSONObject result = new JSONObject(); + result.put("message", "操作成功!"); + return result; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java index bbefbee98..4ce284ed7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java @@ -1,6 +1,8 @@ package org.nl.b_lms.pda.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -15,30 +17,36 @@ import org.nl.b_lms.sch.point.service.IschBasePointService; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.tasks.TwoInEmpExcepTask; +import org.nl.b_lms.sch.tasks.TwoOutTask; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo; import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvdisMapper; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.impl.StIvtIostorinvOutServiceImpl; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBoxManageService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InVehicleManageService; import org.nl.common.enums.SpecEnum; +import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.system.service.param.dao.Param; import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.basedata.st.service.StructattrService; +import org.nl.wms.basedata.st.service.dto.StructattrDto; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.mes.service.LmsToMesService; import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.util.TranUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; @Service @@ -69,8 +77,6 @@ public class VehicleTwoServiceImpl implements VehicleTwoService { @Autowired private LmsToMesService lmsToMesService; - - /** * 点位服务 */ @@ -82,6 +88,15 @@ public class VehicleTwoServiceImpl implements VehicleTwoService { @Autowired private IPdmBiContainerinboundService iPdmBiContainerinboundService; + @Autowired + private IStIvtIostorinvOutService iStIvtIostorinvOutService; + + @Autowired + private StIvtIostorinvdisMapper stIvtIostorinvdisMapper; + + @Autowired + private StructattrService structattrService; + @Override @Transactional(rollbackFor = Exception.class) public JSONObject vehicleIn(JSONObject whereJson) { @@ -183,9 +198,9 @@ public class VehicleTwoServiceImpl implements VehicleTwoService { public JSONObject boxIn(JSONObject whereJson) { // 调用接口 String startCode = whereJson.getString("point_code"); - if ("MXRKW1".equals(startCode)){ + if ("MXRKW1".equals(startCode)) { inBoxManageService.boxBinVehicle(whereJson); - }else if ("THRKDJW1".equals(startCode)){ + } else if ("THRKDJW1".equals(startCode)) { inBoxManageService.boxBinVehicleByTHRK(whereJson); } JSONObject result = new JSONObject(); @@ -211,10 +226,11 @@ public class VehicleTwoServiceImpl implements VehicleTwoService { String a = JSONObject.toJSONString(msg); List list = JSONObject.parseObject(a, List.class); Optional 称重 = list.stream().filter(m -> m.contains("称重")).findAny(); - if (称重.isPresent()){ + if (称重.isPresent()) { System.out.println(称重.get()); } } + @Override @Transactional(rollbackFor = Exception.class) public JSONObject reback(JSONObject whereJson) { @@ -223,25 +239,25 @@ public class VehicleTwoServiceImpl implements VehicleTwoService { String bill_type = whereJson.getString("bill_type"); whereJson.put("material_barcode", whereJson.getString("box_no")); whereJson.put("device_code", whereJson.getString("point_code")); - if ("RK1002".equals(whereJson.getString("point_code"))){ + if ("RK1002".equals(whereJson.getString("point_code"))) { List list = ischBaseTaskService.list(new QueryWrapper() .select("task_id") .eq("point_code2", "RK1004") .eq("task_type", "010706") .eq("is_delete", "0") .lt("task_status", TaskStatusEnum.FINISHED.getCode())); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException("稍后再试,异常口存在正在执行的任务"+ list.stream().map(SchBaseTask::getTask_id).collect(Collectors.joining(","))); + if (!CollectionUtils.isEmpty(list)) { + throw new BadRequestException("稍后再试,异常口存在正在执行的任务" + list.stream().map(SchBaseTask::getTask_id).collect(Collectors.joining(","))); } Param forceWeight = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("force_weight"); - if (forceWeight!=null && "1".equals(forceWeight.getValue())){ + if (forceWeight != null && "1".equals(forceWeight.getValue())) { PdmBiContainerinbound one = iPdmBiContainerinboundService.getOne(new QueryWrapper() .eq("box", whereJson.getString("box_no"))); - if (one!=null && !StringUtils.isEmpty(one.getRemark())){ + if (one != null && !StringUtils.isEmpty(one.getRemark())) { List remark = JSONObject.parseObject(one.getRemark(), List.class); Optional 称重 = remark.stream().filter(m -> m.contains("称重")).findAny(); - if (称重.isPresent()){ - throw new BadRequestException("开启称重强制校验"+称重.get()); + if (称重.isPresent()) { + throw new BadRequestException("开启称重强制校验" + 称重.get()); } } } @@ -254,12 +270,21 @@ public class VehicleTwoServiceImpl implements VehicleTwoService { whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库")); } else if (bill_type.equals("0009")) { whereJson.put("bill_type", IOSEnum.IN_TYPE.code("手工入库")); + } else if (bill_type.equals("0012")) { + whereJson.put("bill_type", IOSEnum.IN_TYPE.code("换标入库")); } whereJson.put("box_no", whereJson.getString("box_no")); JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status in ('0','1')").getResultJSONArray(0); if (ObjectUtil.isEmpty(resultJSONArray)) { throw new BadRequestException("未查询到子卷包装信息!"); } + String sub_type = resultJSONArray.getJSONObject(0).getString("sub_type"); + if (ObjectUtil.isNotEmpty(sub_type) && sub_type.equals("9") && !bill_type.equals("0012")) { + throw new BadRequestException("当前木箱是换标进行出库的,只能进行换标入库!"); + } + if ((ObjectUtil.isEmpty(sub_type) || !sub_type.equals("9")) && bill_type.equals("0012")) { + throw new BadRequestException("当前木箱不是换标进行出库的,不能进行换标入库!"); + } String material_barcode = ""; List subs = new ArrayList<>(); for (int i = 0; i < resultJSONArray.size(); i++) { @@ -305,30 +330,140 @@ public class VehicleTwoServiceImpl implements VehicleTwoService { // 更新载具对应木箱信息 JSONObject jsonExt = extTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonExt)) { - throw new BadRequestException("载具不存在!"+whereJson.getString("vehicle_code")); + throw new BadRequestException("载具不存在!" + whereJson.getString("vehicle_code")); } int hasTask = ischBaseTaskService.count(new QueryWrapper() .eq("is_delete", "0") .eq("vehicle_code2", whereJson.getString("vehicle_code")) .lt("task_status", TaskStatusEnum.FINISHED.getCode())); - if (hasTask>0){ - throw new BadRequestException("托盘"+whereJson.getString("vehicle_code")+"存在执行的任务"); + if (hasTask > 0) { + throw new BadRequestException("托盘" + whereJson.getString("vehicle_code") + "存在执行的任务"); } String pcsn = jsonExt.getString("pcsn"); - if (StringUtils.isNotEmpty(pcsn)){ + if (StringUtils.isNotEmpty(pcsn)) { JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0); if (stIvtStructattr != null && stIvtStructattr.size() > 0) { - throw new BadRequestException("当前托盘"+whereJson.getString("vehicle_code")+"已经绑定木箱"+pcsn); + throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经绑定木箱" + pcsn); } } jsonExt.put("pcsn", whereJson.getString("box_no")); extTab.update(jsonExt); inBussManageService.inTask(whereJson); - PdmProductSpecServiceImpl.doRecord(SpecEnum.RK_YC,null,Boolean.TRUE,null,subs); + HashMap sub_map = new HashMap(); + sub_map.put("sub_type", ""); + WQLObject.getWQLObject("pdm_bi_subpackagerelation").update(sub_map, "package_box_sn = '" + whereJson.getString("box_no")+"'"); + PdmProductSpecServiceImpl.doRecord(SpecEnum.RK_YC, null, Boolean.TRUE, null, subs); JSONObject result = new JSONObject(); result.put("message", "入库成功!"); return result; } + @Override + public JSONObject relabel(JSONObject whereJson) { + String box_no = whereJson.getString("box_no"); + + JSONObject jsonMst = new JSONObject(); + jsonMst.put("detail_count", 1); + jsonMst.put("bill_status", "10"); + jsonMst.put("create_mode", "03"); + jsonMst.put("bill_type", "1012"); + jsonMst.put("biz_date", DateUtil.now()); + jsonMst.put("user", "sap"); + + JSONArray dtls = new JSONArray(); + if (StrUtil.isEmpty("package_box_sn")) { + throw new BadRequestException("输入的木箱号不能为空!"); + } + JSONObject sub_jo = WQLObject.getWQLObject("PDM_BI_SubPackageRelation").query("package_box_sn = '" + box_no + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(sub_jo)) { + throw new BadRequestException("LMS中不存在木箱号为【" + box_no + "】的包装关系"); + } + String container_name = sub_jo.getString("container_name"); + JSONObject struct_ivt = WQLObject.getWQLObject("st_ivt_structivt").query("pcsn = '" + container_name + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(struct_ivt)) { + throw new BadRequestException("子卷号为【" + container_name + "】的成品卷不存在或已经出库!"); + } else { + if (struct_ivt.getDoubleValue("frozen_qty") > 0) { + throw new BadRequestException("子卷号为【" + container_name + "】的成品卷已经被分配或出库中"); + } else { + JSONObject dtl = new JSONObject(); + //查询该物料 + JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + sub_jo.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(mater_jo)) { + throw new BadRequestException("未查询到物料:" + sub_jo.getString("product_name") + ",信息!"); + } + dtl.put("material_id", mater_jo.getString("material_id")); + dtl.put("pcsn", container_name); + dtl.put("box_no", sub_jo.getString("package_box_sn")); + JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id = '" + mater_jo.getString("base_unit_id") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(unit)) { + throw new BadRequestException("未查询到物料计量单位:" + mater_jo.getString("base_unit_id") + ",信息!"); + } + dtl.put("qty_unit_id", unit.getString("measure_unit_id")); + dtl.put("qty_unit_name", unit.getString("unit_name")); + dtl.put("plan_qty", sub_jo.getString("net_weight")); + dtls.add(dtl); + } + } + + StructattrDto structCode = structattrService.findByCode(struct_ivt.getString("struct_code")); + jsonMst.put("stor_id", structCode.getStor_id()); + jsonMst.put("stor_code", structCode.getStor_code()); + jsonMst.put("stor_name", structCode.getStor_name()); + jsonMst.put("tableData", dtls); + if (!structCode.getSect_code().equals("BZC01")){ + throw new BadRequestException("只能针对兰州二期仓库的木箱进行换标出库!"); + } + String iostorinv_id = iStIvtIostorinvOutService.insertMst(jsonMst); + + //调用自动分配 + JSONObject out_jo = new JSONObject(); + out_jo.put("iostorinv_id", iostorinv_id); + out_jo.put("div_type", "1"); + iStIvtIostorinvOutService.allDiv(out_jo); + whereJson.put("iostorinv_id", iostorinv_id); + StIvtIostorinvOutServiceImpl bean = SpringContextHolder.getBean(StIvtIostorinvOutServiceImpl.class); + //调用下发任务逻辑 + ArrayList arr = new ArrayList<>(); + TranUtil.openTransaction((req, allTransactionConsumer) -> { + // 查询此明细所有未生成的分配明细 + List disDaoList = stIvtIostorinvdisMapper.getNotCreateDis(whereJson); + + if (ObjectUtil.isEmpty(disDaoList)) { + throw new BadRequestException("当前没有可设置的分配明细!"); + } + + /* + * 下发任务 + * 1.根据木箱 长、宽、高、订单号、物料分组 + * 2.相同木箱规格、订单号、物料的木箱一个任务组 + */ + // 定义一个函数,将需要分组的元素映射到一个建的集合里 + Function> compositeKey = row -> + Arrays.asList(row.getString("box_length"), row.getString("box_width"), + row.getString("box_high"), row.getString("sale_order_name"), + row.getString("material_id") + ); + + Map, List> groupingDisMap = + disDaoList.stream().collect(Collectors.groupingBy(compositeKey, Collectors.toList())); + + for (List disLikeList : groupingDisMap.values()) { + // 调用任务生成处理 + List taskMangeList = bean.createTaskMange2(disLikeList, iostorinv_id, allTransactionConsumer); + + // 创建任务并下发一组任务 + bean.createTask2(taskMangeList, disLikeList, "RK1003", allTransactionConsumer); + + allTransactionConsumer.accept("finish"); + } + return arr; + }, new JSONArray()); + SpringContextHolder.getBean(TwoOutTask.class).immediateNotifyAcs(null); + + JSONObject result = new JSONObject(); + result.put("message", "出库成功!"); + return result; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java index 38552f473..92eb0ddca 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java @@ -155,4 +155,6 @@ public interface IPdmBiSlittingproductionplanService extends IService getPlansByDto(SlitterPlanDistinctDto dto); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml index b019e50cb..eaca01c72 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml @@ -4,94 +4,74 @@ + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/BhTubePointDto.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/BhTubePointDto.java index 6c63ba254..4628f66e5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/BhTubePointDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/BhTubePointDto.java @@ -2,12 +2,14 @@ package org.nl.b_lms.sch.tasks.slitter.mapper.dto; import lombok.Data; +import java.io.Serializable; + /** * @Author: lyd * @Date: 2025/3/18 */ @Data -public class BhTubePointDto { +public class BhTubePointDto implements Serializable { /** * 点位 @@ -21,4 +23,8 @@ public class BhTubePointDto { * 数量 */ private Integer qty; + /** + * 任务id + */ + private String task_id; } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/CallPlanViewVO.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/CallPlanViewVO.java index 7f88b3938..f3298760f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/CallPlanViewVO.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/CallPlanViewVO.java @@ -18,6 +18,7 @@ public class CallPlanViewVO implements Serializable { * 分切设备 */ private String resource_name; + private String container_name; /** * 母卷 */ @@ -45,4 +46,6 @@ public class CallPlanViewVO implements Serializable { private String qzz_generation; private String start_time; private String is_paper_ok; + private String qzzno; + private String manufacture_sort; } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java index f67edcdf1..42992099f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java @@ -3,7 +3,9 @@ package org.nl.b_lms.sch.tasks.slitter.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.tasks.slitter.mapper.dto.CallPlanViewVO; +import org.springframework.http.ResponseEntity; import java.util.List; @@ -321,6 +323,12 @@ public interface SlitterService { */ JSONObject urgentPlan(JSONObject param); + /** + * 批量加急 + * @param whereJson + */ + JSONObject urgentBatchPlan(JSONObject whereJson); + /** * 子卷下料2 * @param param @@ -362,4 +370,45 @@ public interface SlitterService { * @return */ JSONObject returnShaft(JSONObject param); + + /** + * 分切暂存维护 + * @param param + * @return + */ + JSONObject cutCacheInventory(JSONObject param); + + JSONObject tzTaskINfo(JSONObject entity); + + void recover(JSONObject param); + + /** + * 呼叫套轴 + * @param param + */ + JSONObject doCallTubeShaft(JSONObject param); + + /** + * 呼叫套轴展示 + * @param param + */ + List doCallTubeShaftShow(JSONObject param); + + /** + * 获取轴长 + * @param param + */ + JSONObject getTubeLength(JSONObject param); + + JSONObject callShaft(JSONObject entity); + + JSONObject fullTubeVehicleIn(JSONObject param); + + JSONObject emptyTubeVehicleOut(JSONObject param); + + JSONObject taskTubeVehicle(JSONObject param); + + JSONObject getTubeVehicleInfo(JSONObject param); + + List seeTaskByPoint(JSONObject param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java index 6cc1bef66..616d36383 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java @@ -3,15 +3,15 @@ package org.nl.b_lms.sch.tasks.slitter.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.IdUtil; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.utils.IdUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; 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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; @@ -43,13 +43,17 @@ import org.nl.b_lms.sch.tasks.slitter.mapper.dto.CallPlanViewVO; import org.nl.b_lms.sch.tasks.slitter.mapper.dto.GxQtyDto; import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil; +import org.nl.common.enums.NoticeTypeEnum; import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.TaskUtils; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.RedisUtils; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.param.ISysParamService; import org.nl.system.service.param.dao.Param; +import org.nl.wms.basedata.master.service.ClassstandardService; +import org.nl.wms.basedata.master.service.dto.ClassstandardDto; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.sch.manage.TaskStatusEnum; import org.redisson.api.RLock; @@ -64,6 +68,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -78,7 +83,18 @@ import static org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil.getPointLocati @Slf4j @Service public class SlitterServiceImpl implements SlitterService { - + /** + * 是否使用虚拟卷 + */ + public final static String USE_XN = "USE_XN"; + /** + * 套轴期限 + */ + public final static String TZ_DAY = "TZ_DAY"; + /** + * 套轴区域 + */ + public final static String PARAM_CODE_PLAN_AREA = "PARAM_CODE_PLAN_AREA"; @Autowired private BstIvtStockingivtMapper bstIvtStockingivtMapper; @Autowired @@ -129,35 +145,57 @@ public class SlitterServiceImpl implements SlitterService { private ReturnShaftAgvTask returnShaftAgvTask; @Autowired private ISysNoticeService noticeService; + @Autowired + private RedisUtils redisUtils; + @Autowired + private ClassstandardService classstandardService; + @Autowired + private StockAreaSendVehicleTask stockAreaSendVehicleTask; + @Autowired + private TrussCallShaftManuallyTask trussCallShaftManuallyTask; + @Autowired + private StockAreaInOutTask stockAreaInOutTask; @Override - public JSONObject acsRequestShaftLoadTube(JSONObject param) { // hint: 现在的考虑都是基于B1,B2的车间,后续的B3、B4需要再次修改 log.info("acs申请套轴的输入参数为:{}", param); JSONObject res = new JSONObject(); JSONObject con = new JSONObject(); String deviceCode = param.getString("device_code"); + List stepTipLogs = getRedisListValue("ERROR" + deviceCode); String size = param.getString("size"); BstIvtShafttubeivt point = shafttubeivtService.getByPointCode(deviceCode, false); Param autoSendEmpty = paramService.findByCode("autoSendEmpty"); if (ObjectUtil.isEmpty(autoSendEmpty)) { + stepTipLogs.add("未配置是否直接送气胀轴,请检查参数表:autoSendEmpty"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("未配置是否直接送气胀轴"); } log.info("获取的穿拔轴点位数据:{}", point); // 判断尺寸是否相同 if (!size.equals(point.getQzz_size())) { - log.error("设备:{}对应的气胀轴尺寸不批对,需要气胀轴尺寸:{},实际尺寸:{}", deviceCode, point.getQzz_size(), size); + log.error("设备:{}对应的气胀轴尺寸不匹对,需要气胀轴尺寸:{},实际尺寸:{}", deviceCode, point.getQzz_size(), size); + stepTipLogs.add("套轴请求->设备:{ " + deviceCode + " }对应的气胀轴尺寸不批对" + + ",需要气胀轴尺寸:{ " + point.getQzz_size() + " },实际尺寸:{ " + size + " }," + + " 请检查电气任务与LMS穿拔轴点位信息是否一致, 如果实际为空,让电气复位启动即可。"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("设备:{ " + deviceCode + " }对应的气胀轴尺寸不批对" + ",需要气胀轴尺寸:{ " + point.getQzz_size() + " },实际尺寸:{ " + size + " }"); } List tubes = Stream.of(point.getTube_code1(), point.getTube_code2()) .filter(ObjectUtil::isNotEmpty) .collect(Collectors.toList()); - // 判断是否存在纸管(查找三点位是否有所需的管芯) -// List list = papervehicleService.list(new LambdaQueryWrapper() -// .in(MdPbPapervehicle::getMaterial_code, tubes) -// .gt(MdPbPapervehicle::getQty, 0)); + if (ObjectUtil.isNotEmpty(point.getTube_name1()) && ObjectUtil.isNotEmpty(point.getTube_name2())) { + // 判断是否超过长度 + Integer tubeLen1 = SlitterTaskUtil.getPaperLengthByCodeInt(point.getTube_name1()); + Integer tubeLen2 = SlitterTaskUtil.getPaperLengthByCodeInt(point.getTube_name2()); + if (tubeLen1 + tubeLen2 > 1700) { + stepTipLogs.add("两个管芯相加长度超出轴长度,请检查!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); + throw new BadRequestException("两个管芯相加长度超出轴长度,请检查!"); + } + } List gxQtyList = papervehicleService.getGxPoints(point.getPoint_location(), tubes); // point.getTube_code1() 编码 , getTube_name1() : 纸制筒管|纸管|6英寸|1300 or 纸制筒管|纸管|3英寸|12|650 res.put("device_code", deviceCode); @@ -165,11 +203,6 @@ public class SlitterServiceImpl implements SlitterService { if ("1".equals(autoSendEmpty.getValue()) && gxQtyList.size() == 0) { con.put("is_bushing", SlitterConstant.TO_SHAFT_INFO_97); } else { -// int sum = list.stream() -// .mapToInt(e -> e.getQty().intValue()) -// .sum(); -// // 需要求和判断当前数量和所需数 -// con.put("is_bushing", sum >= tubes.size() ? SlitterConstant.SLITTER_YES : SlitterConstant.SLITTER_NO); List hasNeedPoint = gxQtyList.stream() .filter(gx -> "1".equals(gx.getPoint_type()) && gx.getQty() >= tubes.size()) .collect(Collectors.toList()); @@ -242,14 +275,19 @@ public class SlitterServiceImpl implements SlitterService { // 参数:设备号,type,插拔轴位,qzzSize JSONObject res = new JSONObject(); String deviceCode = param.getString("device_code"); + List stepTipLogs = getRedisListValue("ERROR" + deviceCode); String qzzNo = param.getString("qzz_no"); if (ObjectUtil.isEmpty(qzzNo)) { log.error("气涨轴编码不能为空!"); + stepTipLogs.add("出现错误,点位气涨轴编码不能为空!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("气涨轴编码不能为空!"); } List plans = slittingproductionplanService.getByQzzNo(qzzNo); if (plans.size() == 0) { log.error("查询不到气胀轴编码「" + qzzNo + "」对应状态[结束]的子卷信息!"); + stepTipLogs.add("查询不到气胀轴编码「" + qzzNo + "」对应状态[结束]的子卷信息!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("查询不到气胀轴编码「" + qzzNo + "」对应的子卷信息!"); } String containers = plans.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.joining(",")); @@ -269,123 +307,131 @@ public class SlitterServiceImpl implements SlitterService { @Override @Transactional(rollbackFor = Exception.class) public JSONObject acsFinishLoadShaft(JSONObject param) { - log.info("ACS申请套管完成参数: {}", param); String msg = ""; JSONObject res = new JSONObject(); // 穿拔轴位 String deviceCode = param.getString("device_code"); - // 纸管 - String weight1 = param.getString("weight1"); - String material1 = param.getString("material1"); - String weight2 = param.getString("weight2"); - String material2 = param.getString("material2"); - // 判断是否有未完成的任务 - List list = taskService.list(new LambdaQueryWrapper() - .eq(SchBaseTask::getPoint_code1, deviceCode) - .lt(SchBaseTask::getTask_status, "07")); - if (list.size() > 0) { - log.error("点位[{}]存在未完成得任务!", deviceCode); - throw new BadRequestException("点位[" + deviceCode + "]存在未完成得任务!"); - } - BstIvtShafttubeivt startPoint = shafttubeivtService.getOne(new LambdaQueryWrapper() - .eq(BstIvtShafttubeivt::getPoint_code, deviceCode)); - // 获取分切计划 - List collect = Stream.of(startPoint.getContainer_name1(), startPoint.getContainer_name2()) - .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); - if (collect.size() == 0) { - log.error("找不到[{}]对应的分切计划!", deviceCode); - throw new BadRequestException("找不到[" + deviceCode + "]对应的分切计划!"); - } - List plans = slittingproductionplanService.list( - new LambdaQueryWrapper() - .in(PdmBiSlittingproductionplan::getContainer_name, collect) - .eq(PdmBiSlittingproductionplan::getStatus, "01") - .eq(PdmBiSlittingproductionplan::getIs_delete, "0")); - // 去异常位 - if (plans.size() == 0) { - log.error("找不到[{}]对应的分切计划,分切计划可能被删除或者拼接!", collect); - // 移动到异常处理位 - List exceptionPoints = bcutpointivtService.getAreaNotTaskPointByStatus("4", "1", "0", "0"); - if (exceptionPoints.size() > 0) { - BstIvtCutpointivt exceptionPoint = exceptionPoints.get(0); - // 枷锁 - RLock lockPointR = redissonClient.getLock(exceptionPoint.getPoint_code()); - boolean tryLockPointR = lockPointR.tryLock(0, TimeUnit.SECONDS); - try { - if (tryLockPointR) { - List planTemp = slittingproductionplanService.list( - new LambdaQueryWrapper() - .in(PdmBiSlittingproductionplan::getContainer_name, collect)); - PdmBiSlittingproductionplan tempPlan = planTemp.get(0); - // 需要枷锁 + List stepTipLogs = getRedisListValue("ERROR" + deviceCode); + // 枷锁 + RLock lock = redissonClient.getLock("doAcsFinishLoadShaft"); + boolean tryLock = lock.tryLock(10, TimeUnit.SECONDS); + try { + if (tryLock) { + log.info("ACS申请套管完成参数: {}", param); + // 纸管 + BigDecimal weight1 = param.getBigDecimal("weight1"); + String material1 = param.getString("material1"); + BigDecimal weight2 = param.getBigDecimal("weight2"); + String material2 = param.getString("material2"); + BstIvtShafttubeivt startPoint = shafttubeivtService.getOne(new LambdaQueryWrapper() + .eq(BstIvtShafttubeivt::getPoint_code, deviceCode)); + // 获取分切计划 + List collect = Stream.of(startPoint.getContainer_name1(), startPoint.getContainer_name2()) + .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); + if (collect.size() == 0) { + log.error("找不到[{}]对应的分切计划!", deviceCode); + stepTipLogs.add("套轴完成->找不到[" + deviceCode + "]点位记录的分切计划!分切计划可能被删除或者拼接!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); + throw new BadRequestException("找不到[" + deviceCode + "]对应的分切计划!"); + } + List plans = slittingproductionplanService.list( + new LambdaQueryWrapper() + .in(PdmBiSlittingproductionplan::getContainer_name, collect) + .eq(PdmBiSlittingproductionplan::getStatus, "01") + .eq(PdmBiSlittingproductionplan::getIs_delete, "0")); + // 判断是否有未完成的任务 + List list = taskService.list(new LambdaQueryWrapper() + .eq(SchBaseTask::getPoint_code1, deviceCode) + .like(SchBaseTask::getRequest_param, collect.get(0)) + .lt(SchBaseTask::getTask_status, "07")); + if (list.size() > 0) { + log.error("点位[{}]存在未完成得任务!", deviceCode); + stepTipLogs.add("套轴完成->点位[" + deviceCode + "]存在未完成得任务!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); + throw new BadRequestException("点位[" + deviceCode + "]存在未完成得任务!"); + } + // 去异常位 + if (plans.size() == 0) { + log.error("找不到[{}]对应的分切计划,分切计划可能被删除或者拼接!", collect); + // 移动到异常处理位(随机一个点位,在送到B2对面的位置) +// List exceptionPoints = bcutpointivtService.getAreaNotTaskPointByStatus("4", "1", "0", "0"); + List exceptionPointCodes = bcutpointivtService.getCanUseMinPointByShelf("4", "0"); + if (exceptionPointCodes.size() > 0) { + String exceptionPoint = exceptionPointCodes.get(0); JSONObject exParam = new JSONObject(); exParam.put("point_code1", startPoint.getPoint_code()); - exParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(tempPlan.getUp_or_down()) - ? exceptionPoint.getTruss_point_code1() : exceptionPoint.getTruss_point_code2()); - exParam.put("vehicle_code1", SlitterTaskUtil.getQzzNoByUpOrDown(tempPlan)); - exParam.put("vehicle_code2", SlitterTaskUtil.getQzzNoByUpOrDown(tempPlan)); + exParam.put("point_code2", exceptionPoint); + if (exceptionPoint.endsWith("A")) { + exParam.put("vehicle_code1", collect); + } else { + exParam.put("vehicle_code2", collect); + } exParam.put("task_type", SlitterEnum.TASK_TYPE.code("套轴异常处理桁架任务")); exParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + exParam.put("acs_task_type", "6"); + exParam.put("containers", collect); sendNBJExceptionPointTask.createTask(exParam); res.put("status", HttpStatus.HTTP_OK); res.put("message", "创建送至异常处理位!"); return res; - } else { - throw new BadRequestException("系统繁忙,稍后在试!"); } - } finally { - if (tryLockPointR) { - lockPointR.unlock(); + // 找套轴对接位(任取一个空点) + exceptionPointCodes = bcutpointivtService.getCanUseMinPointByShelfSpecial("1", "0"); + if (exceptionPointCodes.size() > 0) { + String exceptionPoint = exceptionPointCodes.get(0); + JSONObject exParam = new JSONObject(); + exParam.put("point_code1", startPoint.getPoint_code()); + exParam.put("point_code2", exceptionPoint); + if (exceptionPoint.endsWith("A")) { + exParam.put("vehicle_code1", collect); + } else { + exParam.put("vehicle_code2", collect); + } + exParam.put("task_type", SlitterEnum.TASK_TYPE.code("套轴异常处理桁架任务")); + exParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + exParam.put("acs_task_type", "6"); + exParam.put("containers", collect); + sendNBJExceptionPointTask.createTask(exParam); + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "创建送至对接位等待异常处理位!"); + return res; } - } - } else { - throw new BadRequestException("[" + collect + "]对应的分切计划状态已更改,异常处理位没位置!"); - } - } - // 分切计划设置纸卷重量 - for (PdmBiSlittingproductionplan plan : plans) { - if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) { - plan.setPaper_weight(weight1); - msg = msg + "子卷号:" + plan.getContainer_name() + "的纸管重量: " + weight1 + " | "; - } else { - plan.setPaper_weight(weight2); - msg = msg + "子卷号:" + plan.getContainer_name() + "的纸管重量: " + weight2 + " | "; - } - TaskUtils.updateOptMessageBySlitterPlan(plan); - } - slittingproductionplanService.updateBatchById(plans); - // 当前套轴的分切计划 - PdmBiSlittingproductionplan demoPlan = plans.get(0); - // 查找是否有同组的气胀轴位置 - BstIvtCutpointivt cutPoint = slitterMapper.getSameGroupPoint(demoPlan); - if (ObjectUtil.isEmpty(cutPoint)) { - // 也有可能在路上, 获取任务的终点 - String endPoint = slitterMapper.getSameGroupTaskPoint(demoPlan); - if (ObjectUtil.isNotEmpty(endPoint)) { - cutPoint = bcutpointivtService.getOne(new LambdaQueryWrapper() - .eq(BstIvtCutpointivt::getTruss_point_code1, endPoint).or() - .eq(BstIvtCutpointivt::getTruss_point_code2, endPoint)); - } - } - if (ObjectUtil.isEmpty(cutPoint)) { - // 获取一个空位 (上下区域) -// List emptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus( -// "1", "1", startPoint.getPoint_location(), "1"); - List emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus( - "1", "1", startPoint.getPoint_location(), "1"); - if (emptyNotTaskPoint.size() == 0) { - throw new BadRequestException("找不到可用套轴对接位!"); - } - cutPoint = emptyNotTaskPoint.get(0); - } - String resourceName = demoPlan.getResource_name(); - // 枷锁 - RLock lockPoint = redissonClient.getLock(cutPoint.getPoint_code()); - boolean tryLockPoint = lockPoint.tryLock(0, TimeUnit.SECONDS); - try { - if (tryLockPoint) { + // 半条任务等待补齐 + stepTipLogs.add("套轴完成->[" + collect + "]对应的分切计划状态已更改,无暂存位置,创建任务失败!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); + JSONObject exParam = new JSONObject(); + exParam.put("point_code1", startPoint.getPoint_code()); + exParam.put("point_code2", "-"); + exParam.put("vehicle_code1", collect); + exParam.put("task_type", SlitterEnum.TASK_TYPE.code("套轴异常处理桁架任务")); + exParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + exParam.put("task_status", TaskStatusEnum.SURE_START.getCode()); + exParam.put("acs_task_type", "6"); + exParam.put("containers", collect); + sendNBJExceptionPointTask.createTask(exParam); + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "请求成功"); + res.put("msg", msg); + return res; + } + // 分切计划设置纸卷重量 + for (PdmBiSlittingproductionplan plan : plans) { + if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) { + plan.setPaper_weight(String.valueOf(NumberUtil.round(weight1, 2))); + msg = msg + "子卷号:" + plan.getContainer_name() + "的纸管重量: " + weight1 + " | "; + } else { + plan.setPaper_weight(String.valueOf(NumberUtil.round(weight2, 2))); + msg = msg + "子卷号:" + plan.getContainer_name() + "的纸管重量: " + weight2 + " | "; + } + TaskUtils.updateOptMessageBySlitterPlan(plan); + } + slittingproductionplanService.updateBatchById(plans); + + // 当前套轴的分切计划 + PdmBiSlittingproductionplan demoPlan = plans.get(0); // 分切计划设置套轴完成 + String resourceName = demoPlan.getResource_name(); String qzzNo = resourceName.substring(0, 2) + resourceName.substring(resourceName.length() - 2) + demoPlan.getSplit_group() @@ -397,22 +443,64 @@ public class SlitterServiceImpl implements SlitterService { TaskUtils.updateOptMessageBySlitterPlan(plan); }); slittingproductionplanService.updateBatchById(plans); - // 创建任务 - JSONObject taskParam = new JSONObject(); - taskParam.put("point_code1", startPoint.getPoint_code()); - taskParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) - ? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2()); - taskParam.put("vehicle_code1", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); - taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); - taskParam.put("task_type", "010814"); - taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); - trussSendAirShaftTask.createTask(taskParam); + // 查找是否有同组的气胀轴位置 + BstIvtCutpointivt cutPoint = slitterMapper.getSameGroupPoint(demoPlan); + if (ObjectUtil.isEmpty(cutPoint)) { + // 也有可能在路上, 获取任务的终点 + String endPoint = slitterMapper.getSameGroupTaskPoint(demoPlan); + if (ObjectUtil.isNotEmpty(endPoint)) { + cutPoint = bcutpointivtService.getOne(new LambdaQueryWrapper() + .eq(BstIvtCutpointivt::getTruss_point_code1, endPoint).or() + .eq(BstIvtCutpointivt::getTruss_point_code2, endPoint)); + } + } + if (ObjectUtil.isEmpty(cutPoint)) { + // 获取一个空位 (上下区域) + List emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus( + "1", "1", startPoint.getPoint_location(), "1"); + if (emptyNotTaskPoint.size() > 0) { + cutPoint = emptyNotTaskPoint.get(0); + } else { + stepTipLogs.add("提示:套轴完成->找不到可用套轴对接位,创建半条任务,等待AGV取货完成触发!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); + // 创建任务 + JSONObject taskParam = new JSONObject(); + taskParam.put("point_code1", startPoint.getPoint_code()); + taskParam.put("point_code2", "-"); + taskParam.put("needPosition", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) + ? "A" : "B"); + taskParam.put("vehicle_code1", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); + taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); + taskParam.put("task_type", "010814"); + taskParam.put("containers", collect); + taskParam.put("task_status", TaskStatusEnum.SURE_START.getCode()); + taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + taskParam.put("immediateNotifyAcs", "0"); + trussSendAirShaftTask.createTask(taskParam); + } + } + if (ObjectUtil.isNotEmpty(cutPoint)) { + // 创建任务 + JSONObject taskParam = new JSONObject(); + taskParam.put("point_code1", startPoint.getPoint_code()); + taskParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) + ? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2()); + taskParam.put("vehicle_code1", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); + taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); + taskParam.put("task_type", "010814"); + taskParam.put("containers", collect); + taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + taskParam.put("immediateNotifyAcs", "1"); + trussSendAirShaftTask.createTask(taskParam); + } } else { + stepTipLogs.add("套轴完成->系统繁忙,稍后在试!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("系统繁忙,稍后在试!"); } } finally { - if (tryLockPoint) { - lockPoint.unlock(); + if (tryLock) { + lock.unlock(); } } res.put("status", HttpStatus.HTTP_OK); @@ -429,6 +517,7 @@ public class SlitterServiceImpl implements SlitterService { String lock = "lock"; JSONObject res = new JSONObject(); String deviceCode = param.getString("device_code"); + List stepTipLogs = getRedisListValue("ERROR" + deviceCode); String qzzSize = param.getString("size"); RLock lockPoint = redissonClient.getLock(lock + qzzSize); boolean tryLockPoint = lockPoint.tryLock(0, TimeUnit.SECONDS); @@ -437,8 +526,11 @@ public class SlitterServiceImpl implements SlitterService { // 判断是否有未完成的任务 List list = taskService.list(new LambdaQueryWrapper() .eq(SchBaseTask::getPoint_code1, deviceCode) + .eq(SchBaseTask::getTask_type, SlitterEnum.TASK_TYPE.code("穿拔轴位<>气胀轴缓存位")) .lt(SchBaseTask::getTask_status, "07")); if (list.size() > 0) { + stepTipLogs.add(">>>气胀轴入库请求异常:点位[" + deviceCode + "]存在未完成的任务,无法创建到气涨轴暂存位的任务!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("点位[" + deviceCode + "]存在未完成得任务!"); } BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); @@ -454,6 +546,8 @@ public class SlitterServiceImpl implements SlitterService { .eq(BstIvtShafttubeivt::getPoint_location, startPoint.getPoint_location()) .eq(BstIvtShafttubeivt::getPoint_type, "8")); if (ObjectUtil.isEmpty(putWaitPoint)) { + stepTipLogs.add(">>>气胀轴入库请求异常:未找到可存放气涨轴规格「" + qzzSize + "」的等待点位。"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的等待点位"); } // 创建任务 @@ -466,6 +560,8 @@ public class SlitterServiceImpl implements SlitterService { param.put("is_bushing", "0"); trussCallShaftCacheTask.createTask(param); } else { + stepTipLogs.add(">>>气胀轴入库请求异常:系统繁忙,稍后在试!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("系统繁忙,稍后在试!"); } } finally { @@ -483,12 +579,15 @@ public class SlitterServiceImpl implements SlitterService { log.info("ACS申请从气涨轴暂存位呼叫气胀轴的输入参数为:{}", param); JSONObject res = new JSONObject(); String deviceCode = param.getString("device_code"); + List stepTipLogs = getRedisListValue("ERROR" + deviceCode); String qzzSize = param.getString("size"); // 判断是否有未完成的任务 List list = taskService.list(new LambdaQueryWrapper() .eq(SchBaseTask::getPoint_code1, deviceCode) .lt(SchBaseTask::getTask_status, "07")); if (list.size() > 0) { + stepTipLogs.add(">>>气胀轴出库请求异常:点位[" + deviceCode + "]存在未完成的任务,无法创建从气涨轴暂存位取轴的任务!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("点位[" + deviceCode + "]存在未完成得任务!"); } BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); @@ -502,6 +601,8 @@ public class SlitterServiceImpl implements SlitterService { .eq(BstIvtShafttubeivt::getPoint_location, startPoint.getPoint_location()) .eq(BstIvtShafttubeivt::getPoint_type, "7")); if (ObjectUtil.isEmpty(pickWaitPoint)) { + stepTipLogs.add(">>>气胀轴出库请求异常:未找到可存放气涨轴规格「" + qzzSize + "」的等待点位!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的等待点位"); } // BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); @@ -568,11 +669,11 @@ public class SlitterServiceImpl implements SlitterService { // 如果没有下一组的分切计划,就只做下卷任务(判断下单/下双) // 获取分切对接位没任务的空位置 List emptyPoints = slitterMapper.getEmptyCutPointNotTask(area, - device.getSort_seq(), + actualDevice.getSort_seq(), getPointLocationInCutDevice(getNumberByResourceCode(actualDeviceCode), area)); if (emptyPoints.size() == 0) { - log.error("分切机【" + device.getExt_code() + "】找不到对应的对接位, 或已存在任务!"); - throw new BadRequestException("分切机【" + device.getExt_code() + "】找不到对应的对接位,或已存在任务!"); + log.error("分切机【" + device.getExt_code() + "】对应的对接位有货, 或已存在任务!"); + throw new BadRequestException("分切机【" + device.getExt_code() + "】对应的对接位有货,或已存在任务!"); } // 枷锁 BstIvtCutpointivt emptyPoint = emptyPoints.get(0); @@ -606,6 +707,7 @@ public class SlitterServiceImpl implements SlitterService { TaskUtils.updateOptMessageBySlitterPlan(plan); }); // 创建任务 + taskParam.put("d_containers", currentPlans.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.toList())); slitterDownTrussTask.createTask(taskParam); slittingproductionplanService.updateBatchById(currentPlans); return res; @@ -680,6 +782,8 @@ public class SlitterServiceImpl implements SlitterService { // 创建任务 taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("分切机下料桁架任务")); taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + taskParam.put("d_containers", currentPlans.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.toList())); + taskParam.put("u_containers", nextPlans.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.toList())); slitterDownTrussTask.createTask(taskParam); // 下来的分切计划修改状态:05 -> 06 currentPlans.forEach(plan -> { @@ -724,7 +828,7 @@ public class SlitterServiceImpl implements SlitterService { String now = DateUtil.now(); // 记录数据库 BstIvtScalehistory history = new BstIvtScalehistory(); - history.setHistory_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + history.setHistory_id(IdUtil.getStringId()); history.setScale_code(scaleEquipment.getScale_code()); history.setDevice_code(scaleEquipment.getDevice_code()); history.setCurrent_weight(currentWeight); @@ -903,12 +1007,13 @@ public class SlitterServiceImpl implements SlitterService { JSONObject res = new JSONObject(); res.put("status", HttpStatus.HTTP_OK); res.put("message", "请求成功!"); + String deviceCode = param.getString("device_code"); // param: device_code row_num if (ObjectUtil.isEmpty(param.getString("row_num"))) { - log.error("设备:{},排数不能为空", param.getString("device_code")); - throw new BadRequestException("设备:" + param.getString("device_code") + "排数不能为空"); + log.error("设备:{},排数不能为空", deviceCode); + throw new BadRequestException("设备:" + deviceCode + "排数不能为空"); } - BstIvtStockingivt device = stockingivtService.getPointByCode(param.getString("device_code"), false); + BstIvtStockingivt device = stockingivtService.getPointByCode(deviceCode, false); String vehicleCode = device.getVehicle_code(); if (ObjectUtil.isEmpty(vehicleCode)) { // 如果托盘号为空,那就是任务没完成,需要从任务中获取 @@ -942,19 +1047,33 @@ public class SlitterServiceImpl implements SlitterService { } else { papervehicleService.update(mdPbPapervehicle); } - // todo: 如果qty=0,创建AGV送空任务,(新的task_type)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071 -// if (remove) { // hint: 错误 -// // 证明删除成功,创建任务搬走 -// // 查找一个没有任务的空位 -// List list = stockingivtService.getEmptyPointNotTask(device.getPoint_location(), "0"); -// if (list.size() == 0) { -// noticeService.createNotice("管芯抓取备货区找不到空位置搬运", -// "管芯抓取点位[" + device.getPoint_name() + "]无法从备货区找到空位", -// NoticeTypeEnum.EXCEPTION.getCode()); -// return res; -// } -// BstIvtStockingivt stockingivt = list.get(0); -// } + // 如果qty=0,创建AGV送空任务,(新的task_type 010816)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071 + List papers = papervehicleService.list(new LambdaQueryWrapper() + .eq(MdPbPapervehicle::getVehicle_code, vehicleCode)); + BigDecimal reduce = papers.stream().map(MdPbPapervehicle::getQty).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + if (reduce.intValue() <= 0) { + // 搬走 + List tasks = taskService.checkHaveTask(deviceCode); + if (CollectionUtil.isEmpty(tasks)) { + // 查找一个没有任务的空位 + List list = stockingivtService.getEmptyPointNotTask2(device.getPoint_location(), Arrays.asList("0", "2")); + if (list.size() == 0) { + noticeService.createNotice("备货区找不到空位置搬运", + "备货区" + deviceCode + "异常", + NoticeTypeEnum.EXCEPTION.getCode()); + return res; + } + BstIvtStockingivt moveEmptyPoint = list.get(0); + JSONObject moveTaskParam = new JSONObject(); + moveTaskParam.put("point_code1", deviceCode); + moveTaskParam.put("point_code2", moveEmptyPoint.getPoint_code()); + moveTaskParam.put("vehicle_code", vehicleCode); + moveTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("备货区单独送空载具")); + moveTaskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + stockAreaSendVehicleTask.createTask(moveTaskParam); + } + + } } return res; } @@ -991,6 +1110,8 @@ public class SlitterServiceImpl implements SlitterService { if (SlitterConstant.SLITTER_NO.equals(shaftPoint.getHave_qzz())) { throw new BadRequestException("点位不存在气胀轴信息,无需初始化!"); } + String qzzSize = shaftPoint.getQzz_size(); + String qzzGen = shaftPoint.getQzz_generation(); if (SlitterConstant.SLITTER_YES.equals(isAgainTz)) { //2、把当前点位上子卷号对应的is_paper_ok改为1 List containers = Stream.of(shaftPoint.getContainer_name1(), shaftPoint.getContainer_name2()) @@ -1012,8 +1133,16 @@ public class SlitterServiceImpl implements SlitterService { shaftPoint.setContainer_name1(""); shaftPoint.setContainer_name2(""); shaftPoint.setQzz_size(""); + shaftPoint.setPlan(""); TaskUtils.updateOptMessageByBShaftPoint(shaftPoint); shafttubeivtService.update(shaftPoint); + // 初始化 预分配点位 + BstIvtShafttubeivt shafttubeivt = shafttubeivtService.getNeedInitPoint(qzzSize, qzzGen, shaftPoint.getPoint_location()); + if (ObjectUtil.isNotEmpty(shafttubeivt)) { + shafttubeivt.setPlan(""); + shafttubeivt.setTube_name1(""); + shafttubeivtService.updateById(shafttubeivt); + } JSONObject res = new JSONObject(); res.put("status", HttpStatus.HTTP_OK); res.put("message", "请求成功!"); @@ -1057,9 +1186,15 @@ public class SlitterServiceImpl implements SlitterService { result.put("message", "不更新库存,放行!"); return result; } + // 判断是不是内包间的点位 + if (task.getPoint_code1().startsWith("TZZC")) { + // 查找半条任务,并创建下发 + doCreatTrussSendShaftTask(task); + } startPointObj.setPoint_status("1"); startPointObj.setQzz_no1(""); startPointObj.setQzz_no2(""); + startPointObj.setRemark(""); TaskUtils.updateOptMessageByBCutPoint(startPointObj); bcutpointivtService.updateById(startPointObj); task.setTask_status(TaskStatusEnum.PICK_UP_COMPLETED.getCode()); @@ -1068,60 +1203,91 @@ public class SlitterServiceImpl implements SlitterService { return result; } + public void doCreatTrussSendShaftTask(SchBaseTask task) { + List list = taskService.list(new LambdaQueryWrapper() + .in(SchBaseTask::getTask_type, "010814", "010812") + .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()) + .eq(SchBaseTask::getIs_delete, "0") + .orderByAsc(SchBaseTask::getCreate_time)); + if (list.size() > 0) { + SchBaseTask schBaseTask = list.get(0); + if ("010814".equals(schBaseTask.getTask_type())) { + JSONObject requestParam = JSONObject.parseObject(schBaseTask.getRequest_param()); + if (ObjectUtil.isNotEmpty(requestParam.getString("needPosition")) && "A".equals(requestParam.getString("needPosition"))) { + schBaseTask.setPoint_code2(task.getPoint_code1() + "_" + requestParam.getString("needPosition")); + } + if (ObjectUtil.isNotEmpty(requestParam.getString("needPosition")) && "B".equals(requestParam.getString("needPosition"))) { + schBaseTask.setPoint_code2(task.getPoint_code1() + "_" + requestParam.getString("needPosition")); + } + schBaseTask.setRemark("AGV取货完成触发!"); + schBaseTask.setUpdate_time(DateUtil.now()); + schBaseTask.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + taskService.updateById(schBaseTask); + trussSendAirShaftTask.immediateNotifyAcs(schBaseTask.getTask_id()); + } else if ("010812".equals(schBaseTask.getTask_type())) { + schBaseTask.setRemark("AGV取货完成触发!"); + schBaseTask.setPoint_code2(task.getPoint_code1() + "_A"); + schBaseTask.setUpdate_time(DateUtil.now()); + schBaseTask.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + taskService.updateById(schBaseTask); + sendNBJExceptionPointTask.immediateNotifyAcs(schBaseTask.getTask_id()); + } + + } + } + + @SneakyThrows @Override public JSONObject pdaSendSubVolumeToNBJ(JSONObject param) { log.info("手持申请送子卷到内包间参数:{}", param); JSONObject res = new JSONObject(); res.put("status", HttpStatus.HTTP_OK); res.put("message", "创建AGV任务成功!"); - // param: point_code - String pointCode = param.getString("point_code"); - // 校验是否存在任务 - List taskList = taskService.checkHaveStartTask(pointCode); - if (taskList.size() > 0) { - throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的任务!"); - } - BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false); - if (Objects.equals(point.getPoint_status(), "1")) { - // 如果是没货 - throw new BadRequestException("点位:" + point.getPoint_code() + "检测无货,请确保任务执行完毕后触发!"); - } - if (ObjectUtil.equals(point.getPoint_status(), "2")) { - // 如果是没货 - throw new BadRequestException("点位:" + point.getPoint_code() + "检测空气胀轴,请确保下卷任务是否完毕后触发!"); - } - if (ObjectUtil.isEmpty(point.getQzz_no1()) && ObjectUtil.isEmpty(point.getQzz_no2())) { - throw new BadRequestException("点位:" + point.getPoint_code() + " 的气胀轴编码为空!"); - } - JSONObject taskParam = new JSONObject(); - // 将子卷信息存到任务中 - List qzzNos = Stream.of(point.getQzz_no1(), point.getQzz_no2()).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(qzzNos)) { - List plans = slittingproductionplanService.getByQzzNos(qzzNos); - List collect = plans.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.toList()); - if (collect.size() == 0) { - throw new BadRequestException("操作失败,点位[" + pointCode + "]未查到子卷分切计划,请先绑定子卷库存!"); - } - taskParam.put("containers", collect); - } else { - throw new BadRequestException("操作失败,点位[" + pointCode + "]无气胀轴信息,请先绑定子卷库存!"); - } -// List areaEmptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus("1", -// "1", "0", "2"); - List areaEmptyNotTaskPoint = bcutpointivtService.getNBJCanUsePoint("1", "1", "0", "2"); - if (areaEmptyNotTaskPoint.size() <= 1) { - throw new BadRequestException("请求搬运失败,内包间没有可存放位置!"); - } - BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0); - RLock lock = redissonClient.getLock(endPoint.getPoint_code()); + RLock lock = redissonClient.getLock("doAcsFinishLoadShaft"); boolean tryLock; - try { - tryLock = lock.tryLock(0, TimeUnit.SECONDS); - } catch (InterruptedException e) { - throw new BadRequestException("获取锁异常"); - } + tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { + // param: point_code + String pointCode = param.getString("point_code"); + if (ObjectUtil.isEmpty(pointCode)){ + throw new BadRequestException("点位编码不能为空!"); + } + // 校验是否存在任务 + List taskList = taskService.checkHaveStartTask(pointCode); + if (taskList.size() > 0) { + throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的任务!"); + } + BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false); + if (Objects.equals(point.getPoint_status(), "1")) { + // 如果是没货 + throw new BadRequestException("点位:" + point.getPoint_code() + "检测无货,请确保任务执行完毕后触发!"); + } + if (ObjectUtil.equals(point.getPoint_status(), "2")) { + // 如果是没货 + throw new BadRequestException("点位:" + point.getPoint_code() + "检测空气胀轴,请确保下卷任务是否完毕后触发!"); + } + if (ObjectUtil.isEmpty(point.getQzz_no1()) && ObjectUtil.isEmpty(point.getQzz_no2())) { + throw new BadRequestException("点位:" + point.getPoint_code() + " 的气胀轴编码为空!"); + } + JSONObject taskParam = new JSONObject(); + // 将子卷信息存到任务中 + List qzzNos = Stream.of(point.getQzz_no1(), point.getQzz_no2()).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(qzzNos)) { + List plans = slittingproductionplanService.getByQzzNos(qzzNos); + List collect = plans.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.toList()); + if (collect.size() == 0) { + throw new BadRequestException("操作失败,点位[" + pointCode + "]未查到子卷分切计划,请先绑定子卷库存!"); + } + taskParam.put("containers", collect); + } else { + throw new BadRequestException("操作失败,点位[" + pointCode + "]无气胀轴信息,请先绑定子卷库存!"); + } + List areaEmptyNotTaskPoint = bcutpointivtService.getNBJCanUsePoint("1", "1", "0", "2"); + if (areaEmptyNotTaskPoint.size() <= 1) { + throw new BadRequestException("请求搬运失败,内包间没有可存放位置!"); + } + BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0); taskParam.put("point_code1", point.getPoint_code()); taskParam.put("point_code2", endPoint.getPoint_code()); taskParam.put("vehicle_code1", point.getQzz_no1()); @@ -1130,7 +1296,7 @@ public class SlitterServiceImpl implements SlitterService { taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); slitterDownAgvTask.createTask(taskParam); } else { - throw new BadRequestException("系统繁忙,稍后在试!!"); + throw new BadRequestException("内包间正在分配点位,请重试!"); } } finally { if (lock.isLocked() && lock.isHeldByCurrentThread()) { @@ -1171,6 +1337,9 @@ public class SlitterServiceImpl implements SlitterService { try { if (openLock) { BstIvtCutpointivt agvCode = bcutpointivtService.getPintByTrussCode(pointCode, false); + if (ObjectUtil.isEmpty(agvCode)) { + throw new BadRequestException("请输入正确的点位编码,未查询到该点位【" + pointCode + "】"); + } if (agvCode.getTruss_point_code1().equals(pointCode)) { agvCode.setQzz_no1(""); } @@ -1308,6 +1477,10 @@ public class SlitterServiceImpl implements SlitterService { // param : container_name, point_code String containerName = param.getString("container_name"); String pointCode1 = param.getString("point_code"); + BstIvtCutpointivt pointCode = bcutpointivtService.getPintByTrussCode(pointCode1, false); + if (ObjectUtil.isEmpty(pointCode)) { + throw new BadRequestException("点位" + pointCode1 + "不存在,请确认点位编码是否正确!"); + } if (ObjectUtil.isEmpty(containerName)) { throw new BadRequestException("子卷号不能为空!"); } @@ -1321,7 +1494,6 @@ public class SlitterServiceImpl implements SlitterService { if (taskList.size() > 0) { throw new BadRequestException("操作失败,点位[" + pointCode1 + "]存在未完成的任务!"); } - BstIvtCutpointivt pointCode = bcutpointivtService.getPintByTrussCode(pointCode1, false); PdmBiSlittingproductionplan demoPlan = plans.get(0); String resourceName = demoPlan.getResource_name(); // 创建新的气胀轴编码 @@ -1585,7 +1757,8 @@ public class SlitterServiceImpl implements SlitterService { data.put("status", "1".equals(point.getPoint_status()) ? "空位" : "2".equals(point.getPoint_status()) ? "有气胀轴" : "3".equals(point.getPoint_status()) - ? "有子卷" : "-"); + ? "有子卷" : "4".equals(point.getPoint_status()) + ? "有气胀轴(不带管芯)" : "-"); if (SlitterConstant.SLITTER_NO.equals(point.getIs_used())) { data.put("status", "已禁用"); } @@ -1816,7 +1989,7 @@ public class SlitterServiceImpl implements SlitterService { taskParam.put("empty_site", "0"); taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("分切机上气胀轴")); taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); - + taskParam.put("u_containers", plans.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.toList())); // 创建任务 upShaftTrussTask.createTask(taskParam); res.put("msg", containers); @@ -2071,7 +2244,7 @@ public class SlitterServiceImpl implements SlitterService { PdmBiSlittingproductionplan plan = slittingproductionplanService.getByContainerNameNotStatus(containerName); if (ObjectUtil.isEmpty(plan)) { plan = new PdmBiSlittingproductionplan(); - plan.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + plan.setWorkorder_id(IdUtil.getStringId()); } // 公共部分插入 plan.setOrder_type("1"); @@ -2248,7 +2421,38 @@ public class SlitterServiceImpl implements SlitterService { @Override public List showManualView(JSONObject param) { - return slitterMapper.showManualView(); + // 获取穿拔轴点位数据 + List shaftPoints = shafttubeivtService.getAllByPointType("2", true); + Param useXn = paramService.findByCode(USE_XN); + List callPlanViewVOS; + if (ObjectUtil.isNotEmpty(useXn) && "1".equals(useXn.getValue())) { + callPlanViewVOS = slitterMapper.showManualView(); + } else { + callPlanViewVOS = slitterMapper.showManualViewNoXn(); + } + for (CallPlanViewVO callPlanViewVO : callPlanViewVOS) { + if ("2".equals(callPlanViewVO.getIs_paper_ok())) { + // 已下发 + callPlanViewVO.setIs_paper_ok("4"); + for (BstIvtShafttubeivt shaftPoint : shaftPoints) { + if (shaftPoint.getContainer_name1().equals(callPlanViewVO.getContainer_name()) + || shaftPoint.getContainer_name2().equals(callPlanViewVO.getContainer_name())) { + // 正在套轴 + callPlanViewVO.setIs_paper_ok("3"); + break; + } + } + if (!"3".equals(callPlanViewVO.getIs_paper_ok()) && ObjectUtil.isNotEmpty(callPlanViewVO.getQzzno())) { + // 已套轴 + callPlanViewVO.setIs_paper_ok("2"); + } + if (!"3".equals(callPlanViewVO.getIs_paper_ok()) + && ObjectUtil.isEmpty(callPlanViewVO.getQzzno())) { + callPlanViewVO.setIs_paper_ok("99"); + } + } + } + return callPlanViewVOS; } @Override @@ -2259,12 +2463,12 @@ public class SlitterServiceImpl implements SlitterService { PdmBiSlittingproductionplan plan = slittingproductionplanService.getById(workorder_id); log.info("当前加急送轴的计划为:{}", plan); if (!"01".equals(plan.getStatus())) { - res.put("status", HttpStatus.HTTP_OK); + res.put("status", HttpStatus.HTTP_BAD_REQUEST); res.put("message", "加急失败,当前计划正在套轴!"); return res; } if (!"P1".equals(plan.getManufacture_sort())) { - res.put("status", HttpStatus.HTTP_OK); + res.put("status", HttpStatus.HTTP_BAD_REQUEST); res.put("message", "加急失败,当前计划已加急过一次!"); return res; } @@ -2280,12 +2484,38 @@ public class SlitterServiceImpl implements SlitterService { res.put("status", HttpStatus.HTTP_OK); res.put("message", "加急成功!"); } else { - res.put("status", HttpStatus.HTTP_OK); + res.put("status", HttpStatus.HTTP_BAD_REQUEST); res.put("message", "加急失败,请刷新再试!"); } return res; } + @Override + public JSONObject urgentBatchPlan(JSONObject whereJson) { + JSONArray data = whereJson.getJSONArray("data"); + int success = 0; + int fail = 0; + JSONArray failInfo = new JSONArray(); + for (int i = 0; i < data.size(); i++) { + JSONObject json = data.getJSONObject(i); + JSONObject urgentPlan = urgentPlan(json); + if (HttpStatus.HTTP_BAD_REQUEST == urgentPlan.getInteger("status")) { + fail++; + JSONObject p = new JSONObject(); + p.put(json.getString("container_name"), urgentPlan.getString("message")); + failInfo.add(p); + } else { + success++; + } + } + JSONObject res = new JSONObject(); + res.put("success", success); + res.put("fail", fail); + res.put("total", data.size()); + res.put("failInfo", failInfo); + return res; + } + @Override public JSONObject downRolls2(JSONObject param) { log.info("下卷2的输入参数为:{}", param); @@ -2385,7 +2615,6 @@ public class SlitterServiceImpl implements SlitterService { } @Override - @Transactional(rollbackFor = Exception.class) public JSONObject returnShaft(JSONObject param) { log.info("空轴退回 - {}", param); JSONObject res = new JSONObject(); @@ -2393,47 +2622,7 @@ public class SlitterServiceImpl implements SlitterService { res.put("message", "创建AGV任务成功!"); // param: point_code String pointCode = param.getString("point_code"); - //缓存A气胀轴规格 3-4 三寸四代 - String size1 = param.getString("size1"); - //缓存B气胀轴规格 - String size2 = param.getString("size2"); - - BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false); - // 校验是否存在行架任务 - Boolean haveTaskByZcPoint = taskService.checkHaveTaskByZcPoint(point); - if (haveTaskByZcPoint) { - throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的行架任务!"); - } - // 校验是否存在agv任务 - List taskList = taskService.checkHaveStartTask(pointCode); - if (taskList.size() > 0) { - throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的agv任务!"); - } - - if (ObjectUtil.equals(point.getPoint_status(), "2")) { - // 如果是没货 - throw new BadRequestException("点位:" + point.getPoint_code() + "检测空气胀轴,请先清空点位信息再触发!!"); - } - if (ObjectUtil.equals(point.getPoint_status(), "3")) { - throw new BadRequestException("点位:" + point.getPoint_code() + "检测子卷,请先清空点位信息再触发!!"); - } - if (ObjectUtil.isNotEmpty(point.getQzz_no1()) || ObjectUtil.isNotEmpty(point.getQzz_no2())) { - throw new BadRequestException("点位:" + point.getPoint_code() + " 的气胀轴编码不为空,请先清空点位信息再触发!!"); - } - if (Objects.equals(point.getPoint_status(), "1") && ObjectUtil.isEmpty(point.getQzz_no1()) && ObjectUtil.isEmpty(point.getQzz_no2())) { - // 如果是没货 绑定为空轴状态 - point.setPoint_status("4"); - bcutpointivtService.updateById(point); - } - JSONObject taskParam = new JSONObject(); - - // 获取内包间缓存位 - List areaEmptyNotTaskPoint = bcutpointivtService.getNBJCanUsePoint("1", "1", "0", "2"); - if (areaEmptyNotTaskPoint.size() <= 1) { - throw new BadRequestException("请求搬运失败,内包间没有可存放位置!"); - } - BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0); - RLock lock = redissonClient.getLock(endPoint.getPoint_code()); + RLock lock = redissonClient.getLock("doAcsFinishLoadShaft"); boolean tryLock; try { tryLock = lock.tryLock(0, TimeUnit.SECONDS); @@ -2442,19 +2631,65 @@ public class SlitterServiceImpl implements SlitterService { } try { if (tryLock) { - taskParam.put("point_code1", point.getPoint_code()); - taskParam.put("point_code2", endPoint.getPoint_code()); - if (ObjectUtil.isNotEmpty(size1)) { - taskParam.put("vehicle_code1", IdUtil.getSnowflake(1, 1).nextIdStr() + size1); + //缓存A气胀轴规格 3-4 三寸四代 + String size1 = param.getString("size1"); + //缓存B气胀轴规格 + String size2 = param.getString("size2"); + + BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false); + // 校验是否存在行架任务 + Boolean haveTaskByZcPoint = taskService.checkHaveTaskByZcPoint(point); + if (haveTaskByZcPoint) { + throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的行架任务!"); } - if (ObjectUtil.isNotEmpty(size2)) { - taskParam.put("vehicle_code2", IdUtil.getSnowflake(1, 1).nextIdStr() + size2); + // 校验是否存在agv任务 + List taskList = taskService.checkHaveTask(pointCode); + if (taskList.size() > 0) { + throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的agv任务!"); } - taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("分切机下料AGV到内包间")); - taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); - returnShaftAgvTask.createTask(taskParam); + + if (ObjectUtil.equals(point.getPoint_status(), "1")) { + // 如果是没货 + throw new BadRequestException("点位:" + point.getPoint_code() + "未检测有气胀轴,请先设置点位信息再触发!!"); + } + if (ObjectUtil.equals(point.getPoint_status(), "2")) { + // 如果是没货 + throw new BadRequestException("点位:" + point.getPoint_code() + "检测空气胀轴,请先清空点位信息再触发!!"); + } + if (ObjectUtil.equals(point.getPoint_status(), "3")) { + throw new BadRequestException("点位:" + point.getPoint_code() + "检测子卷,请先清空点位信息再触发!!"); + } + if (ObjectUtil.isNotEmpty(point.getQzz_no1()) || ObjectUtil.isNotEmpty(point.getQzz_no2())) { + throw new BadRequestException("点位:" + point.getPoint_code() + " 的气胀轴编码不为空,请先清空点位信息再触发!!"); + } + if (Objects.equals(point.getPoint_status(), "4") && ObjectUtil.isEmpty(point.getQzz_no1()) && ObjectUtil.isEmpty(point.getQzz_no2())) { + + JSONObject taskParam = new JSONObject(); + + // 获取内包间缓存位 + List areaEmptyNotTaskPoint = bcutpointivtService.getNBJCanUsePoint("1", "1", "0", "2"); + if (areaEmptyNotTaskPoint.size() <= 1) { + throw new BadRequestException("请求搬运失败,内包间没有可存放位置!"); + } + BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0); + + taskParam.put("point_code1", point.getPoint_code()); + taskParam.put("point_code2", endPoint.getPoint_code()); + if (ObjectUtil.isNotEmpty(size1)) { + taskParam.put("vehicle_code1", IdUtil.getStringId() + size1); + } + if (ObjectUtil.isNotEmpty(size2)) { + taskParam.put("vehicle_code2", IdUtil.getStringId() + size2); + } + taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("分切机下料AGV到内包间")); + taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + returnShaftAgvTask.createTask(taskParam); + } else { + throw new BadRequestException("系统繁忙,稍后在试!!"); + } + } else { - throw new BadRequestException("系统繁忙,稍后在试!!"); + throw new BadRequestException("点位:" + pointCode + "点位状态不对,请先设置点位信息再触发!!"); } } finally { if (lock.isLocked() && lock.isHeldByCurrentThread()) { @@ -2501,7 +2736,7 @@ public class SlitterServiceImpl implements SlitterService { for (int i = 0; i < num; i++) { String containerName = area + code + "-" + i; PdmBiSlittingproductionplan plan = new PdmBiSlittingproductionplan(); - plan.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + plan.setWorkorder_id(IdUtil.getStringId()); // 公共部分插入 plan.setOrder_type("1"); plan.setContainer_name(containerName); @@ -2670,4 +2905,443 @@ public class SlitterServiceImpl implements SlitterService { res.put("message", "饵料下卷成功!"); return res; } + + @Override + public JSONObject cutCacheInventory(JSONObject param) { + log.info("手持维护分切暂存库存:{}", param); + // param : point_code, type + String pointCode = param.getString("point_code"); + BstIvtCutpointivt bstIvtCutpointivt = bcutpointivtService.getPintByTrussCode(pointCode, false); + if (bstIvtCutpointivt.getTruss_point_code1().equals(pointCode)) { + bstIvtCutpointivt.setQzz_no1(""); + } + if (bstIvtCutpointivt.getTruss_point_code2().equals(pointCode)) { + bstIvtCutpointivt.setQzz_no2(""); + } + if (SlitterConstant.SLITTER_YES.equals(param.getString("type"))) { + if (ObjectUtil.isEmpty(bstIvtCutpointivt.getQzz_no1()) && ObjectUtil.isEmpty(bstIvtCutpointivt.getQzz_no2())) { + bstIvtCutpointivt.setPoint_status("4"); + } + } else { + if (ObjectUtil.isEmpty(bstIvtCutpointivt.getQzz_no1()) && ObjectUtil.isEmpty(bstIvtCutpointivt.getQzz_no2())) { + bstIvtCutpointivt.setPoint_status("1"); + } + } + TaskUtils.updateOptMessageByBCutPoint(bstIvtCutpointivt); + bcutpointivtService.updateById(bstIvtCutpointivt); + JSONObject res = new JSONObject(); + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "分切暂存设置成功!"); + return res; + } + + @Override + public JSONObject tzTaskINfo(JSONObject entity) { + String deviceCode = entity.getString("device_code"); + BstIvtShafttubeivt tzPoint = shafttubeivtService.getByPointCode(deviceCode, false); + SchBaseTask one = taskService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTask::getIs_delete, "0") + .lt(SchBaseTask::getTask_status, "07") + .and(la2 -> la2.eq(SchBaseTask::getPoint_code1, deviceCode).or() + .eq(SchBaseTask::getPoint_code2, deviceCode)), false); + String tip = ""; + String tip2 = ""; + if (ObjectUtil.isNotEmpty(one)) { + ClassstandardDto code = classstandardService.findByCode(one.getTask_type()); + tip += "正在执行" + code.getClass_name() + "任务, "; + } + List tubes = Stream.of(tzPoint.getTube_code1(), tzPoint.getTube_code2()).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList()); + List containers = Stream.of(tzPoint.getContainer_name1(), tzPoint.getContainer_name2()).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList()); + + if (ObjectUtil.isNotEmpty(tzPoint.getTube_code1()) || ObjectUtil.isNotEmpty(tzPoint.getTube_code2())) { + tip += "该点位需要套轴"; + tip2 += "正在为计划" + containers + "套轴,管芯数据:" + tubes; + } else { + tip += "该点位不需要套轴"; + if ("1".equals(tzPoint.getHave_qzz())) { + tip2 += "正在执行拔轴..."; + } else { + tip2 += "点位空闲..."; + } + } + JSONObject res = new JSONObject(); + res.put("tip", tip); + res.put("tip2", tip2); + return res; + } + + @Override + public void recover(JSONObject param) { + // container_name + String containerName = param.getString("container_name"); + List shaftPoints = shafttubeivtService.getAllByPointType("2", true); + for (BstIvtShafttubeivt shaftPoint : shaftPoints) { + if (shaftPoint.getContainer_name1().equals(containerName) + || shaftPoint.getContainer_name2().equals(containerName)) { + throw new BadRequestException("请使用手持并且与电气初始化"); + } + } + LambdaUpdateWrapper lam = new LambdaUpdateWrapper<>(); + lam.set(PdmBiSlittingproductionplan::getIs_paper_ok, "1") + .eq(PdmBiSlittingproductionplan::getContainer_name, containerName); + slittingproductionplanService.update(lam); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject doCallTubeShaft(JSONObject param) { + // param: device_code、row + String deviceCode = param.getString("device_code"); + JSONObject row = param.getJSONObject("row"); + String parentContainerName = row.getString("parent_container_name"); + String splitGroup = row.getString("split_group"); + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(PdmBiSlittingproductionplan::getSplit_group, splitGroup) + .eq(PdmBiSlittingproductionplan::getResource_name, deviceCode) + .and(la -> la.eq(PdmBiSlittingproductionplan::getParent_container_name, parentContainerName) + .or() + .eq(PdmBiSlittingproductionplan::getRestruct_container_name, parentContainerName)); + List plans = slittingproductionplanService.list(lam); + for (PdmBiSlittingproductionplan plan : plans) { + plan.setIs_call("1"); + plan.setCall_time(DateUtil.now()); + plan.setUpdate_optid(SecurityUtils.getCurrentUserId()); + plan.setUpdate_optname(SecurityUtils.getCurrentNickName()); + plan.setUpdate_time(DateUtil.now()); + } + slittingproductionplanService.updateBatchById(plans); + JSONObject res = new JSONObject(); + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "呼叫套轴成功!"); + return res; + } + + @Override + public List doCallTubeShaftShow(JSONObject param) { + // param: device_code + String deviceCode = param.getString("device_code"); + Param tzDay = paramService.findByCode(TZ_DAY); + Integer days = Integer.valueOf(ObjectUtil.isEmpty(tzDay.getValue()) ? "0" : tzDay.getValue()); + // 区域固定B1、B2 +// Param paramObj = paramService.findByCode(PARAM_CODE_PLAN_AREA); +// String value = paramObj.getValue(); +// List area = Arrays.asList(value.split("[,,]")); + List callPlanViewVOS = slitterMapper.showManualCall(days); + if (callPlanViewVOS.size() == 0) { + return null; + } + return callPlanViewVOS.stream().filter(p -> p.getResource_name().equals(deviceCode)).collect(Collectors.toList()); + } + + @Override + public JSONObject getTubeLength(JSONObject param) { + // container_name + String containerName = param.getString("container_name"); + PdmBiSlittingproductionplan plan = slittingproductionplanService.getByContainerName(containerName); + if (ObjectUtil.isEmpty(plan)) { + throw new BadRequestException("计划未找到,请确保MES已推送。"); + } + JSONObject tube = new JSONObject(); + String[] split = SlitterTaskUtil.getTubeConvertInfo(plan).split("\\*"); + tube.put("bh", split[3]); + tube.put("length", SlitterTaskUtil.getPaperLength(plan)); + JSONObject res = new JSONObject(); + res.put("status", HttpStatus.HTTP_OK); + res.put("data", tube); + res.put("message", "获取信息成功!"); + return res; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject callShaft(JSONObject param) { + // area、point_code、row(size,generation) + log.info("呼叫空轴:{}", param); + JSONObject res = new JSONObject(); + String area = param.getString("area"); + String pointCode = param.getString("point_code"); + RLock open = redissonClient.getLock(pointCode); + boolean openLock; + try { + openLock = open.tryLock(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + if (openLock) { + JSONArray row = param.getJSONArray("row"); + if (row.size() > 2) { + throw new BadRequestException("一次最多只能呼叫两根轴!"); + } + List list = taskService.list(new LambdaQueryWrapper() + .lt(SchBaseTask::getTask_status, "07") + .eq(SchBaseTask::getIs_delete, "0") + .and(la2 -> la2.eq(SchBaseTask::getPoint_code1, pointCode) + .or() + .eq(SchBaseTask::getPoint_code2, pointCode) + .or() + .eq(SchBaseTask::getPoint_code3, pointCode) + .or() + .eq(SchBaseTask::getPoint_code4, pointCode))); + if (list.size() > 0) { + throw new BadRequestException("点位[" + pointCode + "]存在未完成得任务!"); + } + BstIvtCutpointivt agvPoint = bcutpointivtService.getPintByAgvCode(pointCode, false); + String groupId = IdUtil.getStringId(); + // 找终点 + // 获取一个空位 (上下区域) + List emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus( + "1", "1", agvPoint.getPoint_location(), "1"); + if (emptyNotTaskPoint.size() == 0) { + throw new BadRequestException("内包间没有空的套轴对接位!"); + } + BstIvtCutpointivt cutpointivt = emptyNotTaskPoint.get(0); + for (int i = 0; i < row.size(); i++) { + JSONObject rowJSONObject = row.getJSONObject(i); + BstIvtShafttubeivt pickWaitPoint = shafttubeivtService.getOne(new LambdaQueryWrapper() + .eq(BstIvtShafttubeivt::getPoint_location, agvPoint.getPoint_location()) + .eq(BstIvtShafttubeivt::getPoint_type, "7")); + if (ObjectUtil.isEmpty(pickWaitPoint)) { + throw new BadRequestException("未找到可存放气涨轴规格「" + rowJSONObject.getString("size") + "」的等待点位"); + } + // 判断库内有没有可用的轴 + List shafttubeivts = shafttubeivtService.getNotTaskShaftCache(rowJSONObject.getString("size"), + rowJSONObject.getString("generation"), agvPoint.getPoint_location()); + if (shafttubeivts.size() == 0) { + throw new BadRequestException("没有气胀轴尺寸[" + rowJSONObject.getString("size") + "],代数[" + + rowJSONObject.getString("generation") + "]的库存!"); + } else { + // 查找正在进行的取货点任务(未确定取货位) + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()); + queryWrapper.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")); + queryWrapper.in(SchBaseTask::getTask_type, + Arrays.asList(SlitterEnum.TASK_TYPE.code("穿拔轴位<>气胀轴缓存位"), + SlitterEnum.TASK_TYPE.code("人工叫空轴桁架任务"))); + queryWrapper.likeRight(SchBaseTask::getPoint_code1, "B_QHD"); + List baseTasks = taskService.list(queryWrapper); + if (baseTasks.size() > 0) { + // 过滤 + List collect = baseTasks.stream().filter(task -> { + if (ObjectUtil.isNotEmpty(task.getPoint_code3())) { + JSONObject object = JSONObject.parseObject(task.getRequest_param()); + if (ObjectUtil.isEmpty(object)) { + return false; + } + String size = object.getString("qzz_size"); + String generation = object.getString("qzz_generation"); + return "6".equals(rowJSONObject.getString("size")) + ? rowJSONObject.getString("size").equals(size) + : rowJSONObject.getString("size").equals(size) && rowJSONObject.getString("generation").equals(generation); + } + BstIvtShafttubeivt cbzj = shafttubeivtService.getByPointCode(task.getPoint_code2(), false); + if (ObjectUtil.isEmpty(cbzj)) { + return false; + } + return "6".equals(rowJSONObject.getString("size")) + ? rowJSONObject.getString("size").equals(cbzj.getQzz_size()) + : rowJSONObject.getString("size").equals(cbzj.getQzz_size()) && rowJSONObject.getString("generation").equals(cbzj.getQzz_generation()); + }).collect(Collectors.toList()); + if (collect.size() > 0) { + if (shafttubeivts.size() - collect.size() <= 0) { + throw new BadRequestException("气胀轴尺寸[" + rowJSONObject.getString("size") + "],代数[" + + rowJSONObject.getString("generation") + "]的库存不满足!"); + } + } + } + // todo: 检查正在进行的放货点任务(已经确定放货位)[先不要考虑] + } + // 创建桁架任务(二次分配) + JSONObject taskParam = new JSONObject(); + taskParam.put("point_code1", pickWaitPoint.getPoint_code()); + taskParam.put("point_code2", i == 0 ? cutpointivt.getTruss_point_code1() : cutpointivt.getTruss_point_code2()); + taskParam.put("point_code3", pointCode); + taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("人工叫空轴桁架任务")); + taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + taskParam.put("qzz_size", rowJSONObject.getString("size")); + taskParam.put("qzz_generation", rowJSONObject.getString("generation")); + taskParam.put("group_id", groupId); + trussCallShaftManuallyTask.createTask(taskParam); + } + + } else { + throw new BadRequestException("系统繁忙,稍后在试!!"); + } + } finally { + if (open.isLocked() && open.isHeldByCurrentThread()) { + open.unlock(); + } + } + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "请求成功"); + return res; + } + + @Override + public JSONObject fullTubeVehicleIn(JSONObject param) { + // param: + log.info("备货入库:{}", param); + JSONObject res = new JSONObject(); + RLock open = redissonClient.getLock("lockFullTubeVehicleIn"); + boolean openLock; + try { + openLock = open.tryLock(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + if (openLock) { + String pointCode = param.getString("point_code"); + String vehicleCode = param.getString("vehicle_code"); +// List taskList = taskService.checkHaveTask(pointCode); +// if (taskList.size() > 0) { +// throw new BadRequestException("点位「" + pointCode + "」存在任务!"); +// } + List taskList2 = taskService.checkHaveVehicle(vehicleCode); + if (taskList2.size() > 0) { + throw new BadRequestException("托盘「" + vehicleCode + "」存在任务!"); + } + List stocks = stockingivtService.getPointByVehicle(vehicleCode, pointCode); + if (stocks.size() > 0) { + List collect = stocks.stream().map(BstIvtStockingivt::getPoint_code).collect(Collectors.toList()); + throw new BadRequestException("托盘「" + vehicleCode + "」存在点位" + collect + "上!"); + } + BstIvtStockingivt rkPoint = stockingivtService.getPointByCode(pointCode, false); + if (ObjectUtil.isEmpty(rkPoint)) { + throw new BadRequestException("点位「" + pointCode + "」不存在!"); + } + if (!"2".equals(rkPoint.getPoint_type())) { + throw new BadRequestException("点位「" + pointCode + "」不是入库点,请扫入库的备货点位!"); + } + // 找一个没任务的空位 + List list = stockingivtService.getEmptyPointNotTask(rkPoint.getPoint_location(), "0"); + if (list.size() == 0) { + throw new BadRequestException("备货区找不到对应的空点位,请确认是否有任务!"); + } + BstIvtStockingivt moveEmptyPoint = list.get(0); + JSONObject moveTaskParam = new JSONObject(); + moveTaskParam.put("point_code1", pointCode); + moveTaskParam.put("point_code2", moveEmptyPoint.getPoint_code()); + moveTaskParam.put("vehicle_code", vehicleCode); + moveTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("备货区托盘入库")); + moveTaskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + stockAreaInOutTask.createTask(moveTaskParam); + } else { + throw new BadRequestException("系统繁忙,稍后在试!!"); + } + } finally { + if (open.isLocked() && open.isHeldByCurrentThread()) { + open.unlock(); + } + } + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "请求成功"); + return res; + } + + @Override + public JSONObject emptyTubeVehicleOut(JSONObject param) { + log.info("备货出库:{}", param); + JSONObject res = new JSONObject(); + RLock open = redissonClient.getLock("lockFullTubeVehicleOut"); + boolean openLock; + try { + openLock = open.tryLock(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + if (openLock) { + String pointCode = param.getString("point_code"); + String vehicleCode = param.getString("vehicle_code"); + List taskList = taskService.checkHaveTask(pointCode); + if (taskList.size() > 0) { + throw new BadRequestException("点位「" + pointCode + "」存在任务!"); + } + BstIvtStockingivt outPoint = stockingivtService.getPointByCode(pointCode, false); + if (ObjectUtil.isEmpty(outPoint)) { + throw new BadRequestException("点位「" + pointCode + "」不存在!"); + } + if ("0".equals(outPoint.getIvt_status())) { + throw new BadRequestException("点位「" + pointCode + "」是空位,请确认!"); + } + if ("2".equals(outPoint.getPoint_type())) { + throw new BadRequestException("点位「" + pointCode + "」是出库终点,请扫需要出库的备货点位!"); + } + // 找一个没任务的空位 + List list = stockingivtService.getEmptyPointNotTask(outPoint.getPoint_location(), "2"); + if (list.size() == 0) { + throw new BadRequestException("备货区找不到出库点,请确认!"); + } + BstIvtStockingivt moveEmptyPoint = list.get(0); + JSONObject moveTaskParam = new JSONObject(); + moveTaskParam.put("point_code1", pointCode); + moveTaskParam.put("point_code2", moveEmptyPoint.getPoint_code()); + moveTaskParam.put("vehicle_code", vehicleCode); + moveTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("备货区托盘出库")); + moveTaskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + stockAreaInOutTask.createTask(moveTaskParam); + + } else { + throw new BadRequestException("系统繁忙,稍后在试!!"); + } + } finally { + if (open.isLocked() && open.isHeldByCurrentThread()) { + open.unlock(); + } + } + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "请求成功"); + return res; + } + + @Override + public JSONObject taskTubeVehicle(JSONObject param) { + JSONObject res = new JSONObject(); + List tasks = taskService.list(new LambdaQueryWrapper() + .eq(SchBaseTask::getIs_delete, "0") + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .in(SchBaseTask::getTask_type, Arrays.asList(SlitterEnum.TASK_TYPE.code("备货区托盘出库") + , SlitterEnum.TASK_TYPE.code("备货区托盘入库")))); + res.put("data", tasks); + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "请求成功"); + return res; + } + + @Override + public JSONObject getTubeVehicleInfo(JSONObject param) { + JSONObject res = new JSONObject(); + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "请求成功"); + if (ObjectUtil.isEmpty(param.getString("point_code"))) { + return res; + } + BstIvtStockingivt one = stockingivtService.getPointByCode(param.getString("point_code"), false); + if (ObjectUtil.isEmpty(one)) { + return res; + } + res.put("data", one.getVehicle_code()); + return res; + } + + @Override + public List seeTaskByPoint(JSONObject param) { + String data = param.getString("data"); + return taskService.list(new LambdaQueryWrapper() + .eq(SchBaseTask::getIs_delete, "0") + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .and(ObjectUtil.isNotEmpty(data), la2 -> la2.like(SchBaseTask::getPoint_code1, data).or() + .like(SchBaseTask::getPoint_code2, data).or() + .like(SchBaseTask::getPoint_code3, data).or() + .like(SchBaseTask::getPoint_code4, data))); + } + + public List getRedisListValue(String key) { + List stepTipLogs = (List) redisUtils.get(key); + if (CollectionUtil.isEmpty(stepTipLogs)) { + stepTipLogs = new ArrayList<>(); + } + return stepTipLogs; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/util/SlitterTaskUtil.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/util/SlitterTaskUtil.java index 72cd2ff49..fba8d6d24 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/util/SlitterTaskUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/util/SlitterTaskUtil.java @@ -1,5 +1,6 @@ package org.nl.b_lms.sch.tasks.slitter.util; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -12,10 +13,8 @@ import org.nl.modules.common.exception.BadRequestException; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -135,7 +134,11 @@ public class SlitterTaskUtil { } public static void main(String[] args) { - System.out.println(getComposePaperTubeInformation("玻璃纤维及其制品|FRP管|6英寸|15|1100", "1")); +// System.out.println(getComposePaperTubeInformation("玻璃纤维及其制品|FRP管|6英寸|15|1100", "1")); + System.out.println(isNumeric(",3000")); + System.out.println(isNumeric("3000")); + System.out.println(isNumeric("3000.32")); + System.out.println(isNumeric("-3000.32")); } /** @@ -360,6 +363,42 @@ public class SlitterTaskUtil { String[] split = paperStr.replaceAll("\\|[\\u4e00-\\u9fa5]+$", "").split("\\|"); return split[split.length - 1]; } + + /** + * 获取: 长*外径*内径*壁厚*重量*薄壁厚*阶梯长度 + * @param plan + * @return + */ + public static String getTubeConvertInfo(PdmBiSlittingproductionplan plan) { +// String s = "玻璃纤维及其制品|FRP管|6英寸|15|1700"; + String paperStr = ""; + if (plan.getPaper_tube_or_FRP().equals(SlitterConstant.SLITTER_TYPE_PAPER)) { + paperStr = plan.getPaper_tube_model(); + } else { + paperStr = plan.getFRP_model(); + } + return getComposePaperTubeInformation(paperStr); + } + + /** + * 获取纸管长度 + * @param plan 分切计划 + * @return / + */ + public static String getPaperLengthByCode(String name) { +// String name = "玻璃纤维及其制品|FRP管|6英寸|15|1700"; + String[] split = name.replaceAll("\\|[\\u4e00-\\u9fa5]+$", "").split("\\|"); + return split[split.length - 1]; + } + /** + * 获取纸管长度 + * @param plan 分切计划 + * @return / + */ + public static Integer getPaperLengthByCodeInt(String name) { +// String name = "玻璃纤维及其制品|FRP管|6英寸|15|1700"; + return Integer.valueOf(getPaperLengthByCode(name)); + } public static String getPaperSize(PdmBiSlittingproductionplan plan) { // String s = "玻璃纤维及其制品|FRP管|6英寸|15|1700"; String paperStr = ""; @@ -529,4 +568,94 @@ public class SlitterTaskUtil { } log.info("分切下卷计划位置校验通过!"); } + + /** + * 判断管芯行家对接位是否有所需的管芯、并且数量是符合的。 + * @param tubeCodes + * @param needTubes + * @param papers + * @return + */ + public static boolean containsAllTubes(List tubeCodes, List needTubes, List papers) { + Set tubeSet = new HashSet<>(tubeCodes); + for (String tube : needTubes) { + if (!tubeSet.contains(tube)) { + return false; + } + } + int num = 0; + for (String needTube : needTubes) { + for (MdPbPapervehicle paper : papers) { + if (needTube.equals(paper.getMaterial_code())) { + num += paper.getQty().intValue(); + } + } + if (num == 0) { + return false; + } + } + return true; + } + + /** + * 组成映射Map + * @param tubes + * @return + */ + public static Map countTubes(List tubes) { + if (tubes == null) { + return new HashMap<>(); + } + return tubes.stream() + .filter(tube -> tube != null) + .collect(Collectors.toMap( + Function.identity(), + value -> 1, + Integer::sum + )); + } + + + public static List mapList(Collection from, Function func) { + if (CollUtil.isEmpty(from)) { + return new ArrayList<>(); + } + return from.stream().map(func).collect(Collectors.toList()); + } + + /** + * 转换List + * @param obj + * @return + */ + public static List objectToList(Object obj) { + // 安全转换为List + List errorList = new ArrayList<>(); + if (obj instanceof List) { + for (Object item : (List) obj) { + if (item instanceof String) { + errorList.add((String) item); + } else { + // 非字符串元素处理(按需调整) + errorList.add(item.toString()); + } + } + } else if (obj != null) { + // 如果存储的不是List(如JSON字符串),需额外处理 + throw new IllegalStateException("Expected List type from Redis, but got: " + obj.getClass()); + } + return errorList; + } + + /** + * 判断字符串是否为数字(整数、小数、负数) + */ + public static boolean isNumeric(String str) { + if (str == null || str.isEmpty() || str.trim().isEmpty()) { + return false; + } + String s = str.trim(); + return s.matches("-?\\d+(\\.\\d+)?"); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/wql/OUT_TASK01.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/wql/OUT_TASK01.wql index d54b7afe2..1735309a9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/wql/OUT_TASK01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/wql/OUT_TASK01.wql @@ -102,3 +102,34 @@ ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + attr.lock_type, + attr.struct_code + FROM + st_ivt_structattr attr + WHERE + attr.sect_code = 'BZC01' + and attr.zdepth = '1' + + OPTION 输入.row_num <> "" + attr.row_num = 输入.row_num + ENDOPTION + + OPTION 输入.col_num <> "" + attr.col_num = 输入.col_num + ENDOPTION + + OPTION 输入.layer_num <> "" + attr.layer_num = 输入.layer_num + ENDOPTION + + OPTION 输入.block_num <> "" + attr.block_num = 输入.block_num + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/controller/MdpbSameBoxController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/controller/MdpbSameBoxController.java new file mode 100644 index 000000000..c3928fccb --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/controller/MdpbSameBoxController.java @@ -0,0 +1,70 @@ +package org.nl.b_lms.storage_manage.database.controller; + + +import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.nl.b_lms.sch.point.dao.StIvtCutpointivt; +import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService; +import org.nl.b_lms.storage_manage.database.service.IMdpbSameBoxService; +import org.nl.b_lms.storage_manage.database.service.dao.MdpbBoxtype; +import org.nl.b_lms.storage_manage.database.service.dao.MdpbSameBox; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 前端控制器 + *

+ * + * @author author + * @since 2024-02-06 + */ +@RestController +@RequestMapping("/api/samebox") +public class MdpbSameBoxController { + + @Autowired + private IMdpbSameBoxService mdpbSameBoxService; + @Autowired + private IMdpbBoxtypeService mdpbBoxtypeService; + + @PostMapping("/getSameBoxList") + @Log("保存bom") + @SaIgnore + public ResponseEntity getSameBoxList(@RequestBody JSONObject whereJson) { + List list = mdpbSameBoxService.list(new LambdaQueryWrapper().eq(MdpbSameBox::getBox_code, whereJson.getString("box_code"))); + MdpbSameBox mdpbSameBox = new MdpbSameBox(); + MdpbBoxtype boxtype = mdpbBoxtypeService.getOne(new LambdaQueryWrapper().eq(MdpbBoxtype::getBox_type, whereJson.getString("box_code"))); + if (ObjectUtil.isEmpty(boxtype)) { + throw new BadRequestException("库内未查询到木箱编码为【"+whereJson.getString("box_code")+"】的信息!"); + } + + mdpbSameBox.setSame_box_code(boxtype.getBox_type()); + mdpbSameBox.setSame_box_name(boxtype.getBox_name()); + list.add(0, mdpbSameBox); + JSONArray jsonArray; + jsonArray = list.stream() + .map(item -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("text", item.getSame_box_name()); + jsonObject.put("value", item.getSame_box_code()); + return jsonObject; + }) + .collect(Collectors.toCollection(JSONArray::new)); + return new ResponseEntity<>(jsonArray, HttpStatus.OK); + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/IMdpbSameBoxService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/IMdpbSameBoxService.java new file mode 100644 index 000000000..a957ba510 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/IMdpbSameBoxService.java @@ -0,0 +1,17 @@ +package org.nl.b_lms.storage_manage.database.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound; +import org.nl.b_lms.storage_manage.database.service.dao.MdpbSameBox; + +/** + *

+ * 服务类 + *

+ * + * @author author + * @since 2024-02-06 + */ +public interface IMdpbSameBoxService extends IService { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/MdpbSameBox.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/MdpbSameBox.java new file mode 100644 index 000000000..f0d3e84f4 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/MdpbSameBox.java @@ -0,0 +1,46 @@ +package org.nl.b_lms.storage_manage.database.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 木箱规格信息表 + *

+ * + * @author author + * @since 2024-06-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("mdpb_samebox") +public class MdpbSameBox implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 木箱类型 + */ + @TableId(value = "id") + private String id; + + /** + * 木箱编码 + */ + private String box_code; + + /** + * 同类木箱编码 + */ + private String same_box_code; + + /** + * 同类木箱描述 + */ + private String same_box_name; + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/MdpbSameboxMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/MdpbSameboxMapper.java new file mode 100644 index 000000000..eef5782ac --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/MdpbSameboxMapper.java @@ -0,0 +1,16 @@ +package org.nl.b_lms.storage_manage.database.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.storage_manage.database.service.dao.MdpbSameBox; + +/** + *

+ * Mapper 接口 + *

+ * + * @author author + * @since 2024-02-06 + */ +public interface MdpbSameboxMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/MdpbSameboxMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/MdpbSameboxMapper.xml new file mode 100644 index 000000000..0018acb2a --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/MdpbSameboxMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/MdpbBoxtypeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/MdpbBoxtypeServiceImpl.java index 935bbd16e..70042c6a7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/MdpbBoxtypeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/MdpbBoxtypeServiceImpl.java @@ -2,6 +2,7 @@ package org.nl.b_lms.storage_manage.database.service.impl; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +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; @@ -12,7 +13,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo; import org.nl.b_lms.pdm.info.service.IPdmBiOrderbominfoService; import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService; +import org.nl.b_lms.storage_manage.database.service.IMdpbSameBoxService; import org.nl.b_lms.storage_manage.database.service.dao.MdpbBoxtype; +import org.nl.b_lms.storage_manage.database.service.dao.MdpbSameBox; import org.nl.b_lms.storage_manage.database.service.dao.mapper.MdpbBoxtypeMapper; import org.nl.common.domain.query.PageQuery; import org.nl.modules.common.exception.BadRequestException; @@ -20,8 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Map; -import java.util.Set; +import java.util.*; /** *

@@ -36,6 +38,8 @@ public class MdpbBoxtypeServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page) { // 查询条件 @@ -99,10 +103,30 @@ public class MdpbBoxtypeServiceImpl extends ServiceImpl().lambda() .eq(PdmBiOrderbominfo::getMfgOrder,whereJson.getString("mfgOrder")) .set(PdmBiOrderbominfo::getProductName, whereJson.getString("productName")) .set(PdmBiOrderbominfo::getDescription, boxtype.getBox_name()) ); + + //更新该木箱对应相同木箱类型1、先删除2、再插入 + //删除 + mdpbSameBoxService.remove(new QueryWrapper().lambda().eq(MdpbSameBox::getBox_code,whereJson.getString("productName"))); + + ArrayList sameBoxCode = (ArrayList) whereJson.get("sameBoxCode"); + //插入 + MdpbSameBox[] array = sameBoxCode.stream().map(a -> { + MdpbSameBox mdpbSameBox = new MdpbSameBox(); + mdpbSameBox.setBox_code(whereJson.getString("productName")); + mdpbSameBox.setSame_box_code(a); + MdpbBoxtype same_box_name = this.getById(a); + if (ObjectUtil.isEmpty(boxtype)) { + throw new BadRequestException("木箱编码:"+whereJson.getString("productName")+"查询木箱类型失败!"); + } + mdpbSameBox.setSame_box_name(same_box_name.getBox_name()); + return mdpbSameBox; + }).toArray(MdpbSameBox[]::new); + mdpbSameBoxService.saveBatch(Arrays.asList(array)); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/MdpbSameBoxServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/MdpbSameBoxServiceImpl.java new file mode 100644 index 000000000..db4d62e32 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/MdpbSameBoxServiceImpl.java @@ -0,0 +1,20 @@ +package org.nl.b_lms.storage_manage.database.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.b_lms.storage_manage.database.service.IMdpbSameBoxService; +import org.nl.b_lms.storage_manage.database.service.dao.MdpbSameBox; +import org.nl.b_lms.storage_manage.database.service.dao.mapper.MdpbSameboxMapper; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author author + * @since 2024-02-06 + */ +@Service +public class MdpbSameBoxServiceImpl extends ServiceImpl implements IMdpbSameBoxService { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java index 6de79e0a5..610ee8ec5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java @@ -37,13 +37,13 @@ public enum IOSEnum { //入库单据类型 IN_TYPE(MapOf.of("生产入库", "0001", "退货入库", "0002", "报废入库", "0003", "调拨入库", "0004", - "拆箱入库", "0005", "返检入库", "0006", "改切入库", "0007", "手工入库", "0009" + "拆箱入库", "0005", "返检入库", "0006", "改切入库", "0007", "手工入库", "0009", "换标入库", "0012" )), //出库单据类型 OUT_TYPE(MapOf.of("发货出库", "1001", "改切出库", "1003", "调拨出库", "1004", "拆箱出库", "1005", "返检出库", "1006", "超期报废", "1007", "退货报废", "1008", "质量问题报废", "1010", "其他报废", "1002", - "手工出库", "1009","管控出库", "1099" + "手工出库", "1009","管控出库", "1099","换标出库", "1012" )), //移库单据类型 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java index cc930f682..057bd8a24 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java @@ -174,7 +174,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl row.getBigDecimal("plan_qty")) .reduce(BigDecimal.ZERO, BigDecimal::add) .doubleValue(); - whereJson.put("total_qty",total_qty); + whereJson.put("total_qty", total_qty); StIvtIostorinv mstDao = updataMst(whereJson, null); this.save(mstDao); @@ -230,7 +230,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl disArr = outBussManageService.divIvt(dtlDao,ivtList); + List disArr = outBussManageService.divIvt(dtlDao, ivtList); disDaoList.addAll(disArr); } @@ -307,7 +307,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl dtlDaoList = iStIvtIostorinvdtlService.list( new QueryWrapper().lambda() .eq(StIvtIostorinvdtl::getIostorinv_id, mstDao.getIostorinv_id()) - .eq(StIvtIostorinvdtl::getIostorinvdtl_id,jsonDtl.getString("iostorinvdtl_id")) + .eq(StIvtIostorinvdtl::getIostorinvdtl_id, jsonDtl.getString("iostorinvdtl_id")) .le(StIvtIostorinvdtl::getBill_status, IOSEnum.BILL_STATUS.code("分配中")) .gt(StIvtIostorinvdtl::getUnassign_qty, 0) .orderByAsc(StIvtIostorinvdtl::getSeq_no) @@ -365,7 +365,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl ivtList = WQL.getWO("BST_OUTDIV").addParam("flag", "1").addParam("stor_id", mstDao.getStor_id().toString()) - .addParam("box_in", "('"+box_in+"')") + .addParam("box_in", "('" + box_in + "')") .process().getResultJSONArray(0).toJavaList(JSONObject.class); if (ObjectUtil.isEmpty(ivtList)) { @@ -397,7 +397,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl row.getString("task_id")) .distinct() .collect(Collectors.joining("','")); @@ -569,7 +569,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl> compositeKey = row -> Arrays.asList(row.getString("box_length"), row.getString("box_width"), - row.getString("box_high"),row.getString("sale_order_name"), + row.getString("box_high"), row.getString("sale_order_name"), row.getString("material_id") ); @@ -754,7 +754,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl> compositeKey = row -> Arrays.asList(row.getString("box_length"), row.getString("box_width"), - row.getString("box_high"),row.getString("sale_order_name"), + row.getString("box_high"), row.getString("sale_order_name"), row.getString("material_id") ); @@ -769,10 +769,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl disLikeList : groupingDisMap.values()) { // 调用任务生成处理 - List taskMangeList = createTaskMange2(disLikeList,mstDao.getIostorinv_id().toString(),allTransactionConsumer); + List taskMangeList = createTaskMange2(disLikeList, mstDao.getIostorinv_id().toString(), allTransactionConsumer); // 创建任务并下发一组任务 - createTask2(taskMangeList,disLikeList,whereJson.getString("point_code"),allTransactionConsumer); + createTask2(taskMangeList, disLikeList, whereJson.getString("point_code"), allTransactionConsumer); allTransactionConsumer.accept("finish"); } @@ -891,7 +891,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl subList = subTab.query("container_name IN ('" + pcsn_in + "') AND status = '"+SUBEnum.STATUS.code("入库")+"'") + List subList = subTab.query("container_name IN ('" + pcsn_in + "') AND status = '" + SUBEnum.STATUS.code("入库") + "'") .getResultJSONArray(0).toJavaList(JSONObject.class); // 子卷包装出入记录集合 - List suRebList = subRecordTab.query("container_name IN ('" + pcsn_in + "') AND status = '"+SUBEnum.STATUS.code("入库")+"' AND bill_code = '"+mstDao.getBill_code()+"'") + List suRebList = subRecordTab.query("container_name IN ('" + pcsn_in + "') AND status = '" + SUBEnum.STATUS.code("入库") + "' AND bill_code = '" + mstDao.getBill_code() + "'") .getResultJSONArray(0).toJavaList(JSONObject.class); for (int i = 0; i < disDaoList.size(); i++) { @@ -962,14 +962,18 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl paramLockList = new ArrayList<>(); @@ -1092,7 +1100,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl map = new HashMap<>(); @@ -1109,7 +1117,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl BigDecimal.valueOf(row.getPlan_qty().doubleValue())) .reduce(BigDecimal.ZERO, BigDecimal::add); - paramMap.put("stor_id",jsonAttr.getString("stor_id")); - paramMap.put("bill_status",IOSEnum.BILL_STATUS.code("分配中")); - paramMap.put("total_qty",total_qty); - paramMap.put("detail_count",disDaoList.size()); - paramMap.put("bill_type",IOSEnum.IN_TYPE.code("调拨入库")); - paramMap.put("biz_date",DateUtil.today()); - paramMap.put("out_stor_id",mstDao.getStor_id()); - paramMap.put("source_id",dtlDao.getVbeln()); + paramMap.put("stor_id", jsonAttr.getString("stor_id")); + paramMap.put("bill_status", IOSEnum.BILL_STATUS.code("分配中")); + paramMap.put("total_qty", total_qty); + paramMap.put("detail_count", disDaoList.size()); + paramMap.put("bill_type", IOSEnum.IN_TYPE.code("调拨入库")); + paramMap.put("biz_date", DateUtil.today()); + paramMap.put("out_stor_id", mstDao.getStor_id()); + paramMap.put("source_id", dtlDao.getVbeln()); paramMap.put("remark", ""); // 明细数据 @@ -1236,7 +1279,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl 生成任务的集合 */ - private JSONObject createTaskMange(List disLikeList, String iostorinv_id) { + private List createTaskMange(List disLikeList, String iostorinv_id) { // 仓位表 WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); @@ -1289,7 +1332,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl 生成任务的集合 */ - private List createTaskMange2(List disLikeList, String iostorinv_id, Consumer allTransactionConsumer) { + public List createTaskMange2(List disLikeList, String iostorinv_id, Consumer allTransactionConsumer) { // 仓位表 WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); @@ -1352,7 +1395,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl().lambda() - .ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成")) + .ne(StIvtIostorinvdis::getWork_status, IOSEnum.BILL_STATUS.code("完成")) .eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code")) ).get(0); @@ -1476,7 +1519,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl().lambda() - .ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成")) + .ne(StIvtIostorinvdis::getWork_status, IOSEnum.BILL_STATUS.code("完成")) .eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code")) ).get(0); @@ -1619,7 +1662,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl taskMangeList,List disLikeList, String point_code) { + private void createTask(List taskMangeList, List disLikeList, String point_code) { // 任务表 WQLObject taskService = WQLObject.getWQLObject("sch_base_task"); // 点位表 @@ -1731,19 +1774,20 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl disDaoList = disLikeList.stream() - .filter(row -> row.getString("struct_code").equals(json.getString("struct_code"))) - .map(row -> JSONObject.parseObject(JSONObject.toJSONString(row), StIvtIostorinvdis.class)) - .collect(Collectors.toList()); + String end_device_code = ""; + if ("1".equals(flag)) { + end_device_code = IsEndCode2(json); + } else { + end_device_code = IsEndCode(json); + } + + // 过滤此仓位的分配明细 + List disDaoList = disLikeList.stream() + .filter(row -> row.getString("struct_code").equals(json.getString("struct_code"))) + .map(row -> JSONObject.parseObject(JSONObject.toJSONString(row), StIvtIostorinvdis.class)) + .collect(Collectors.toList()); // 判断是否是异常货位 String remark = ""; @@ -1840,7 +1884,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl taskMangeList,List disLikeList, String point_code, Consumer allTransactionConsumer) { + public void createTask2(List taskMangeList, List disLikeList, String point_code, Consumer allTransactionConsumer) { // 任务表 WQLObject taskService = WQLObject.getWQLObject("sch_base_task"); // 点位表 @@ -1881,9 +1925,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl { @@ -1979,6 +2025,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl disDaoList) { @@ -2033,11 +2081,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl attrExceptionList = attrTab - .query("sect_code = 'BZC01' AND is_delete = '0' AND is_used = '1' and lock_type = '" + IOSEnum.LOCK_TYPE.code("出库异常锁") + "' and zdepth = '"+IOSEnum.ZDEPTH_STRUCT.code("浅")+"'") + .query("sect_code = 'BZC01' AND is_delete = '0' AND is_used = '1' and lock_type = '" + IOSEnum.LOCK_TYPE.code("出库异常锁") + "' and zdepth = '" + IOSEnum.ZDEPTH_STRUCT.code("浅") + "'") .getResultJSONArray(0).toJavaList(JSONObject.class); if (ObjectUtil.isEmpty(attrExceptionList)) { @@ -2220,7 +2274,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl 0) { @@ -356,6 +408,9 @@ public class InBoxManageServiceImpl implements InBoxManageService { new QueryWrapper().lambda() .eq(BstIvtBoxinfo::getBox_no, whereJson.getString("box_no")) ); + if (ObjectUtil.isEmpty(boxDao)) { + throw new BadRequestException("找不到木箱号[" + whereJson.getString("box_no") + "]的信息!"); + } // 下发桁架任务 JSONObject taskParam = new JSONObject(); taskParam.put("task_type", "010713"); @@ -660,6 +715,7 @@ public class InBoxManageServiceImpl implements InBoxManageService { return result; } + /** * 找一个空仓位(木箱区) * @@ -672,6 +728,7 @@ public class InBoxManageServiceImpl implements InBoxManageService { * } * @return JSONObject : 仓位对象 */ + @SneakyThrows public JSONObject getStruct(JSONObject jsonParam) { // 仓位表 WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); @@ -682,85 +739,110 @@ public class InBoxManageServiceImpl implements InBoxManageService { */ String block_num = jsonParam.getString("move_block_num"); - JSONArray structArray = new JSONArray(); + JSONObject jsonAttr = new JSONObject(); - if (ObjectUtil.isEmpty(block_num)) { - structArray = attrTab.query("IFNULL(storagevehicle_code,'') = '' " + - "AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " + - "AND storagevehicle_type = '" + jsonParam.getString("vehicle_type") + "'" + - "AND height = '" + jsonParam.getString("height") + "'" + - "AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonParam.getString("stor_id") + "' " + - "AND sect_id = '" + jsonParam.getString("sect_id") + "'").getResultJSONArray(0); - } else { - structArray = attrTab.query("IFNULL(storagevehicle_code,'') = '' " + - "AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " + - "AND storagevehicle_type = '" + jsonParam.getString("vehicle_type") + "'" + - "AND height = '" + jsonParam.getString("height") + "'" + - "AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonParam.getString("stor_id") + "' " + - "AND sect_id = '" + jsonParam.getString("sect_id") + "' AND block_num = '" + block_num + "'").getResultJSONArray(0); - } + RLock lock = redissonClient.getLock("getEmptyBox"); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + JSONArray structArray = new JSONArray(); - if (ObjectUtil.isEmpty(structArray)) { - notInRowList.clear(); - notInBlockList.clear(); - throw new BadRequestException("仓位不足!"); - } - - // 确定巷道:查看每个巷道最小木箱数的巷道,获取最小木箱数的巷道 - // 不是移库则需要找新巷道 - if (ObjectUtil.isEmpty(block_num)) { - block_num = getMinBlock(jsonParam); - } - - // 确定排:查看每排的木箱数量,找到数量最小的那排 - jsonParam.put("block_num", block_num); - String row_num = getMinRow(jsonParam); - - // 确定仓位: 找到仓位 - jsonParam.put("row_num", row_num); - JSONObject jsonAttr = queryStruct(jsonParam); - - // 如果是移库空并且仓位为空则报错 - if (ObjectUtil.isNotEmpty(jsonParam.getString("move_block_num")) && ObjectUtil.isEmpty(jsonAttr)) { - throw new BadRequestException("转库任务巷道"+block_num+"仓位不足!"); - } - - // 为空则新找巷道 - if (ObjectUtil.isEmpty(jsonAttr)) { - - jsonParam.put("flag", "1"); - notInBlockList.add(jsonParam.getString("block_num")); - - String join = "('" + String.join("','", notInBlockList) + "')"; - jsonParam.put("not_block", join); - - List blockList = WQL.getWO("BST_INBOX").addParamMap(jsonParam) - .process().getResultJSONArray(0).toJavaList(JSONObject.class); - - for (int i = 0; i < blockList.size(); i++) { - JSONObject json = blockList.get(i); - json.put("stor_id", jsonParam.getString("stor_id")); - json.put("sect_id", jsonParam.getString("sect_id")); - json.put("box_length", jsonParam.getString("box_length")); - json.put("box_width", jsonParam.getString("box_width")); - json.put("box_high", jsonParam.getString("box_high")); - json.put("vehicle_type", jsonParam.getString("vehicle_type")); - json.put("height", jsonParam.getString("height")); - - String row_num_2 = getMinRow(json); - json.put("row_num", row_num_2); - JSONObject jsonAttr_2 = queryStruct(json); - - if (ObjectUtil.isNotEmpty(jsonAttr_2)) { - jsonAttr = jsonAttr_2; - break; + String height = jsonParam.getString("height"); + if (height.equals("1")) { + height = "('1','2','3')"; + } else if (height.equals("2")) { + height = "('2','3')"; } else { - continue; + height = "('3')"; } + + if (ObjectUtil.isEmpty(block_num)) { + structArray = attrTab.query("IFNULL(storagevehicle_code,'') = '' " + + "AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " + + "AND storagevehicle_type = '" + jsonParam.getString("vehicle_type") + "'" + + "AND height IN " + height + " " + + "AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonParam.getString("stor_id") + "' " + + "AND sect_id = '" + jsonParam.getString("sect_id") + "'").getResultJSONArray(0); + } else { + structArray = attrTab.query("IFNULL(storagevehicle_code,'') = '' " + + "AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " + + "AND storagevehicle_type = '" + jsonParam.getString("vehicle_type") + "'" + + "AND height IN " + height + " " + + "AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonParam.getString("stor_id") + "' " + + "AND sect_id = '" + jsonParam.getString("sect_id") + "' AND block_num = '" + block_num + "'").getResultJSONArray(0); + } + + if (ObjectUtil.isEmpty(structArray)) { + notInRowList.clear(); + notInBlockList.clear(); + throw new BadRequestException("仓位不足!"); + } + + // 确定巷道:查看每个巷道最小木箱数的巷道,获取最小木箱数的巷道 + // 不是移库则需要找新巷道 + jsonParam.put("height", height); + if (ObjectUtil.isEmpty(block_num)) { + block_num = getMinBlock(jsonParam); + } + + // 确定排:查看每排的木箱数量,找到数量最小的那排 + jsonParam.put("block_num", block_num); + String row_num = getMinRow(jsonParam); + + // 确定仓位: 找到仓位 + jsonParam.put("row_num", row_num); + jsonAttr = queryStruct(jsonParam); + + // 如果是移库空并且仓位为空则报错 + if (ObjectUtil.isNotEmpty(block_num) && ObjectUtil.isEmpty(jsonAttr)) { + throw new BadRequestException("转库任务巷道"+block_num+"仓位不足!"); + } + + // 为空则新找巷道 + if (ObjectUtil.isEmpty(jsonAttr)) { + + jsonParam.put("flag", "1"); + notInBlockList.add(jsonParam.getString("block_num")); + + String join = "('" + String.join("','", notInBlockList) + "')"; + jsonParam.put("not_block", join); + + List blockList = WQL.getWO("BST_INBOX").addParamMap(jsonParam) + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + for (int i = 0; i < blockList.size(); i++) { + JSONObject json = blockList.get(i); + json.put("stor_id", jsonParam.getString("stor_id")); + json.put("sect_id", jsonParam.getString("sect_id")); + json.put("box_length", jsonParam.getString("box_length")); + json.put("box_width", jsonParam.getString("box_width")); + json.put("box_high", jsonParam.getString("box_high")); + json.put("vehicle_type", jsonParam.getString("vehicle_type")); + json.put("height", jsonParam.getString("height")); + + String row_num_2 = getMinRow(json); + json.put("row_num", row_num_2); + JSONObject jsonAttr_2 = queryStruct(json); + + if (ObjectUtil.isNotEmpty(jsonAttr_2)) { + jsonAttr = jsonAttr_2; + break; + } else { + continue; + } + } + } + notInRowList.clear(); + notInBlockList.clear(); + + } else { + throw new BadRequestException("存在正在分配的空木箱任务,请稍后再试!"); + } + } finally { + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); } } - notInRowList.clear(); - notInBlockList.clear(); return jsonAttr; } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java index 78a4ed71b..deef8eea5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java @@ -121,7 +121,7 @@ public class LashManageServiceImpl implements LashManageService { .query("package_box_sn = '" + boxDao.getBox_no() + "'") .uniqueResult(0); if (ObjectUtil.isEmpty(jsonSub)) { - throw new BadRequestException("子卷包装关系不存在:【"+boxDao.getBox_no()+"】"); + throw new BadRequestException("子卷包装关系不存在:【" + boxDao.getBox_no() + "】"); } //查询木箱对应的托盘绑定关系,并清除 @@ -270,30 +270,63 @@ public class LashManageServiceImpl implements LashManageService { Map> groupPointMap = executeArr.stream() .collect(Collectors.groupingBy(row -> row.getString("point_code2"))); + // 终点: 如果是异常口则直接生成到异常口的任务 String next_device_code = IOSEnum.OUT_HANGER.code("行架位1"); - String TWO_EXCEP = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXCEP").getValue(); - if (TWO_EXCEP.equals(IOSEnum.IS_NOTANDYES.code("是"))) { - next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口"); - } else { - // 判断是否是启用状态 - List jsonList = pointTab.query("region_code = 'BLKCK' AND is_used = '1'") - .getResultJSONArray(0).toJavaList(JSONObject.class); - - if (ObjectUtil.isEmpty(jsonList)) { - throw new BadRequestException("请检查CK2012/CK2017是否启用!"); - } - if (jsonList.size() == 2) { - List heapOne = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位1"))).orElse(new ArrayList<>()); - List heapTwo = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位2"))).orElse(new ArrayList<>()); - - - if (heapOne.size() > heapTwo.size()) { - next_device_code = IOSEnum.OUT_HANGER.code("行架位2"); + String TWO_EXC_OUT_TYPE = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXC_OUT_TYPE").getValue(); + if (TWO_EXC_OUT_TYPE.equals("1") || TWO_EXC_OUT_TYPE.equals("2")) { + //1-大托盘全部出到异常口;2-大托盘负载到异常口和正常出库口 + if (whereJson.getString("device_code").equals("CK2037")) { + if (TWO_EXC_OUT_TYPE.equals("1")) { + next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口"); } + if (TWO_EXC_OUT_TYPE.equals("2")) { + // 判断是否是启用状态 + List jsonList = pointTab.query("region_code = 'BLKCK' AND is_used = '1'") + .getResultJSONArray(0).toJavaList(JSONObject.class); + int min_task_num = 999; + next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口"); + + for (int i = 0; i < jsonList.size(); i++) { + String point_code = jsonList.get(i).getString("point_code"); + int task_num = Optional.ofNullable(groupPointMap.get(point_code)).orElse(new ArrayList<>()).size(); + if (task_num < min_task_num) { + next_device_code = point_code; + min_task_num = task_num; + } + } + int exc_task_num = Integer.parseInt(SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXC_OUT_TASK_NUM").getValue()); + List heapExc = Optional.ofNullable(groupPointMap.get(IOSEnum.EXCEP_OUT.code("异常出库口"))).orElse(new ArrayList<>()); + if (heapExc.size() < min_task_num && exc_task_num > heapExc.size()) { + next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口"); + } + } + } + } else { + String TWO_EXCEP = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXCEP").getValue(); + if (TWO_EXCEP.equals(IOSEnum.IS_NOTANDYES.code("是"))) { + next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口"); } else { - next_device_code = jsonList.get(0).getString("point_code"); + // 判断是否是启用状态 + List jsonList = pointTab.query("region_code = 'BLKCK' AND is_used = '1'") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + if (ObjectUtil.isEmpty(jsonList)) { + throw new BadRequestException("请检查CK2012/CK2017是否启用!"); + } + if (jsonList.size() == 2) { + List heapOne = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位1"))).orElse(new ArrayList<>()); + List heapTwo = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位2"))).orElse(new ArrayList<>()); + + + if (heapOne.size() > heapTwo.size()) { + next_device_code = IOSEnum.OUT_HANGER.code("行架位2"); + } + } else { + next_device_code = jsonList.get(0).getString("point_code"); + } + } } @@ -338,7 +371,7 @@ public class LashManageServiceImpl implements LashManageService { //判断木箱信息是否为空 String box_no = vehicle_ext.getString("pcsn"); if (StrUtil.isEmpty(box_no)) { - throw new BadRequestException("未查询到托盘:"+vehicle_code+"绑定了相关木箱!"); + throw new BadRequestException("未查询到托盘:" + vehicle_code + "绑定了相关木箱!"); } // 查询木箱信息 BstIvtBoxinfo boxinfo = iBstIvtBoxinfoService.getOne( @@ -391,7 +424,6 @@ public class LashManageServiceImpl implements LashManageService { result.put("isBinding", isBinding); - // TODO 是否贴标 result.put("isLabeling", IOSEnum.IS_SEND.code("否")); // TODO 贴标数量 @@ -415,7 +447,7 @@ public class LashManageServiceImpl implements LashManageService { result.put("labelingTemplate", labelingTemplate); Param label_num = null; //CK2019,CK2015 - if(device_code.equals("CK2019") || device_code.equals("CK2015")){ + if (device_code.equals("CK2019") || device_code.equals("CK2015")) { label_num = iSysParamService.findMinByCode(device_code); String print_code = label_num.getCode(); JSONObject print_info = WQLObject.getWQLObject("pdm_bi_printinfo").query("print_name = '" + print_code + "'").uniqueResult(0); @@ -423,7 +455,7 @@ public class LashManageServiceImpl implements LashManageService { print_jo.put("box_no", box_no); print_jo.put("print_type", print_info.getString("print_id")); int times = Integer.parseInt(labelingTemplateNum); - for(int i=0;i= Integer.valueOf(now_num)) { result.put("message", "标签纸数量过低,请更换!"); } - }else{ - throw new BadRequestException("贴标请求设备点位异常:"+device_code); + } else { + throw new BadRequestException("贴标请求设备点位异常:" + device_code); } } return result; diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java index 3409bdf8d..369245f58 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java @@ -128,7 +128,6 @@ public class OutBoxManageServiceImpl implements OutBoxManageService { request_param.put("containerType", jsonAttr.getString("storagevehicle_type")); jsonTaskParam.put("request_param", request_param.toString()); twoOutBoxTask.createTask(jsonTaskParam); - twoOutBoxTask.immediateNotifyAcs(null); // 锁定起点 jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("验箱出库锁")); attrTab.update(jsonAttr); @@ -840,7 +839,7 @@ public class OutBoxManageServiceImpl implements OutBoxManageService { .findFirst().orElse(null); if (ObjectUtil.isEmpty(jsonExtMove)) { - throw new BadRequestException("此移库木箱【"+jsonExtMove.getString("storagevehicle_code")+"】没有绑定托盘,请核查"); + throw new BadRequestException("此移库木箱【"+item.getString("storagevehicle_code")+"】没有绑定托盘,请核查"); } }); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INBOX.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INBOX.wql index 39528f7cc..b4d265b03 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INBOX.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INBOX.wql @@ -17,7 +17,7 @@ 输入.stor_id TYPEAS s_string 输入.sect_id TYPEAS s_string 输入.block_num TYPEAS s_string - 输入.height TYPEAS s_string + 输入.height TYPEAS f_string 输入.row_num TYPEAS s_string 输入.vehicle_type TYPEAS s_string 输入.box_length TYPEAS s_string @@ -65,7 +65,7 @@ AND attr.stor_id = 输入.stor_id AND attr.sect_id = 输入.sect_id AND attr.storagevehicle_type = 输入.vehicle_type - AND attr.height = 输入.height + AND attr.height IN 输入.height OPTION 输入.not_block <> "" attr.block_num NOT IN 输入.not_block @@ -94,10 +94,9 @@ AND attr.is_delete = '0' AND attr.stor_id = 输入.stor_id AND attr.sect_id = 输入.sect_id - AND attr.height = 输入.height AND IFNULL(attr.storagevehicle_code,'') <> '' AND attr.storagevehicle_type = 输入.vehicle_type - AND attr.height = 输入.height + AND attr.height IN 输入.height AND box.is_packing = '0' OPTION 输入.block_in <> "" @@ -126,7 +125,7 @@ AND attr.stor_id = 输入.stor_id AND attr.sect_id = 输入.sect_id AND attr.storagevehicle_type = 输入.vehicle_type - AND attr.height = 输入.height + AND attr.height IN 输入.height OPTION 输入.block_num <> "" attr.block_num = 输入.block_num ENDOPTION @@ -160,8 +159,8 @@ attr.row_num = 输入.row_num ENDOPTION AND attr.storagevehicle_type = 输入.vehicle_type - AND attr.height = 输入.height - order by attr.col_num DESC,attr.layer_num ASC,attr.zdepth DESC + AND attr.height IN 输入.height + order by attr.layer_num ASC,attr.col_num DESC,attr.zdepth DESC ENDSELECT ENDQUERY @@ -193,7 +192,7 @@ attr.row_num = 输入.row_num ENDOPTION AND attr.storagevehicle_type = 输入.vehicle_type - AND attr.height = 输入.height + AND attr.height IN 输入.height ENDSELECT ENDQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/common/utils/IdUtil.java b/lms/nladmin-system/src/main/java/org/nl/common/utils/IdUtil.java index 41f47c0b4..f6cad4404 100644 --- a/lms/nladmin-system/src/main/java/org/nl/common/utils/IdUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/common/utils/IdUtil.java @@ -1,8 +1,15 @@ package org.nl.common.utils; +import org.nl.config.SnowflakeProperties; +import org.nl.modules.wql.util.SpringContextHolder; + public class IdUtil { + public static Long getLongId() { - return cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId(); + SnowflakeProperties snowflakeProperties = SpringContextHolder.getBean(SnowflakeProperties.class); + Long workerId = snowflakeProperties.getWorkerId(); + Long datacenterId = snowflakeProperties.getDatacenterId(); + return cn.hutool.core.util.IdUtil.getSnowflake(workerId, datacenterId).nextId(); } public static String getStringId() { diff --git a/lms/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java b/lms/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java index e15fa7797..c58c580f5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java +++ b/lms/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java @@ -32,7 +32,7 @@ public class RedissonUtils { if (isLock){ process.apply(param); } else { - throw new BadRequestException("当前业务正在操作,稍后再试"); + throw new BadRequestException(key+"当前业务正在执行中"); } }catch (Exception ex){ throw ex; diff --git a/lms/nladmin-system/src/main/java/org/nl/config/GeneralConfig.java b/lms/nladmin-system/src/main/java/org/nl/config/GeneralConfig.java new file mode 100644 index 000000000..10451a855 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/config/GeneralConfig.java @@ -0,0 +1,41 @@ +package org.nl.config; + +import cn.hutool.core.net.NetUtil; +import cn.hutool.crypto.digest.MD5; +import org.springframework.context.SmartLifecycle; +import org.springframework.context.annotation.Configuration; + +import java.net.InetAddress; +import java.security.MessageDigest; +import java.util.LinkedHashSet; +import java.util.Optional; + + +public class GeneralConfig implements SmartLifecycle { + /** + * 雪花算法workId + */ + public static Long Ip_WorkId = 1L; + + + public void init(){ + + } + + @Override + public void start() { + LinkedHashSet inetAddresses = NetUtil.localAddressList(null); + Optional any = inetAddresses.stream().findAny(); + + } + + @Override + public void stop() { + + } + + @Override + public boolean isRunning() { + return false; + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/config/SnowflakeProperties.java b/lms/nladmin-system/src/main/java/org/nl/config/SnowflakeProperties.java new file mode 100644 index 000000000..7c1aab733 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/config/SnowflakeProperties.java @@ -0,0 +1,13 @@ +package org.nl.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "snowflake") +public class SnowflakeProperties { + private long workerId; // 对应 snowflake.worker-id + private long datacenterId; // 对应 snowflake.datacenter-id +} diff --git a/lms/nladmin-system/src/main/java/org/nl/config/TlogIdGenerator.java b/lms/nladmin-system/src/main/java/org/nl/config/TlogIdGenerator.java index d2a73ba07..c6b72b22b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/config/TlogIdGenerator.java +++ b/lms/nladmin-system/src/main/java/org/nl/config/TlogIdGenerator.java @@ -1,7 +1,7 @@ package org.nl.config; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import com.yomahub.tlog.id.TLogIdGenerator; import java.util.UUID; @@ -11,7 +11,7 @@ public class TlogIdGenerator extends TLogIdGenerator { public String generateTraceId() { String idStr; try { - idStr = IdUtil.getSnowflake(1, 1).nextIdStr(); + idStr = IdUtil.getStringId(); }catch (Exception ex){ idStr = String.valueOf(System.currentTimeMillis()); } diff --git a/lms/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskExecutePool.java b/lms/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskExecutePool.java index 9eb668558..287fdb41b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskExecutePool.java +++ b/lms/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskExecutePool.java @@ -45,6 +45,7 @@ public class AsyncTaskExecutePool implements AsyncConfigurer { } @Override + @Bean("pushExecutor") public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); //核心线程池大小 diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageImageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageImageServiceImpl.java index 52b1e59a6..534daf647 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageImageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageImageServiceImpl.java @@ -1,7 +1,7 @@ //package org.nl.modules.logicflow.service.impl; // //import cn.hutool.core.date.DateUtil; -//import cn.hutool.core.util.IdUtil; +//import org.nl.common.utils.IdUtil; //import com.alibaba.fastjson.JSONArray; //import com.alibaba.fastjson.JSONObject; //import lombok.RequiredArgsConstructor; diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java index c6dcd96ee..061ef7be1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/logicflow/service/impl/StageServiceImpl.java @@ -1,7 +1,7 @@ //package org.nl.modules.logicflow.service.impl; // //import cn.hutool.core.date.DateUtil; -//import cn.hutool.core.util.IdUtil; +//import org.nl.common.utils.IdUtil; //import com.alibaba.fastjson.JSONArray; //import com.alibaba.fastjson.JSONObject; //import lombok.RequiredArgsConstructor; diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/CodeDetailServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/CodeDetailServiceImpl.java index f2c32bd0c..809be6132 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/CodeDetailServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/CodeDetailServiceImpl.java @@ -1,7 +1,7 @@ //package org.nl.modules.system.service.impl; // //import cn.hutool.core.date.DateUtil; -//import cn.hutool.core.util.IdUtil; +//import org.nl.common.utils.IdUtil; //import com.alibaba.fastjson.JSONObject; //import lombok.RequiredArgsConstructor; //import org.nl.common.utils.SecurityUtils; diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java index 17a82a645..5ccd3a33b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java @@ -1,7 +1,7 @@ //package org.nl.modules.system.service.impl; // //import cn.hutool.core.date.DateUtil; -//import cn.hutool.core.util.IdUtil; +//import org.nl.common.utils.IdUtil; //import cn.hutool.core.util.StrUtil; //import com.alibaba.fastjson.JSONArray; //import com.alibaba.fastjson.JSONObject; diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/tools/service/impl/LocalStorageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/tools/service/impl/LocalStorageServiceImpl.java index a10979465..0725e8853 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/tools/service/impl/LocalStorageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/tools/service/impl/LocalStorageServiceImpl.java @@ -16,7 +16,7 @@ //package org.nl.modules.tools.service.impl; // //import cn.hutool.core.date.DateUtil; -//import cn.hutool.core.util.IdUtil; +//import org.nl.common.utils.IdUtil; //import cn.hutool.core.util.ObjectUtil; //import cn.hutool.core.util.StrUtil; //import com.alibaba.fastjson.JSONArray; @@ -261,7 +261,7 @@ // } // // JSONObject jo = new JSONObject(); -// jo.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); +// jo.put("workorder_id", IdUtil.getLongId()); // jo.put("package_box_sn", package_box_sn); // jo.put("sap_pcsn", sap_pcsn); //// jo.put("box_weight", BoxWeight); @@ -329,7 +329,7 @@ // JSONObject box_row = box_rows.getJSONObject(j); // JSONObject ivt_jo = new JSONObject(); // //插入库存数据 -// ivt_jo.put("stockrecord_id", IdUtil.getSnowflake(1, 1).nextId()); +// ivt_jo.put("stockrecord_id", IdUtil.getLongId()); // ivt_jo.put("struct_id", struct.getString("struct_id")); // ivt_jo.put("struct_code", struct.getString("struct_code")); // ivt_jo.put("struct_name", struct.getString("struct_name")); diff --git a/lms/nladmin-system/src/main/java/org/nl/start/Init.java b/lms/nladmin-system/src/main/java/org/nl/start/Init.java index 0bc92c1b1..0aa7b8191 100644 --- a/lms/nladmin-system/src/main/java/org/nl/start/Init.java +++ b/lms/nladmin-system/src/main/java/org/nl/start/Init.java @@ -1,11 +1,12 @@ package org.nl.start; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; + import com.alibaba.fastjson.JSONObject; import com.sun.org.apache.bcel.internal.generic.GETSTATIC; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.IdUtil; import org.nl.modules.wql.core.bean.WQLObject; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; @@ -59,7 +60,7 @@ public class Init implements ApplicationRunner { for (int i = 1; i < col_all + 1; i++) { JSONObject json = new JSONObject(); - json.put("struct_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("struct_id", IdUtil.getLongId()); // 列 String col_num = i + ""; @@ -105,7 +106,7 @@ public class Init implements ApplicationRunner { // 新增点位 JSONObject jsonPoint = new JSONObject(); - jsonPoint.put("point_id",IdUtil.getSnowflake(1,1).nextId()); + jsonPoint.put("point_id",IdUtil.getLongId()); jsonPoint.put("point_code", json.getString("struct_code")); jsonPoint.put("point_name", json.getString("struct_name")); jsonPoint.put("region_id", json.getString("sect_id")); @@ -167,7 +168,7 @@ public class Init implements ApplicationRunner { for (int i = 1; i < col_num + 1; i++) { JSONObject json = new JSONObject(); - json.put("struct_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("struct_id", IdUtil.getLongId()); // 排 String row_code = String.valueOf(row_num); @@ -226,7 +227,7 @@ public class Init implements ApplicationRunner { // 新增点位 JSONObject jsonPoint = new JSONObject(); - jsonPoint.put("point_id",IdUtil.getSnowflake(1,1).nextId()); + jsonPoint.put("point_id",IdUtil.getLongId()); jsonPoint.put("point_code", json.getString("struct_code")); jsonPoint.put("point_name", json.getString("struct_name")); jsonPoint.put("region_id", json.getString("sect_id")); @@ -270,7 +271,7 @@ public class Init implements ApplicationRunner { for (int i = 1; i <= 3000; i++) { JSONObject json = new JSONObject(); - json.put("struct_id", IdUtil.getSnowflake(1,1).nextId()); + json.put("struct_id", IdUtil.getLongId()); if (i < 10) { json.put("struct_code", "91-"+"000"+i+"-01"); @@ -314,7 +315,7 @@ public class Init implements ApplicationRunner { // 新增点位 JSONObject jsonPoint = new JSONObject(); - jsonPoint.put("point_id",IdUtil.getSnowflake(1,1).nextId()); + jsonPoint.put("point_id",IdUtil.getLongId()); jsonPoint.put("point_code", json.getString("struct_code")); jsonPoint.put("point_name", json.getString("struct_name")); jsonPoint.put("region_id", json.getString("sect_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleDetailServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleDetailServiceImpl.java index 817050f92..13873da4d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleDetailServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleDetailServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.system.service.coderule.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -57,7 +57,7 @@ public class SysCodeRuleDetailServiceImpl extends ServiceImpl impleme if (ObjectUtil.isNotEmpty(oldDict)) { throw new BadRequestException("字典[" + dict.getCode() + "]已存在"); } - dict.setDict_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + dict.setDict_id(IdUtil.getStringId()); dict.setCreate_id(currentUserId); dict.setCreate_name(nickName); dict.setCreate_time(date); @@ -161,7 +161,7 @@ public class SysDictServiceImpl extends ServiceImpl impleme return; } // 插入新的数据 - dict.setDict_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + dict.setDict_id(IdUtil.getStringId()); dict.setCode(dic.getCode()); dict.setName(dic.getName()); dict.setCreate_id(SecurityUtils.getCurrentUserId()); diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/generator/dao/CodeColumnConfig.java b/lms/nladmin-system/src/main/java/org/nl/system/service/generator/dao/CodeColumnConfig.java index 3041172b7..9941e63dc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/generator/dao/CodeColumnConfig.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/generator/dao/CodeColumnConfig.java @@ -1,6 +1,6 @@ package org.nl.system.service.generator.dao; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -81,7 +81,7 @@ public class CodeColumnConfig implements Serializable { */ public static CodeColumnConfig createDefault(String tableName, ColumnInfo config) { CodeColumnConfig columnConfig = new CodeColumnConfig(); - columnConfig.setColumn_id(IdUtil.getSnowflake(1,1).nextIdStr()); + columnConfig.setColumn_id(IdUtil.getStringId()); columnConfig.setTable_name(tableName); columnConfig.setColumn_name(config.getColumn_name()); columnConfig.setColumn_type(config.getColumn_type()); diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/generator/impl/CodeGenConfigServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/system/service/generator/impl/CodeGenConfigServiceImpl.java index 7d0f5af1a..1effbfdc7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/generator/impl/CodeGenConfigServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/generator/impl/CodeGenConfigServiceImpl.java @@ -1,6 +1,6 @@ package org.nl.system.service.generator.impl; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -63,7 +63,7 @@ public class CodeGenConfigServiceImpl extends ServiceImpl impleme logDto.setUsername(username); logDto.setParams(getParameter(method, joinPoint.getArgs())); logDto.setBrowser(browser); - logDto.setLog_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + logDto.setLog_id(IdUtil.getStringId()); logDto.setCreate_time(DateUtil.now()); logMapper.insert(logDto); } diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java index 52e1a3f74..40429b3fd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.system.service.notice.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -78,7 +78,7 @@ public class SysNoticeServiceImpl extends ServiceImpl impl if (ObjectUtil.isNotEmpty(code)) { throw new BadRequestException("编码不能一致"); } - param.setId(IdUtil.getSnowflake(1, 1).nextIdStr()); + param.setId(IdUtil.getStringId()); String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/permission/impl/SysDataPermissionServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/system/service/permission/impl/SysDataPermissionServiceImpl.java index 8b62f83b9..595343535 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/permission/impl/SysDataPermissionServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/permission/impl/SysDataPermissionServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.system.service.permission.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -62,7 +62,7 @@ public class SysDataPermissionServiceImpl extends ServiceImpl impl String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); // 插入 - sysRole.setRole_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + sysRole.setRole_id(IdUtil.getStringId()); sysRole.setCreate_id(userId); sysRole.setCreate_name(nickName); sysRole.setCreate_time(now); diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/tools/impl/ToolLocalStorageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/system/service/tools/impl/ToolLocalStorageServiceImpl.java index 34066c7ea..6b7324742 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/tools/impl/ToolLocalStorageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/tools/impl/ToolLocalStorageServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.system.service.tools.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -60,7 +60,7 @@ public class ToolLocalStorageServiceImpl extends ServiceImpl queryDeviceAll(@RequestParam Map whereJson, Pageable page) { return new ResponseEntity<>(faultDeviceService.queryDeviceAll(whereJson, page), HttpStatus.OK); @@ -73,4 +73,18 @@ public class FaultDeviceController { faultDeviceService.syncInfo(); return new ResponseEntity<>(HttpStatus.OK); } + + @GetMapping("/getAllerrorDevice") + @Log("查询所有设备故障") + public ResponseEntity getAllerrorDevice(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(faultDeviceService.getAllerrorDevice(whereJson, page), HttpStatus.OK); + } + + + @GetMapping("/getErrorDeviceInfo") + @Log("查询所有设备故障") + public ResponseEntity getErrorDeviceInfo(@RequestBody JSONObject jsonObject) { + return new ResponseEntity<>(faultDeviceService.getErrorDeviceInfo(jsonObject), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/FaultDeviceService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/FaultDeviceService.java index 8d79ac70a..6ca83b162 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/FaultDeviceService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/FaultDeviceService.java @@ -1,6 +1,8 @@ package org.nl.wms.basedata.master.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.nl.b_lms.pdm.error.model.DeviceFault; import org.nl.wms.basedata.master.service.dto.CustomerbaseDto; import org.springframework.data.domain.Pageable; @@ -82,4 +84,17 @@ public interface FaultDeviceService { * 同步信息 */ void syncInfo(); + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map getAllerrorDevice(Map whereJson, Pageable page); + + List getErrorDeviceInfo(JSONObject whereJson); + + List filterErrorDevice(JSONArray rows); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/ClassstandardServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/ClassstandardServiceImpl.java index 74c727342..6b26e4329 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/ClassstandardServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/ClassstandardServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.db.Db; @@ -108,7 +108,7 @@ public class ClassstandardServiceImpl implements ClassstandardService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setClass_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setClass_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/CustomerbaseServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/CustomerbaseServiceImpl.java index 03f1aab13..146edfa3d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/CustomerbaseServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/CustomerbaseServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -94,7 +94,7 @@ public class CustomerbaseServiceImpl implements CustomerbaseService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setCust_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCust_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/FaultDeviceServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/FaultDeviceServiceImpl.java index e400cfff2..0164aa894 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/FaultDeviceServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/FaultDeviceServiceImpl.java @@ -3,14 +3,19 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.b_lms.pdm.error.model.DeviceFault; +import org.nl.b_lms.pdm.error.service.FaultManager; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; @@ -19,13 +24,16 @@ import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.basedata.master.service.FaultDeviceService; import org.nl.wms.basedata.master.service.dto.CustomerbaseDto; +import org.nl.wms.basedata.st.service.UserDeviceService; import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Map; +import javax.swing.*; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; /** * @author liuxy @@ -37,6 +45,9 @@ import java.util.Map; @Slf4j public class FaultDeviceServiceImpl implements FaultDeviceService { + @Autowired + private FaultManager faultManager; + @Override public Map queryAll(Map whereJson, Pageable page) { String fault_code = MapUtil.getStr(whereJson, "fault_code"); @@ -67,8 +78,8 @@ public class FaultDeviceServiceImpl implements FaultDeviceService { JSONObject param = new JSONObject(); if (ObjectUtil.isNotEmpty(device_code)) { JSONObject device_jo = WQLObject.getWQLObject("EM_BI_MonitorDevice").query("device_code = '" + device_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(device_jo)){ - throw new BadRequestException("未查询到设备号为["+device_code+"]的设备信息!"); + if (ObjectUtil.isEmpty(device_jo)) { + throw new BadRequestException("未查询到设备号为[" + device_code + "]的设备信息!"); } param.put("device_code", device_code); param.put("product_area", device_jo.getString("product_area")); @@ -235,7 +246,7 @@ public class FaultDeviceServiceImpl implements FaultDeviceService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setCust_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCust_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); @@ -307,7 +318,7 @@ public class FaultDeviceServiceImpl implements FaultDeviceService { jsonFault.put("update_time", DateUtil.now()); faultTab.update(jsonFault); } else { - jsonDtl.put("fault_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("fault_id", IdUtil.getLongId()); jsonDtl.put("create_id", currentUserId); jsonDtl.put("create_name", nickName); jsonDtl.put("create_time", DateUtil.now()); @@ -318,4 +329,154 @@ public class FaultDeviceServiceImpl implements FaultDeviceService { } } } + + public Map getAllerrorDevice(Map whereJson, Pageable page) { + String region_code = MapUtil.getStr(whereJson, "region_code"); + + UserDeviceService userDeviceService = SpringContextHolder.getBean(UserDeviceService.class); + + String inArea = userDeviceService.getInArea(); + + String query_sql = "region_code in " + inArea + ""; + if (StrUtil.isNotEmpty(region_code)) { + query_sql += " and region_code='" + region_code + "'"; + } + + WmsToAcsServiceImpl bean = SpringContextHolder.getBean(WmsToAcsServiceImpl.class); + + + //查询当前人员对应的设备是多少 + JSONArray b1_rows = WQLObject.getWQLObject("em_bi_monitordevice").query(query_sql + "AND product_area = 'B1' AND is_crux = '1'").getResultJSONArray(0); + List b1List = new ArrayList<>(); + for (int i = 0; i < b1_rows.size(); i++) { + JSONObject row = b1_rows.getJSONObject(i); + b1List.add(row.getString("device_code")); + } + + JSONObject result = bean.getDeviceErrorInfo(b1List, "B1"); + // 调用acs接口获取设备 + JSONArray b1_data = result.getJSONArray("data"); + + JSONArray blk_rows = WQLObject.getWQLObject("em_bi_monitordevice").query(query_sql + "AND product_area = 'BLK' AND is_crux = '1'").getResultJSONArray(0); + List blkList = new ArrayList<>(); + for (int i = 0; i < blk_rows.size(); i++) { + JSONObject row = blk_rows.getJSONObject(i); + blkList.add(row.getString("device_code")); + } + + JSONObject result2 = bean.getDeviceErrorInfo(blkList, "BLK"); + // 调用acs接口获取设备 + JSONArray blk_data = result2.getJSONArray("data"); + + JSONArray data = new JSONArray(); + if (ObjectUtil.isNotEmpty(b1_data)) { + for (int i = 0; i < b1_rows.size(); i++) { + JSONObject row = b1_rows.getJSONObject(i); + for (int j = 0; j < b1_data.size(); j++) { + JSONObject b1 = b1_data.getJSONObject(j); + if (b1.getString("device_code").equals(row.getString("device_code"))) { + b1.put("region_code", row.getString("region_code")); + data.add(b1); + } + } + } + } + if (ObjectUtil.isNotEmpty(blk_data)) { + for (int i = 0; i < blk_rows.size(); i++) { + JSONObject row = blk_rows.getJSONObject(i); + for (int j = 0; j < blk_data.size(); j++) { + JSONObject blk = blk_data.getJSONObject(j); + if (blk.getString("device_code").equals(row.getString("device_code"))) { + blk.put("region_code", row.getString("region_code")); + data.add(blk); + } + } + } + } + //查询内包间套轴对接位的异常 + if (inArea.contains("CBJ") && (StrUtil.isEmpty(region_code) || region_code.equals("CBJ"))) { + IBstIvtCutpointivtService bean2 = SpringContextHolder.getBean(IBstIvtCutpointivtService.class); + List list = bean2.list(new LambdaQueryWrapper() + .eq(BstIvtCutpointivt::getPoint_type, "1") + .ne(BstIvtCutpointivt::getRemark, "") + .isNotNull(BstIvtCutpointivt::getRemark) + .eq(BstIvtCutpointivt::getPoint_status, "2")); + list.stream().forEach(a -> { + JSONObject row = new JSONObject(); + row.put("device_code", a.getPoint_code()); + row.put("device_name", a.getPoint_code()); + row.put("region_code", "CBJ"); + row.put("error_code", ""); + row.put("error_message", a.getRemark()); + data.add(row); + }); + } + + JSONObject json = new JSONObject(); + json.put("content", data); + return json; + } + + @Override + public List getErrorDeviceInfo(JSONObject whereJson) { + WmsToAcsServiceImpl bean = SpringContextHolder.getBean(WmsToAcsServiceImpl.class); + //查询当前人员对应的设备是多少 + JSONArray b1_rows = WQLObject.getWQLObject("em_bi_monitordevice").query("product_area = 'B1' AND is_crux = '1'").getResultJSONArray(0); + List b1List = new ArrayList<>(); + for (int i = 0; i < b1_rows.size(); i++) { + JSONObject row = b1_rows.getJSONObject(i); + b1List.add(row.getString("device_code")); + } + + JSONObject result = bean.getDeviceErrorInfo(b1List, "B1"); + // 调用acs接口获取设备 + JSONArray b1_data = result.getJSONArray("data"); + + JSONArray blk_rows = WQLObject.getWQLObject("em_bi_monitordevice").query("product_area = 'BLK' AND is_crux = '1'").getResultJSONArray(0); + List blkList = new ArrayList<>(); + for (int i = 0; i < blk_rows.size(); i++) { + JSONObject row = blk_rows.getJSONObject(i); + blkList.add(row.getString("device_code")); + } + + JSONObject result2 = bean.getDeviceErrorInfo(blkList, "BLK"); + // 调用acs接口获取设备 + JSONArray blk_data = result2.getJSONArray("data"); + b1_data.addAll(blk_data); + + + List deviceFaultList = new ArrayList<>(); + for (int i = 0; i < b1_data.size(); i++) { + JSONObject row = b1_data.getJSONObject(i); + DeviceFault deviceFault = new DeviceFault(); + deviceFault.setDeviceCode(row.getString("device_code")); + deviceFault.setDeviceName(row.getString("device_name")); + deviceFault.setErrorCode(row.getString("error_code")); + deviceFault.setErrorMessage(row.getString("error_message")); + deviceFaultList.add(deviceFault); + } + for (int i = 0; i < blk_data.size(); i++) { + JSONObject row = blk_data.getJSONObject(i); + DeviceFault deviceFault = new DeviceFault(); + deviceFault.setDeviceCode(row.getString("device_code")); + deviceFault.setDeviceName(row.getString("device_name")); + deviceFault.setErrorCode(row.getString("error_code")); + deviceFault.setErrorMessage(row.getString("error_message")); + deviceFaultList.add(deviceFault); + } + return deviceFaultList; + } + + public List filterErrorDevice(JSONArray rows) { + ConcurrentHashMap memory = faultManager.memory; + List list = new ArrayList<>(); + Set memKeys = new HashSet<>(memory.keySet()); + for (int i = 0; i < rows.size(); i++) { + JSONObject jsonObject = rows.getJSONObject(i); + if (memKeys.contains(jsonObject.getString("device_code"))) { + list.add(memory.get(jsonObject.getString("device_code"))); + } + } + return list; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/InterfacebackServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/InterfacebackServiceImpl.java index c16f7366f..094d309b0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/InterfacebackServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/InterfacebackServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -100,7 +100,7 @@ public class InterfacebackServiceImpl implements InterfacebackService { @Override @Transactional(rollbackFor = Exception.class) public void create(InterfacebackDto dto) { - dto.setInterface_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setInterface_id(IdUtil.getLongId()); WQLObject wo = WQLObject.getWQLObject("md_pb_interfaceback"); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java index 75d52607a..7a83e7333 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -147,7 +147,7 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setMaterial_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setMaterial_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/SalesServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/SalesServiceImpl.java index c35e148a7..c7bd9c457 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/SalesServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/SalesServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -89,7 +89,7 @@ public class SalesServiceImpl implements SalesService { } } - dto.setSales_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setSales_id(IdUtil.getLongId()); WQLObject wo = WQLObject.getWQLObject("md_cs_areasalesinfo"); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java index 67a495ef7..215fe6d0e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -146,7 +146,7 @@ public class StoragevehicleinfoServiceImpl implements StoragevehicleinfoService int num = MapUtil.getInt(map, "num"); for (int i = 0; i < num; i++) { StoragevehicleinfoDto dto = new StoragevehicleinfoDto(); - dto.setStoragevehicle_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setStoragevehicle_id(IdUtil.getLongId()); dto.setStoragevehicle_code(CodeUtil.getNewCode(code)); dto.setCreate_id(currentUserId); dto.setStoragevehicle_name(dto.getStoragevehicle_code()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/SupplierbaseServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/SupplierbaseServiceImpl.java index 336780113..7b42c7e70 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/SupplierbaseServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/SupplierbaseServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -100,7 +100,7 @@ public class SupplierbaseServiceImpl implements SupplierbaseService { dto.setClass_name(classDto.getClass_name()); } - dto.setSupp_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setSupp_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/TransportationbaseServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/TransportationbaseServiceImpl.java index ae99387ee..f8d30a038 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/TransportationbaseServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/TransportationbaseServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -97,7 +97,7 @@ public class TransportationbaseServiceImpl implements TransportationbaseService String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setCust_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCust_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/UnitServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/UnitServiceImpl.java index 7034e07ad..91acc07e4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/UnitServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/UnitServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.master.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -90,7 +90,7 @@ public class UnitServiceImpl implements UnitService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setMeasure_unit_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setMeasure_unit_id(IdUtil.getLongId()); dto.setCreate_id(String.valueOf(currentUserId)); dto.setCreate_name(nickName); dto.setUpdate_optid(String.valueOf(currentUserId)); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/StoreIvtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/StoreIvtServiceImpl.java index 80ca66474..74a4712bb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/StoreIvtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/StoreIvtServiceImpl.java @@ -1,10 +1,10 @@ package org.nl.wms.basedata.st; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; @@ -39,7 +39,7 @@ public class StoreIvtServiceImpl { throw new BadRequestException("变动量不能都为0!"); } JSONObject param = new JSONObject(); - param.put("change_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("change_id", IdUtil.getLongId()); param.put("struct_id", struct_id); param.put("struct_code", pointObj.getString("point_code")); param.put("struct_name", pointObj.getString("point_name")); @@ -106,7 +106,7 @@ public class StoreIvtServiceImpl { // 31-加待入; 32-减待入 33减库存可用数可以为0 34同时减(库存和数量) 考虑负数 35 加库存 考虑负数 if (stackIvtObj == null) {// 说明该货位上还没有该物料,直接插入记录即可 JSONObject json = new JSONObject(); - json.put("stockrecord_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("stockrecord_id", IdUtil.getLongId()); json.put("struct_id", param.getString("struct_id")); json.put("struct_name", param.getString("struct_name")); json.put("material_id", param.getString("material_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/UserDeviceController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/UserDeviceController.java new file mode 100644 index 000000000..d542e3bd9 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/UserDeviceController.java @@ -0,0 +1,39 @@ +package org.nl.wms.basedata.st.rest; + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.annotation.Log; +import org.nl.wms.basedata.st.service.UserAreaService; +import org.nl.wms.basedata.st.service.UserDeviceService; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequiredArgsConstructor + +@RequestMapping("/api/userDevice") +@Slf4j +public class UserDeviceController { + private final UserDeviceService userDeviceService; + + @PostMapping("/queryUserDevice") + @Log("查询用户对应区域") + + public ResponseEntity queryUserArea(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(userDeviceService.queryUserDevice(whereJson), HttpStatus.OK); + } + + @PostMapping("/save") + @Log("保存用户仓库信息") + + public ResponseEntity save(@RequestBody JSONObject whereJson) { + userDeviceService.save(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/UserDeviceService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/UserDeviceService.java new file mode 100644 index 000000000..14a119f73 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/UserDeviceService.java @@ -0,0 +1,27 @@ +package org.nl.wms.basedata.st.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.springframework.data.domain.Pageable; + +import java.util.Map; + +public interface UserDeviceService { + + /** + * 查询用户对应仓库 + * + * @param whereJson / + */ + JSONArray queryUserDevice(JSONObject whereJson); + + /** + * 保存 + * + * @param whereJson / + */ + void save(JSONObject whereJson); + + String getInArea(); + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/SectattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/SectattrServiceImpl.java index a0317a3bc..be02aa3f7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/SectattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/SectattrServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.st.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -107,7 +107,7 @@ public class SectattrServiceImpl implements SectattrService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setSect_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setSect_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java index 5a22b65b4..778f00d58 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.st.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -89,7 +89,7 @@ public class StorattrServiceImpl implements StorattrService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setStor_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setStor_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java index 1cee1a6c0..1260f083c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.basedata.st.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -141,7 +141,7 @@ public class StructattrServiceImpl implements StructattrService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setStruct_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setStruct_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); @@ -686,7 +686,7 @@ public class StructattrServiceImpl implements StructattrService { for (int i = createNum_start; i <= createNum; i++) { JSONObject json = new JSONObject(); - json.put("struct_id", IdUtil.getSnowflake(1,1).nextId()); + json.put("struct_id", IdUtil.getLongId()); if (i < 10) { json.put("struct_code", prefix + "-"+"000"+i+"-01"); @@ -730,7 +730,7 @@ public class StructattrServiceImpl implements StructattrService { // 新增点位 JSONObject jsonPoint = new JSONObject(); - jsonPoint.put("point_id",IdUtil.getSnowflake(1,1).nextId()); + jsonPoint.put("point_id",IdUtil.getLongId()); jsonPoint.put("point_code", json.getString("struct_code")); jsonPoint.put("point_name", json.getString("struct_name")); jsonPoint.put("region_id", json.getString("sect_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java index 65df59c5f..2c7f5d9b2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.basedata.st.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; @@ -227,7 +227,7 @@ public class StructivtServiceImpl implements StructivtService { @Transactional(rollbackFor = Exception.class) public void create(StructivtDto dto) { String now = DateUtil.now(); - dto.setStockrecord_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setStockrecord_id(IdUtil.getLongId()); dto.setInstorage_time(now); WQLObject wo = WQLObject.getWQLObject("st_ivt_structivt"); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructrelamaterialServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructrelamaterialServiceImpl.java index 5991abb72..e0af9f86c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructrelamaterialServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructrelamaterialServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.basedata.st.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -94,7 +94,7 @@ public class StructrelamaterialServiceImpl implements StructrelamaterialService String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setMaterial_type_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setMaterial_type_id(IdUtil.getLongId()); dto.setSet_name(nickName); dto.setSet_time(now); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/UserDeviceServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/UserDeviceServiceImpl.java new file mode 100644 index 000000000..d48300896 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/UserDeviceServiceImpl.java @@ -0,0 +1,92 @@ +package org.nl.wms.basedata.st.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.WqlUtil; +import org.nl.wms.basedata.st.service.UserAreaService; +import org.nl.wms.basedata.st.service.UserDeviceService; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * PC端出入库新增 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class UserDeviceServiceImpl implements UserDeviceService { + + + @Override + public JSONArray queryUserDevice(JSONObject whereJson) { + String user_id = whereJson.getString("user_id"); + JSONArray rows = WQLObject.getWQLObject("st_ivt_userdevice").query("user_id = '" + user_id + "'").getResultJSONArray(0); + return rows; + } + + @Override + public void save(JSONObject whereJson) { + JSONObject jo = whereJson.getJSONObject("jo"); + JSONArray rows = whereJson.getJSONArray("rows"); + + String user_id = jo.getString("user_id"); + + WQLObject.getWQLObject("st_ivt_userdevice").delete("user_id ='" + user_id + "'"); + for (int i = 0; i < rows.size(); i++) { + JSONObject row = rows.getJSONObject(i); + String region_code = row.getString("region_code"); + JSONObject user_device = new JSONObject(); + user_device.put("region_code", region_code); + user_device.put("user_id", user_id); + WQLObject.getWQLObject("st_ivt_userdevice").insert(user_device); + } + } + + @Override + public String getInArea() { + String currentUserId = SecurityUtils.getCurrentUserId().toString(); + WQLObject userdeviceTab = WQLObject.getWQLObject("st_ivt_userdevice"); + + JSONArray userStorArr = userdeviceTab.query("user_id = '" + currentUserId + "'").getResultJSONArray(0); + int size = userStorArr.size(); + // 将仓库id拼成字符串 + String in_stor_id = ""; + + for (int i = 0; i < userStorArr.size(); i++) { + JSONObject json = userStorArr.getJSONObject(i); + + if (size == 1) { + // 如果只有一条记录 + in_stor_id = "('" + json.getString("region_code") + "')"; + } else { + if (i == 0) { + // 第一条记录拼接 + in_stor_id = "('" + json.getString("region_code") + "','"; + } else { + if ((size - 1) == i) { + // 最后一条记录拼接 + in_stor_id += json.getString("region_code") + "')"; + } else { + in_stor_id += json.getString("region_code") + "','"; + } + } + } + } + + if (ObjectUtil.isEmpty(in_stor_id)) { + in_stor_id = "('')"; + } + return in_stor_id; + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index 7451b9b98..bf82ee931 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls differ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 629d18949..fdbcea9b4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -113,6 +113,7 @@ public class AcsToWmsController { return new ResponseEntity<>(acsToWmsService.actionFinishRequest(jo), HttpStatus.OK); } + /** 二期二楼取货完成上报 */ @PostMapping("/actionFinishRequest2") @SaIgnore public ResponseEntity actionFinishRequest2(@RequestBody JSONObject jo) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index 8f87e2337..b5bc59da6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -3,6 +3,7 @@ package org.nl.wms.ext.acs.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import java.util.List; import java.util.Map; /** @@ -154,6 +155,8 @@ public interface WmsToAcsService { */ JSONObject queryBoxWeigh(JSONObject jo); + JSONObject getDeviceErrorInfo(List list,String product_area); + /** * 查询RGV状态 * @param jo diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index c6457b60e..b8cbc82e6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -1,7 +1,8 @@ package org.nl.wms.ext.acs.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -18,6 +19,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; import org.nl.b_lms.pda.service.ProductOutTwoService; @@ -36,6 +39,8 @@ import org.nl.b_lms.sch.tasks.TwoBoxExcepTask; import org.nl.b_lms.sch.tasks.TwoExceptionInTask; import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask; import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask; +import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum; +import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService; import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo; @@ -52,6 +57,7 @@ import org.nl.common.utils.MapOf; import org.nl.common.utils.RedissonUtils; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.RedisUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; @@ -99,7 +105,7 @@ import java.util.stream.Collectors; @Slf4j public class AcsToWmsServiceImpl implements AcsToWmsService { - private static Map Task_Status_Convers = MapOf.of("1",TaskStatusEnum.EXECUTING.getCode(),"2",TaskStatusEnum.FINISHED.getCode(),"3","0"); + private static Map Task_Status_Convers = MapOf.of("1", TaskStatusEnum.EXECUTING.getCode(), "2", TaskStatusEnum.FINISHED.getCode(), "3", "0"); private final RawAssistIStorService rawAssistIStorService; @@ -117,7 +123,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final ISysNoticeService noticeService; @Autowired - private IPdmBiContainerinboundService iPdmBiContainerinboundService; + private IPdmBiContainerinboundService iPdmBiContainerinboundService; /** * 入库处理类服务 @@ -179,7 +185,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final IPdmBiSlittingproductionplanService slittingproductionplanService; - private final OutBussManageService outBussManageService; + private final OutBussManageService outBussManageService; @Autowired private ProductOutTwoService productOutTwoService; @@ -192,6 +198,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final IstIvtCutpointivtService cutpointivtService; private final WmsToAcsService wmsToAcsService; + @Autowired + private IBstIvtCutpointivtService bstIvtCutpointivtService; + @Autowired + private RedisUtils redisUtils; /** * task_id:任务标识 @@ -219,39 +229,39 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject task = WQLObject.getWQLObject("SCH_BASE_Task") .query("task_id = '" + task_id + "'") .uniqueResult(0); - if (ObjectUtil.isEmpty(task)){ - throw new BadRequestException("未找到任务标识为:" + task_id + "的任务!"); + if (ObjectUtil.isEmpty(task)) { + throw new BadRequestException("未找到任务标识为:" + task_id + "的任务!"); } - if ("1".equals(task.getString("is_delete"))){ - log.debug(task_id+"当前LMS任务已删除,不需要再次反馈更新!"); + if ("1".equals(task.getString("is_delete"))) { + log.debug(task_id + "当前LMS任务已删除,不需要再次反馈更新!"); continue; } - if ("08,07".contains(task.getString("task_status"))){ - log.debug(task_id+"当前LMS任务完成或取消,不需要再次反馈更新!"); + if ("08,07".contains(task.getString("task_status"))) { + log.debug(task_id + "当前LMS任务完成或取消,不需要再次反馈更新!"); continue; } if (StrUtil.isNotEmpty(row.getString("car_no"))) { WQLObject.getWQLObject("SCH_BASE_Task") - .update(MapOf.of("car_no",row.getString("car_no")),"task_id = '" + task_id + "'"); + .update(MapOf.of("car_no", row.getString("car_no")), "task_id = '" + task_id + "'"); } String handleClassName = task.getString("handle_class"); if (StrUtil.isEmpty(handleClassName)) { throw new BadRequestException("当前任务的处理类未找到!"); } - AbstractAcsTask abstractTask = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(task.getString("handle_class"))); - abstractTask.updateTaskStatus(row,Task_Status_Convers.get(row.getString("task_status"))); + AbstractAcsTask abstractTask = (AbstractAcsTask) SpringContextHolder.getBean(Class.forName(task.getString("handle_class"))); + abstractTask.updateTaskStatus(row, Task_Status_Convers.get(row.getString("task_status"))); } else { throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!"); } - }catch (BadRequestException ex){ - log.error(task_id+"acs更新任务失败:{}", ex); - WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+row.getString("task_status")+"失败:"+ex.getMessage()),"task_id = '" + task_id + "'"); + } catch (BadRequestException ex) { + log.error(task_id + "acs更新任务失败:{}", ex); + WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark", DateUtil.now() + "更新" + row.getString("task_status") + "失败:" + ex.getMessage()), "task_id = '" + task_id + "'"); throw ex; - }catch (Exception ex){ - log.error(task_id+"acs更新任务失败:{}", ex); - WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+row.getString("task_status")+"失败,系统异常"),"task_id = '" + task_id + "'"); + } catch (Exception ex) { + log.error(task_id + "acs更新任务失败:{}", ex); + WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark", DateUtil.now() + "更新" + row.getString("task_status") + "失败,系统异常"), "task_id = '" + task_id + "'"); throw ex; - }finally { + } finally { if (lock.isLocked() && lock.isHeldByCurrentThread()) { lock.unlock(); } @@ -548,7 +558,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } else { struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq desc").uniqueResult(0); } - if (!ObjectUtil.isEmpty(struct_jo)){ + if (!ObjectUtil.isEmpty(struct_jo)) { break; } } else { @@ -1044,57 +1054,56 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public JSONObject sendDeviceStatus(JSONObject whereJson) { - -// log.info("sendDeviceStatus--------------输入为:" + whereJson.toString()); -// WQLObject wo = WQLObject.getWQLObject("em_bi_devicestatus"); -// String device_code = whereJson.getString("device_code"); -// String device_name = whereJson.getString("device_name"); -// String product_area = whereJson.getString("product_area"); -// String device_type = whereJson.getString("device_type"); -// if (StrUtil.isEmpty(device_code)) { -// log.info("未传入设备号,输入参数为:" + whereJson.toString()); -// JSONObject result = new JSONObject(); -// result.put("status", HttpStatus.OK.value()); -// result.put("message", "反馈成功!"); -// return result; -// } else { -// JSONObject device = wo.query("device_code = '" + device_code + "'").uniqueResult(0); -// if (ObjectUtil.isEmpty(device)) { -// JSONObject jo = new JSONObject(); -// jo.put("device_code", device_code); -// jo.put("device_name", device_name); -// jo.put("product_area", product_area); -// jo.put("device_type", device_type); -// jo.put("plan", "1"); -// jo.put("upload_flag", "1"); -// if (whereJson.containsKey("mode")) { -// jo.put("mode", whereJson.getString("mode")); -// jo.put("mode_update_time", DateUtil.now()); -// } -// if (whereJson.containsKey("error")) { -// jo.put("error", whereJson.getString("error")); -// jo.put("error_msg", whereJson.getString("error_msg")); -// jo.put("error_update_time", DateUtil.now()); -// } -// wo.insert(jo); -// } else { -// HashMap map = new HashMap<>(); -// if (whereJson.containsKey("mode")) { -// map.put("mode", whereJson.getString("mode")); -// map.put("mode_update_time", DateUtil.now()); -// } -// if (whereJson.containsKey("error")) { -// map.put("error", whereJson.getString("error")); -// map.put("error_msg", whereJson.getString("error_msg")); -// map.put("error_update_time", DateUtil.now()); -// if ("0".equals(whereJson.getString("error"))) { -// map.put("is_upload", "0"); -// map.put("upload_time", DateUtil.now()); -// } -// } -// wo.update(map, "device_code = '" + device_code + "'"); -// } -// } + log.info("sendDeviceStatus--------------输入为:" + whereJson.toString()); + WQLObject wo = WQLObject.getWQLObject("em_bi_devicestatus"); + String device_code = whereJson.getString("device_code"); + String device_name = whereJson.getString("device_name"); + String product_area = whereJson.getString("product_area"); + String device_type = whereJson.getString("device_type"); + if (StrUtil.isEmpty(device_code)) { + log.info("未传入设备号,输入参数为:" + whereJson.toString()); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + return result; + } else { + JSONObject device = wo.query("device_code = '" + device_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(device)) { + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("device_name", device_name); + jo.put("product_area", product_area); + jo.put("device_type", device_type); + jo.put("plan", "1"); + jo.put("upload_flag", "1"); + if (whereJson.containsKey("mode")) { + jo.put("mode", whereJson.getString("mode")); + jo.put("mode_update_time", DateUtil.now()); + } + if (whereJson.containsKey("error")) { + jo.put("error", whereJson.getString("error")); + jo.put("error_msg", whereJson.getString("error_msg")); + jo.put("error_update_time", DateUtil.now()); + } + wo.insert(jo); + } else { + HashMap map = new HashMap<>(); + if (whereJson.containsKey("mode")) { + map.put("mode", whereJson.getString("mode")); + map.put("mode_update_time", DateUtil.now()); + } + if (whereJson.containsKey("error")) { + map.put("error", whereJson.getString("error")); + map.put("error_msg", whereJson.getString("error_msg")); + map.put("error_update_time", DateUtil.now()); + if ("0".equals(whereJson.getString("error"))) { + map.put("is_upload", "0"); + map.put("upload_time", DateUtil.now()); + } + } + wo.update(map, "device_code = '" + device_code + "'"); + } + } JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "反馈成功!"); @@ -1868,7 +1877,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { result.put("status", HttpStatus.OK.value()); result.put("message", "反馈成功,ACS上报无货且此时LMS该点位没有任何任务!"); return result; - }else { + } else { boolean need_clean = false; for (int i = 0; i < left_arr.size(); i++) { JSONObject left_jo = left_arr.getJSONObject(i); @@ -1893,7 +1902,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { result.put("status", HttpStatus.OK.value()); result.put("message", "反馈成功,ACS上报无货且此时LMS该点位没有任何任务!"); return result; - }else { + } else { boolean need_clean = false; for (int i = 0; i < right_arr.size(); i++) { JSONObject right_jo = right_arr.getJSONObject(i); @@ -1989,7 +1998,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jo = new JSONObject(); - jo.put("struct_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("struct_id", IdUtil.getLongId()); jo.put("struct_code", piece + row + "-" + line + "-" + layer); jo.put("struct_name", piece + "区" + row + "排" + line + "列" + layer + "层"); jo.put("simple_name", piece + "区" + row + "排" + line + "列" + layer + "层"); @@ -2024,7 +2033,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { max_no++; //插入点位 JSONObject structMap = new JSONObject(); - structMap.put("point_id", IdUtil.getSnowflake(1, 1).nextId()); + structMap.put("point_id", IdUtil.getLongId()); structMap.put("point_code", jo.getString("struct_code")); structMap.put("point_name", jo.getString("struct_name")); structMap.put("region_id", "1582991348217286656"); @@ -2062,7 +2071,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { point.update(json); JSONObject jsonTwo = new JSONObject(); - jsonTwo.put("point_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonTwo.put("point_id", IdUtil.getLongId()); jsonTwo.put("device_code", json.getString("device_code")); jsonTwo.put("point_code", jsonTwo.getString("device_code") + "_2"); jsonTwo.put("point_name", json.getString("point_name")); @@ -2092,66 +2101,112 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public JSONObject sendProductToFirstFloor(JSONObject whereJson) { log.info("sendProductToFirstFloor被调用--------------------------:" + whereJson.toString()); - if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) { - throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为空!"); - } - if (whereJson.getString("device_code").equals("null") || whereJson.getString("material_barcode").equals("null")) { - throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为null!"); - } + String is_error = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_error").getValue(); JSONObject result = new JSONObject(); - result.put("status", HttpStatus.BAD_REQUEST.value()); - result.put("data", whereJson.getString("material_barcode")); - RedissonUtils.lock(c->{ - //1.查询满轴缓存位是否有空位 - List MzPoints = packageinfoivtService - .list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) - .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")) - .orderByDesc(BstIvtPackageinfoivt::getSort_seq)); - if (CollectionUtils.isEmpty(MzPoints)){ - result.put("message", "满轴位无可用位置"); - return result; - } - List empPoints = packageinfoivtService - .selectNoTargetTaskPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具")); - if (CollectionUtils.isEmpty(empPoints)){ - result.put("message", "空轴位无可用位置"); - return result; - } - // 创建前先判断是否有已创建相同任务 - List taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"))); - List existTaskList1 = taskService.getExistTasks(taskTypes); - List existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList()); - List existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(existTaskList2) ||!CollectionUtils.isEmpty(existTaskList3) ){ - result.put("message", "存在正在执行的输送线行架任务"); - return result; - } - List sortEmpPoint = empPoints.stream().sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)).collect(Collectors.toList()); - JSONObject taskParam = new JSONObject(); - taskParam.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); - taskParam.put("vehicle_code", whereJson.getString("material_barcode")); - taskParam.put("point_code1", whereJson.getString("device_code")); - taskParam.put("point_code2", MzPoints.get(0).getPoint_code()); - taskParam.put("point_code3", sortEmpPoint.get(0).getPoint_code()); - taskParam.put("point_code4", whereJson.getString("device_code")); - taskParam.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); - taskParam.put("is_send", true); - mzhcwTask.createTask(taskParam); - PdmProductSpecServiceImpl.doRecord(SpecEnum.XX,null,Boolean.TRUE,null,whereJson.getString("material_barcode")); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } + if ("1".equals(is_error)) { result.put("status", HttpStatus.OK.value()); result.put("message", "反馈成功!"); - return result; - },"sendProductToFirstFloor",null); + } else { + if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) { + throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为空!"); + } + if (whereJson.getString("device_code").equals("null") || whereJson.getString("material_barcode").equals("null")) { + throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为null!"); + } + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("data", whereJson.getString("material_barcode")); + RedissonUtils.lock(c -> { + //1.查询满轴缓存位是否有空位 + List MzPoints = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")) + .orderByDesc(BstIvtPackageinfoivt::getSort_seq)); + if (CollectionUtils.isEmpty(MzPoints)) { + result.put("message", "满轴位无可用位置"); + return result; + } + // 创建前先判断是否有已创建相同任务 + List taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))); + List existTaskList1 = taskService.getExistTasks(taskTypes); + List existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList()); + List existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(existTaskList2) || !CollectionUtils.isEmpty(existTaskList3)) { + result.put("message", "存在正在执行的输送线行架任务"); + return result; + } + JSONObject taskParam = new JSONObject(); + taskParam.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + taskParam.put("vehicle_code", whereJson.getString("material_barcode")); + taskParam.put("point_code1", whereJson.getString("device_code")); + taskParam.put("point_code2", MzPoints.get(0).getPoint_code()); + taskParam.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); + taskParam.put("is_send", true); + mzhcwTask.createTask(taskParam); + PdmProductSpecServiceImpl.doRecord(SpecEnum.XX, null, Boolean.TRUE, null, whereJson.getString("material_barcode")); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + return result; + }, "sendProductToFirstFloor", null); + } + log.info("sendProductToFirstFloor调用成功--------------------------:" + result); return result; } + private JSONObject getJsonObject(JSONObject whereJson, JSONObject result) { + //1.查询满轴缓存位是否有空位 + List MzPoints = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")) + .orderByDesc(BstIvtPackageinfoivt::getSort_seq)); + if (CollectionUtils.isEmpty(MzPoints)) { + result.put("message", "满轴位无可用位置"); + return result; + } + List empPoints = packageinfoivtService + .selectNoTargetTaskPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具")); + if (CollectionUtils.isEmpty(empPoints)) { + result.put("message", "空轴位无可用位置"); + return result; + } + // 创建前先判断是否有已创建相同任务 + List taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"))); + List existTaskList1 = taskService.getExistTasks(taskTypes); + List existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList()); + List existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(existTaskList2) || !CollectionUtils.isEmpty(existTaskList3)) { + result.put("message", "存在正在执行的输送线行架任务"); + return result; + } + List sortEmpPoint = empPoints.stream().sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)).collect(Collectors.toList()); + JSONObject taskParam = new JSONObject(); + taskParam.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + taskParam.put("vehicle_code", whereJson.getString("material_barcode")); + taskParam.put("point_code1", whereJson.getString("device_code")); + taskParam.put("point_code2", MzPoints.get(0).getPoint_code()); + taskParam.put("point_code3", sortEmpPoint.get(0).getPoint_code()); + taskParam.put("point_code4", whereJson.getString("device_code")); + taskParam.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); + taskParam.put("is_send", true); + mzhcwTask.createTask(taskParam); + PdmProductSpecServiceImpl.doRecord(SpecEnum.XX, null, Boolean.TRUE, null, whereJson.getString("material_barcode")); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + return result; + } + /** * 无空载具下发确定终点的补空桁架任务 */ @@ -2162,13 +2217,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 创建前先判断是否有已创建相同任务 List taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"))); List existTaskList1 = taskService.getExistTasks(taskTypes); - List existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList()); + List existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList()); List existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); - if (ObjectUtils.isEmpty(existTaskList2)&&ObjectUtils.isEmpty(existTaskList3)) { + if (ObjectUtils.isEmpty(existTaskList2) && ObjectUtils.isEmpty(existTaskList3)) { jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); jo.put("is_send", true); mzhcwTask.createTask(jo); - PdmProductSpecServiceImpl.doRecord(SpecEnum.XX,null,Boolean.TRUE,null,containerName); + PdmProductSpecServiceImpl.doRecord(SpecEnum.XX, null, Boolean.TRUE, null, containerName); //不确定起点的空载具缓存位->输送线任务 createTask3(containerName); @@ -2204,16 +2259,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 创建前先判断是否有已创建相同任务 List taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"))); List existTaskList1 = taskService.getExistTasks(taskTypes); - List existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList()); + List existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList()); List existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); - if (ObjectUtils.isEmpty(existTaskList2)&&ObjectUtils.isEmpty(existTaskList3)) { + if (ObjectUtils.isEmpty(existTaskList2) && ObjectUtils.isEmpty(existTaskList3)) { jo.put("point_code3", pointCode3); //终点为输送线点位 jo.put("point_code4", pointCode4); jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); jo.put("is_send", true); mzhcwTask.createTask(jo); - PdmProductSpecServiceImpl.doRecord(SpecEnum.XX,null,Boolean.TRUE,null,containerName); + PdmProductSpecServiceImpl.doRecord(SpecEnum.XX, null, Boolean.TRUE, null, containerName); result.put("status", HttpStatus.OK.value()); result.put("message", "反馈成功!"); @@ -2262,15 +2317,28 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } // 5-木箱入库.木箱回库 String materialBarcode = whereJson.getString("material_barcode"); - if (materialBarcode.contains("BRMX")){ + if (materialBarcode.contains("BRMX")) { String brBox = Arrays.asList(materialBarcode.split(",")).get(0); whereJson.put("box_no", brBox.replace("BR", "")); inBoxManageService.inBox(whereJson); - }else { + } else { if (whereJson.getIntValue("weight") <= 0) { throw new BadRequestException("上报的重量不能为0!"); } + String material_barcode = whereJson.getString("material_barcode"); + // 处理子卷号 + if (ObjectUtil.isEmpty(material_barcode)) { + throw new BadRequestException("子卷号不能为空!"); + } + List pcsnList = Arrays.asList(material_barcode.split(",")); + // 查询子卷包装关系 + List subList = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("container_name in ('" + String.join("','", pcsnList) + "') and status in ('0','1','99')") + .getResultJSONArray(0).toJavaList(JSONObject.class); + if (ObjectUtil.isEmpty(subList)) { + throw new BadRequestException("未查询到子卷包装信息!"); + } List errorMsg = new ArrayList<>(); + whereJson.put("sub_box",subList.get(0).getString("package_box_sn")); JSONObject jsonObject = ComPareUtil.CompareWhight(whereJson); Boolean inbound = jsonObject.getBoolean("inbound"); Boolean compaerResult = jsonObject.getBoolean("compaer_result"); @@ -2285,39 +2353,46 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .lt("task_status", TaskStatusEnum.EXECUTING.getCode())); JSONObject jsonExt = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonExt)) { - errorMsg.add("载具无数据"+whereJson.getString("vehicle_code")); - }else { + errorMsg.add("载具无数据" + whereJson.getString("vehicle_code")); + } else { String pcsn = jsonExt.getString("pcsn"); - if (StringUtils.isNotEmpty(pcsn)){ + if (StringUtils.isNotEmpty(pcsn)) { JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0); if (stIvtStructattr != null && stIvtStructattr.size() > 0) { - errorMsg.add("载具"+whereJson.getString("vehicle_code")+"已绑定"+pcsn); + errorMsg.add("载具" + whereJson.getString("vehicle_code") + "已绑定" + pcsn); } } } - if (!compaerResult){ - errorMsg.add("称重"+current_weight+"不匹配"+box_weight); + if (!compaerResult) { + errorMsg.add("称重" + current_weight + "不匹配" + box_weight); Param notify = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("weight_notify"); - if (notify!=null && StringUtils.isNotEmpty(notify.getValue())){ - AutoSendFeiShu.sendFeiShuMsg(notify.getValue(),box_no+"称重"+current_weight+",理论"+box_weight,"二期称重异常提醒"); + if (notify != null && StringUtils.isNotEmpty(notify.getValue())) { + AutoSendFeiShu.sendFeiShuMsg(notify.getValue(), box_no + "称重" + current_weight + ",理论" + box_weight, "二期称重异常提醒"); } } - if (!inbound){ + String is_normal_rk = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_normal_rk").getValue(); + if (!inbound && is_normal_rk.equals("0")) { errorMsg.add("手动至异常口"); } - if (count>0){ - errorMsg.add(whereJson.getString("vehicle_code")+"存在任务"); + if (count > 0) { + errorMsg.add(whereJson.getString("vehicle_code") + "存在任务"); + } + if (StringUtils.isBlank(subList.get(0).getString("package_box_sn"))) { + throw new BadRequestException("包装关系的木箱号不能为空!"); + } + if (!subList.get(0).getString("package_box_sn").equals(jsonExt.getString("pcsn"))) { + errorMsg.add("托盘绑定的木箱号与当前的不一致!"); } //"material_barcode":"C1101,","device_code":"RK1018","weight":500.95,"vehicle_code":"B01401","type":"1" if (CollectionUtils.isEmpty(errorMsg)) { whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库")); inBussManageService.inTask(whereJson); - PdmProductSpecServiceImpl.doRecord(SpecEnum.RK,null,Boolean.TRUE,null,containers); + PdmProductSpecServiceImpl.doRecord(SpecEnum.RK, null, Boolean.TRUE, null, containers); } else { iPdmBiContainerinboundService .update(new UpdateWrapper() - .set("remark",JSONObject.toJSONString(errorMsg)) - .eq("box",box_no)); + .set("remark", JSONObject.toJSONString(errorMsg)) + .eq("box", box_no)); //更新子卷入库备注信息 JSONObject jsonTaskParam = new JSONObject(); //创建异常任务去异常入库口 @@ -2339,14 +2414,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject param = new JSONObject(); param.put("status", IOSEnum.IS_NOTANDYES.code("否")); WQLObject.getWQLObject("pdm_bi_subpackagerelation") - .update(param,"package_box_sn = '"+jsonObject.getString("box_no")+"'"); + .update(param, "package_box_sn = '" + subList.get(0).getString("package_box_sn") + "'"); jsonTaskParam.put("request_param", request_param); TwoExceptionInTask bean = SpringContextHolder.getBean(TwoExceptionInTask.class); bean.createTask(jsonTaskParam); bean.immediateNotifyAcs(null); - PdmProductSpecServiceImpl.doRecord(SpecEnum.TYCK,null,Boolean.FALSE,errorMsg.toString(),containers); - } + PdmProductSpecServiceImpl.doRecord(SpecEnum.TYCK, null, Boolean.FALSE, errorMsg.toString(), containers); + } } } else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库"))) { @@ -2378,20 +2453,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { inBoxManageService.inBox(whereJson); } else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("退货入库"))) { String materialBarcode = whereJson.getString("material_barcode"); - if(StrUtil.isEmpty(materialBarcode)){ + if (StrUtil.isEmpty(materialBarcode)) { throw new BadRequestException("当前木箱号不能为空!"); } String[] box_arr = materialBarcode.split("-"); if (box_arr.length < 2) { // 处理分割结果不足的情况 - throw new BadRequestException("当前木箱号数据异常!"+box_arr.toString()); + throw new BadRequestException("当前木箱号数据异常!" + box_arr.toString()); } - if (box_arr[1].equals("9")){ + if (box_arr[1].equals("9")) { //空木箱入库 // -{"material_barcode":"MX250324000091-1","device_code":"CK2005","vehicle_code":"B00165","type":"6"} whereJson.put("box_no", box_arr[0]); inBoxManageService.inBox(whereJson); - }else { + } else { //退货入库 WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo"); // 载具扩展属性表 @@ -2422,8 +2497,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .eq("is_delete", "0") .eq("vehicle_code2", whereJson.getString("vehicle_code")) .lt("task_status", TaskStatusEnum.FINISHED.getCode())); - if (hasTask>0){ - throw new BadRequestException("托盘"+whereJson.getString("vehicle_code")+"存在执行的任务"); + if (hasTask > 0) { + throw new BadRequestException("托盘" + whereJson.getString("vehicle_code") + "存在执行的任务"); } JSONObject ext_jo = veExtTab.query("storagevehicle_code = '" + jsonVehicle.getString("storagevehicle_code") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(ext_jo)) { @@ -2438,10 +2513,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { veExtTab.insert(jsonVeExt); } else { String pcsn = ext_jo.getString("pcsn"); - if (StringUtils.isNotEmpty(pcsn)){ + if (StringUtils.isNotEmpty(pcsn)) { JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0); if (stIvtStructattr != null && stIvtStructattr.size() > 0) { - throw new BadRequestException("当前托盘"+whereJson.getString("vehicle_code")+"已经绑定木箱"+pcsn); + throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经绑定木箱" + pcsn); } } ext_jo.put("pcsn", whereJson.getString("box_no")); @@ -2754,7 +2829,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { updateWrapper.set(PdmBiSlittingproductionplan::getWeight, NumberUtil.round(weight, 2).toString()) .eq(PdmBiSlittingproductionplan::getContainer_name, subVolume); boolean update = slittingproductionplanService.update(updateWrapper); - PdmProductSpecServiceImpl.doRecord(SpecEnum.FQ_WG,param,Boolean.TRUE,null,subVolume); + PdmProductSpecServiceImpl.doRecord(SpecEnum.FQ_WG, param, Boolean.TRUE, null, subVolume); if (update) { res.put("code", cn.hutool.http.HttpStatus.HTTP_OK); res.put("message", "更新成功!"); @@ -2773,33 +2848,33 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public JSONObject getBoxInfo(JSONObject param) { String material_barcode = param.getString("material_barcode"); - if (StringUtils.isEmpty(material_barcode)){ + if (StringUtils.isEmpty(material_barcode)) { throw new BadRequestException("material_barcode参数不能为空"); } String isUncap = "1"; String boxOr子卷 = material_barcode.split("-")[0]; BstIvtBoxinfo boxNo; String desiccantTemplate = null; - if (boxOr子卷.contains("MX")){ + if (boxOr子卷.contains("MX")) { BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( new QueryWrapper().lambda() .eq(BstIvtBoxinfo::getBox_no, boxOr子卷) ); - if (boxDao==null){ - throw new BadRequestException("当前木箱码在木箱表不存在"+boxOr子卷); + if (boxDao == null) { + throw new BadRequestException("当前木箱码在木箱表不存在" + boxOr子卷); } - boxNo=boxDao; - }else { + boxNo = boxDao; + } else { JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation") .query("container_name = '" + boxOr子卷 + "' order by create_time desc").uniqueResult(0); - if (sub_jo==null || StringUtils.isEmpty(sub_jo.getString("package_box_sn"))){ - throw new BadRequestException("当前子卷不存在子卷包装关系"+boxOr子卷); + if (sub_jo == null || StringUtils.isEmpty(sub_jo.getString("package_box_sn"))) { + throw new BadRequestException("当前子卷不存在子卷包装关系" + boxOr子卷); } BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( new QueryWrapper().lambda() .eq(BstIvtBoxinfo::getBox_no, sub_jo.getString("package_box_sn")) ); - boxNo=boxDao; + boxNo = boxDao; String material_type = sub_jo.getString("material_type"); if (material_type.equals("FG1")) { desiccantTemplate = "6"; @@ -2924,7 +2999,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 调用移库方法 JSONObject moveParam = new JSONObject(); moveParam.put("needMoveList", needMoveList); - moveParam.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId()); + moveParam.put("task_group_id", IdUtil.getLongId()); HandMoveStorServiceImpl bean = SpringContextHolder.getBean(HandMoveStorServiceImpl.class); bean.createMoveExpansion(moveParam); @@ -2971,7 +3046,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + material_barcode + "'").uniqueResult(0); if (ObjectUtil.isEmpty(vehicle_info)) { vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(vehicle_info)){ + if (ObjectUtil.isEmpty(vehicle_info)) { throw new BadRequestException("未查询到载具号【" + vehicle_code + "】对应的载具信息!"); } } @@ -2987,18 +3062,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isNotEmpty(sub_jo)) { //木箱类型 String box_type = sub_jo.getString("box_type"); - if(ObjectUtil.isEmpty(box_type)){ + if (ObjectUtil.isEmpty(box_type)) { throw new BadRequestException("未查询到木箱号【" + material_barcode + "】对应的包装关系缺少木箱类型信息!"); } //查询木箱类型数据 LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(); - queryWrapper.eq(MdpbBoxtype::getBox_type,box_type); + queryWrapper.eq(MdpbBoxtype::getBox_type, box_type); MdpbBoxtype boxType = iMdpbBoxtypeService.getOne(queryWrapper); - if(ObjectUtil.isEmpty(boxType)){ + if (ObjectUtil.isEmpty(boxType)) { throw new BadRequestException("未查询到木箱类型【" + box_type + "】信息!"); } desiccantTemplate = String.valueOf(boxType.getDesiccant_num()); - }else{ + } else { throw new BadRequestException("未查询到木箱号【" + material_barcode + "】对应的包装关系!"); } //根据木箱高度,判断入库仓位的高度 @@ -3062,15 +3137,28 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { boolean updateFlag = false; if ("1".equals(type)) { if (task.getPoint_code1().contains("QHD")) { + JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); + String qzzSize = requestParam.getString("qzz_size"); // 请求取货 String deviceCode = task.getPoint_code2(); BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); - JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); - String qzzSize = requestParam.getString("qzz_size"); + String generation; + String location; + if (ObjectUtil.isNotEmpty(startPoint)) { + generation = startPoint.getQzz_generation(); + location = startPoint.getPoint_location(); + } else { + BstIvtCutpointivt cutPoint = bstIvtCutpointivtService.getPintByTrussCode(deviceCode, false); + location = cutPoint.getPoint_location(); + generation = requestParam.getString("qzz_generation"); + } // 获取气涨轴缓存没有任务的点位 List shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize, - startPoint.getQzz_generation(), startPoint.getPoint_location()); + generation, location); if (shafttubeivts.size() == 0) { + List stepTipLogs = getRedisListValue("ERROR" + deviceCode); + stepTipLogs.add(">>>桁架取轴二次请求异常:未找到气涨轴规格「" + qzzSize + "」的暂存位"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位"); } BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); @@ -3096,7 +3184,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { startPoint.setQzz_size(qzzSize); // 获取空位 List shafttubeivts = shafttubeivtService.getNotTaskShaftCacheEmpty(startPoint); + List stepTipLogs = getRedisListValue("ERROR" + deviceCode); if (shafttubeivts.size() == 0) { + stepTipLogs.add(">>>桁架放轴二次请求异常:未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位"); } BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); @@ -3121,13 +3212,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isEmpty(qzzSize)) { throw new BadRequestException("气涨轴规格不能为空!"); } - String qzz= qzzSize.substring(qzzSize.length() - 3); + String qzz = qzzSize.substring(qzzSize.length() - 3); String[] split = qzz.split("-"); String size = split[0]; String qzz_generation = split[1]; // 获取空位 - List shafttubeivts = shafttubeivtService.getNotTaskEmptyShaftCache(size, qzz_generation,"0"); + List shafttubeivts = shafttubeivtService.getNotTaskEmptyShaftCache(size, qzz_generation, "0"); if (shafttubeivts.size() == 0) { throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位"); } @@ -3142,6 +3233,31 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { targetPoint = task.getPoint_code2(); } } + if ("4".equals(type)) { + if (task.getPoint_code1().contains("QHD")) { + // 请求取货 + String deviceCode = task.getPoint_code2(); + BstIvtCutpointivt cutPoint = bstIvtCutpointivtService.getPintByTrussCode(deviceCode, false); + JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); + String qzzSize = requestParam.getString("qzz_size"); + String qzz_generation = ObjectUtil.isNotEmpty(requestParam.getString("qzz_generation")) ? requestParam.getString("qzz_generation") : "4"; + // 获取气涨轴缓存没有任务的点位 + List shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize, + qzz_generation, cutPoint.getPoint_location()); + if (shafttubeivts.size() == 0) { + throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位"); + } + BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); + targetPoint = shafttubeivt.getPoint_code(); + // 修改任务 + task.setPoint_code1(targetPoint); + task.setRemark("取货请求成功"); + task.setUpdate_time(DateUtil.now()); + updateFlag = true; + } else { + targetPoint = task.getPoint_code1(); + } + } if (updateFlag) { taskService.updateById(task); } @@ -3151,4 +3267,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { log.info("acsRequestPoint输出参数为--------------------------:" + result.toString()); return result; } + + public List getRedisListValue(String key) { + List stepTipLogs = (List) redisUtils.get(key); + if (CollectionUtil.isEmpty(stepTipLogs)) { + stepTipLogs = new ArrayList<>(); + } + return stepTipLogs; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index 07e1d147f..68184db57 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -3,6 +3,7 @@ package org.nl.wms.ext.acs.service.impl; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; @@ -16,6 +17,7 @@ import org.nl.wms.sch.tasks.URLEnum; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; @Service @@ -518,6 +520,47 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return result; } + @Override + public JSONObject getDeviceErrorInfo(List list,String product_area) { + String api = "api/wms/getDeviceErrorInfo"; + //判断是否连接ACS系统 + 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 JSONArray()); + return result; + } + + String acs_url = URLEnum.find(product_area); + if (StrUtil.isEmpty(acs_url)) { + log.info(product_area); + throw new BadRequestException("未查询到区域对应的acs地址!"); + } + + String url = acs_url + api; + try { + String resultMsg = HttpRequest.post(url) + .body(JSON.toJSONString(list)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + result.put("status", HttpStatus.BAD_REQUEST); + result.put("message", "网络不通,操作失败!"); + result.put("data", new JSONArray()); + } + //acs抛异常这里 + if (!StrUtil.equals(result.getString("status"), "200")) { + throw new BadRequestException("操作失败:" + result.getString("message")); + } + return result; + } + @Override public JSONObject queryRGVStatus(JSONObject jo) { String api = "api/wms/queryRGVStatus"; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/crm/service/impl/CrmToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/crm/service/impl/CrmToLmsServiceImpl.java index 3ffda61af..71ec64640 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/crm/service/impl/CrmToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/crm/service/impl/CrmToLmsServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.ext.crm.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -38,7 +38,7 @@ public class CrmToLmsServiceImpl implements CrmToLmsService { String sales_owner = row.getString("SalesOwner"); JSONObject jo = new JSONObject(); - jo.put("id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("id", IdUtil.getLongId()); jo.put("customer_name", customer_name); jo.put("description", description); jo.put("company", company); @@ -63,7 +63,7 @@ public class CrmToLmsServiceImpl implements CrmToLmsService { JSONObject customer_jo = WQLObject.getWQLObject("md_cs_customerbase").query("cust_code = '" + customer_name + "'").uniqueResult(0); if (ObjectUtil.isEmpty(customer_jo)) { customer_jo = new JSONObject(); - customer_jo.put("cust_id", IdUtil.getSnowflake(1, 1).nextId()); + customer_jo.put("cust_id", IdUtil.getLongId()); customer_jo.put("cust_code", customer_name); customer_jo.put("cust_name", description); customer_jo.put("cust_simple_name", company); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java index b49ede7f5..f5cdd542e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java @@ -153,4 +153,11 @@ public class LmsToMesController { public ResponseEntity GetInspectionResult(@RequestBody JSONObject jo) { return new ResponseEntity<>(lmsToMesService.getInspectionResult(jo), HttpStatus.OK); } + + @PostMapping("/GetChildWeightIsSamplePDA") + @Log("判断子卷是否是NG卷") + @SaIgnore + public ResponseEntity GetChildWeightIsSamplePDA(@RequestBody JSONObject jo) { + return new ResponseEntity<>(lmsToMesService.getInspectionResult(jo), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java index fab22b2ce..3c2d80b57 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java @@ -186,4 +186,6 @@ public interface LmsToMesService { JSONObject BoxDataCollectionSubmit2(JSONObject jo); JSONObject getInspectionResult(JSONObject jo); + + JSONObject GetChildWeightIsSamplePDA(JSONObject jo); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java index a0314833f..a50860d8a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.ext.mes.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; @@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import java.io.StringReader; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -981,9 +982,9 @@ public class LmsToMesServiceImpl implements LmsToMesService { if ("E".equals(RTYPE)) { throw new BadRequestException(result.getString("RTMSG")); } - PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES,param,Boolean.TRUE,null,list); + PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES, param, Boolean.TRUE, null, list); } catch (Exception e) { - PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES,param,Boolean.FALSE,e.getMessage(),list); + PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES, param, Boolean.FALSE, e.getMessage(), list); throw new BadRequestException("MES提示错误:" + e.getMessage()); } return result; @@ -1022,25 +1023,25 @@ public class LmsToMesServiceImpl implements LmsToMesService { JSONArray rows = new JSONArray(); JSONObject row1 = new JSONObject(); - row1.put("DataPointName","保护棉是否填充"); - row1.put("DataType","7"); - row1.put("DataValue","true"); - row1.put("DataCollectionDefId","001c61800000004f"); - row1.put("DataCollectionDefName","PACKAGE"); + row1.put("DataPointName", "保护棉是否填充"); + row1.put("DataType", "7"); + row1.put("DataValue", "true"); + row1.put("DataCollectionDefId", "001c61800000004f"); + row1.put("DataCollectionDefName", "PACKAGE"); rows.add(row1); JSONObject row2 = new JSONObject(); - row2.put("DataPointName","信息核对准确"); - row2.put("DataType","7"); - row2.put("DataValue","true"); - row2.put("DataCollectionDefId","001c61800000004f"); - row2.put("DataCollectionDefName","PACKAGE"); + row2.put("DataPointName", "信息核对准确"); + row2.put("DataType", "7"); + row2.put("DataValue", "true"); + row2.put("DataCollectionDefId", "001c61800000004f"); + row2.put("DataCollectionDefName", "PACKAGE"); rows.add(row2); JSONObject row3 = new JSONObject(); - row3.put("DataPointName","木箱是否防护"); - row3.put("DataType","7"); - row3.put("DataValue","true"); - row3.put("DataCollectionDefId","001c61800000004f"); - row3.put("DataCollectionDefName","PACKAGE"); + row3.put("DataPointName", "木箱是否防护"); + row3.put("DataType", "7"); + row3.put("DataValue", "true"); + row3.put("DataCollectionDefId", "001c61800000004f"); + row3.put("DataCollectionDefName", "PACKAGE"); rows.add(row3); param.put("DataPoints", rows); log.info("BoxDataCollectionSubmit2接口请求参数为:-------------------" + param.toString()); @@ -1054,19 +1055,19 @@ public class LmsToMesServiceImpl implements LmsToMesService { String RTYPE = result.getString("RTYPE"); if ("E".equals(RTYPE)) { - throw new BadRequestException("MES提示错误:" +result.getString("RTMSG")); + throw new BadRequestException("MES提示错误:" + result.getString("RTMSG")); } } catch (Exception e) { - PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES,param,Boolean.FALSE,e.getMessage(),containerName); + PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES, param, Boolean.FALSE, e.getMessage(), containerName); throw new BadRequestException("MES错误:" + e.getMessage()); } - PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES,param,Boolean.TRUE,null,containerName); + PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES, param, Boolean.TRUE, null, containerName); return result; } public JSONObject getInspectionResult(JSONObject param) { - log.info("getInspectionResult接口输出参数为:-------------------" + param.toString()); + log.info("getInspectionResult接口输入参数为:-------------------" + param.toString()); String container_name = param.getString("container_name"); @@ -1097,6 +1098,12 @@ public class LmsToMesServiceImpl implements LmsToMesService { .timeout(time_out)//超时时间,毫秒 .execute().body(); result = JSONObject.parseObject(resultMsg); + + String RTYPE = result.getString("RTYPE"); + if ("E".equals(RTYPE)) { + throw new BadRequestException("MES提示错误:" + result.getString("RTMSG")); + } + IpdmBiSubpackagerelationService subpackagerelationService = SpringContextHolder.getBean(IpdmBiSubpackagerelationService.class); JSONObject container_info = result.getJSONObject("RTDAT"); System.out.println(container_info.toString()); @@ -1160,7 +1167,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { PdmBiContainerinfo one = containerinfoService.getOne(new LambdaQueryWrapper().eq(PdmBiContainerinfo::getContainer_name, ContainerName)); if (ObjectUtil.isEmpty(one)) { PdmBiContainerinfo containerinfo = PdmBiContainerinfo.builder() - .workorder_id(IdUtil.getSnowflake(1, 1).nextId()) + .workorder_id(IdUtil.getLongId()) .container_name(ContainerName) .sap_pcsn(SAPLotNumber) .sale_order_name(SaleOrderName) @@ -1212,11 +1219,63 @@ public class LmsToMesServiceImpl implements LmsToMesService { } log.info("getInspectionResult接口输出参数为:-------------------" + result.toString()); + } catch (Exception e) { + throw new BadRequestException("MES提示错误:" + e.getMessage()); + } + return result; + } + + @Override + public JSONObject GetChildWeightIsSamplePDA(JSONObject param) { + String container_name = param.getString("container_name"); + + if (StrUtil.isEmpty(container_name)) { + throw new BadRequestException("子卷号不能为空!"); + } + + JSONObject result = new JSONObject(); + + log.info("GetChildWeightIsSamplePDA接口输入参数为:-------------------" + param.toString()); + + String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); + String api = "CamstarApi/GetChildWeightIsSamplePDA"; + url = url + api; + + String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue(); + String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); + param.put("UserName", UserName); + param.put("Password", Password); + param.put("ContainerName", container_name); + + + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(param)) + .timeout(time_out)//超时时间,毫秒 + .execute().body(); + resultMsg = resultMsg + .replace("\\\"", "\"") // 移除字符串转义 + .replace("\"[", "[") // 修复数组开头 + .replace("]\"", "]"); // 修复数组结尾 + result = JSONObject.parseObject(resultMsg); + log.info("GetChildWeightIsSamplePDA接口输出参数为:-------------------" + result.toString()); String RTYPE = result.getString("RTYPE"); if ("E".equals(RTYPE)) { throw new BadRequestException(result.getString("RTMSG")); } + if (ObjectUtil.isEmpty(result.getJSONArray("RTDAT"))){ + result.put("result", false); + result.put("rtdat", "没有检验结果"); + return result; + } + JSONObject rtdat = result.getJSONArray("RTDAT").getJSONObject(0); + + if (ObjectUtil.isNotEmpty(rtdat.getString("IsSampleTest")) && ObjectUtil.isNotEmpty(rtdat.getString("SampleCount")) && ObjectUtil.isNotEmpty(rtdat.getString("SampleTestResult"))) { + if (rtdat.getString("IsSampleTest").equals(rtdat.getString("SampleCount")) && "PASS".equals(rtdat.getString("SampleTestResult"))) { + result.put("result", true); + } + } } catch (Exception e) { @@ -1224,5 +1283,4 @@ public class LmsToMesServiceImpl implements LmsToMesService { } return result; } - } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java index 2e53dd311..a1c2339aa 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.ext.mes.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -177,7 +177,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { // 插入生箔工序工单表 JSONObject json = new JSONObject(); - json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("workorder_id", IdUtil.getLongId()); json.put("container_name", containerName); json.put("resource_name", ResourceName); json.put("mfg_order_name", MfgOrderName); @@ -673,7 +673,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { } JSONObject json = new JSONObject(); - json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("workorder_id", IdUtil.getLongId()); json.put("order_type", orderType); json.put("container_name", ContainerName); json.put("product_name", ProductName); @@ -842,7 +842,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject jsonCool = new JSONObject(); - jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonCool.put("iostorinv_id", IdUtil.getLongId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "1"); jsonCool.put("material_id", mater_jo.getString("material_id")); @@ -1329,7 +1329,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { } JSONObject jo = new JSONObject(); - jo.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("workorder_id", IdUtil.getLongId()); jo.put("package_box_sn", PackageBoxSN); jo.put("sap_pcsn", sap_pcsn); jo.put("sub_type", sub_type); @@ -1449,7 +1449,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { for (String stor_code : storSet) { double total_qty = 0; double detail_count = 0; - String changeinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String changeinv_id = IdUtil.getLongId() + ""; JSONObject jsonStor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_code = '" + stor_code + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonStor)) { @@ -1482,7 +1482,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { for (int j = 0; j < container_rows.size(); j++) { JSONObject container_row = container_rows.getJSONObject(j); JSONObject change_jo = new JSONObject(); - change_jo.put("changeinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + change_jo.put("changeinvdtl_id", IdUtil.getLongId() + ""); change_jo.put("changeinv_id", changeinv_id); change_jo.put("seq_no", detail_count + 1); JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + container_row.getString("product_name") + "'").uniqueResult(0); @@ -1851,7 +1851,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { // 插入生箔工序工单表 JSONObject json = new JSONObject(); - json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("workorder_id", IdUtil.getLongId()); json.put("foil_container_ame", FoilContainerName); json.put("container_name", TRContainerName); json.put("resource_name", ResourceName); @@ -1987,7 +1987,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { "HL11": null } */ - Long id = IdUtil.getSnowflake(1, 1).nextId(); + Long id = IdUtil.getLongId(); //设备级工单号 String mfg_order = param.getString("MfgOrderName"); //木箱物料编码 @@ -2280,7 +2280,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { PdmBiContainerinfo one = containerinfoService.getOne(new LambdaQueryWrapper().eq(PdmBiContainerinfo::getContainer_name, ContainerName)); if (ObjectUtil.isEmpty(one)) { PdmBiContainerinfo containerinfo = PdmBiContainerinfo.builder() - .workorder_id(IdUtil.getSnowflake(1, 1).nextId()) + .workorder_id(IdUtil.getLongId()) .container_name(ContainerName) .sap_pcsn(SAPLotNumber) .sale_order_name(SaleOrderName) @@ -2372,7 +2372,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { String now = DateUtil.now(); // 记录数据库 BstIvtScalehistory history = new BstIvtScalehistory(); - history.setHistory_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + history.setHistory_id(IdUtil.getStringId()); history.setScale_code(scaleEquipment.getScale_code()); history.setDevice_code(scaleEquipment.getDevice_code()); history.setCurrent_weight(currentWeight); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java index 4d498fcc4..1bc9ac53e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.ext.sap.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -283,7 +283,7 @@ public class SapToLmsServiceImpl implements SapToLmsService { JSONObject base_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + MATNR + "'").uniqueResult(0); if (ObjectUtil.isEmpty(base_jo)) { JSONObject mater_base_jo = new JSONObject(); - mater_base_jo.put("material_id", IdUtil.getSnowflake(1, 1).nextId()); + mater_base_jo.put("material_id", IdUtil.getLongId()); mater_base_jo.put("material_code", MATNR); mater_base_jo.put("material_name", MATNR01); JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("unit_code = '" + MEINS + "'").uniqueResult(0); @@ -450,7 +450,7 @@ public class SapToLmsServiceImpl implements SapToLmsService { if (ObjectUtil.isEmpty(sub_jo)) { //为空新增一条 sub_jo = new JSONObject(); - sub_jo.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); + sub_jo.put("workorder_id", IdUtil.getLongId()); sub_jo.put("package_box_sn", package_box_sn); sub_jo.put("quanlity_in_box", 1); sub_jo.put("sale_order_name", sale_order_name); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/BakingController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/BakingController.java index f244b8e5e..ae9f1b9ab 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/BakingController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/BakingController.java @@ -1,10 +1,13 @@ package org.nl.wms.pda.mps.rest; +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.modules.logging.annotation.Log; import org.nl.wms.pda.mps.service.BakingService; +import org.redisson.api.RedissonClient; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -20,10 +23,12 @@ import org.springframework.web.bind.annotation.RestController; public class BakingController { private final BakingService bakingService; + private final RedissonClient redissonClient; @PostMapping("/ovenInAndOut") @Log("烘箱出入") - + @SaIgnore + @SneakyThrows public ResponseEntity queryRawFoil(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(bakingService.ovenInAndOut(whereJson), HttpStatus.OK); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java index 178c71d3e..dbe8bf161 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java @@ -10,7 +10,7 @@ public interface BakingService { * @param whereJson / * @return JSONObject */ - JSONObject ovenInAndOut(JSONObject whereJson); + JSONObject ovenInAndOut(JSONObject whereJson) throws InterruptedException; /** * 入冷却 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java index 7ee477412..fe7e39ccf 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.pda.mps.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.RedisUtils; @@ -16,6 +17,7 @@ import org.nl.common.utils.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl; import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.pda.mps.eum.RegionTypeEnum; @@ -25,10 +27,14 @@ import org.nl.wms.sch.tasks.CutConveyorTask; import org.nl.wms.sch.tasks.InCoolIvtTask; import org.nl.wms.sch.tasks.InHotTask; import org.nl.wms.sch.tasks.OutHotTask; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.concurrent.TimeUnit; + @Service @RequiredArgsConstructor @Slf4j @@ -37,6 +43,9 @@ public class BakingServiceImpl implements BakingService { @Autowired private RedisUtils redisUtils; + @Autowired + private RedissonClient redissonClient; + /* * 业务流程: * 入烤箱: @@ -54,7 +63,7 @@ public class BakingServiceImpl implements BakingService { */ @Override @Transactional(rollbackFor = Exception.class) - public JSONObject ovenInAndOut(JSONObject whereJson) { + public JSONObject ovenInAndOut(JSONObject whereJson) throws InterruptedException { String option = whereJson.getString("option"); // 1-入箱 2-出箱 @@ -77,10 +86,16 @@ public class BakingServiceImpl implements BakingService { String temperature = whereJson.getString("temperature"); // 温度 String hours = whereJson.getString("hours"); // 时间 String point_code1 = whereJson.getString("point_code"); // 点位 + if (!SlitterTaskUtil.isNumeric(hours)) { + throw new BadRequestException("请输入合法的时间!"); + } + if (!SlitterTaskUtil.isNumeric(temperature)) { + throw new BadRequestException("请输入合法的温度!"); + } //查询该点位是否存在未完成的任务 JSONObject hasTask = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code1 = '" + point_code1 + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0); - if (hasTask!=null) { - throw new BadRequestException("当前点位"+point_code1+"存在正在执行的任务"+hasTask.getString("task_code")); + if (hasTask != null) { + throw new BadRequestException("当前点位" + point_code1 + "存在正在执行的任务" + hasTask.getString("task_code")); } //校验该设备是否启用,且母卷MES是否请求烘烤 //查询该母卷号、设备号对应的生箔工单 @@ -115,6 +130,12 @@ public class BakingServiceImpl implements BakingService { throw new BadRequestException("点位不能为空"); } + String maxHour = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MAX_HOUR").getValue(); + + if (Integer.parseInt(hours) >= Integer.parseInt(maxHour)) { + throw new BadRequestException("设置的最大烘烤时间不能超过"+maxHour+"分钟"); + } + /* * 根据点位判断是 冷却区入烘箱还是暂存区(对接位)入烘箱 */ @@ -139,19 +160,19 @@ public class BakingServiceImpl implements BakingService { jsonMap.put("point_location", jsonPointZc.getString("point_location")); JSONArray hot_rows = WQL.getWO("PDA_BAKING_01").addParamMap(jsonMap).process().getResultJSONArray(0); JSONObject jsonHotIvt = new JSONObject(); - log.debug("获取温度幅度hot_rows:"+hot_rows); + log.debug("获取温度幅度hot_rows:" + hot_rows); for (int i = 0; i < hot_rows.size(); i++) { JSONObject hot_row = hot_rows.getJSONObject(i); String point_code = hot_row.getString("point_code"); boolean exists = redisUtils.hHasKey(point_code, "temperature"); String point_temperature = ""; - if(exists){ + if (exists) { point_temperature = (String) redisUtils.hget(point_code, "temperature"); } if (ObjectUtil.isNotEmpty(point_temperature)) { if (point_temperature.equals(temperature)) { jsonHotIvt = hot_row; - log.debug("获取满足温度幅度jsonHotIvt:"+jsonHotIvt); + log.debug("获取满足温度幅度jsonHotIvt:" + jsonHotIvt); break; } } @@ -167,7 +188,7 @@ public class BakingServiceImpl implements BakingService { String point_code = hot_row.getString("point_code"); boolean exists = redisUtils.hHasKey(point_code, "temperature"); String point_temperature = ""; - if(exists){ + if (exists) { point_temperature = (String) redisUtils.hget(point_code, "temperature"); } if (ObjectUtil.isNotEmpty(point_temperature)) { @@ -261,13 +282,16 @@ public class BakingServiceImpl implements BakingService { case "B2": reging_id = RegionTypeEnum.B2_HKZC.getId(); break; + case "B1": + reging_id = RegionTypeEnum.B1_HKZC.getId(); + break; default: break; } JSONObject map = new JSONObject(); map.put("flag", "1"); if (product_area.equals("B2")) { - map.put("flag", "302"); + map.put("flag", "303"); } map.put("reging_id", reging_id); map.put("point_location", point_location); @@ -276,7 +300,7 @@ public class BakingServiceImpl implements BakingService { JSONObject point_code2_jo = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); if (ObjectUtil.isEmpty(point_code2_jo)) { - throw new BadRequestException("未查询到可用的点位类型为入箱的烘箱对接位!"); + throw new BadRequestException("未查询到可用的点位类型为入箱的烘箱对接位(可能被占用,请稍后再试)!"); } /*if (ObjectUtil.isEmpty(pointArr)) { if (StrUtil.equals(point_location, "0")) map.put("point_location", "1"); @@ -349,7 +373,7 @@ public class BakingServiceImpl implements BakingService { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject jsonCool = new JSONObject(); - jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonCool.put("iostorinv_id", IdUtil.getLongId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "1"); jsonCool.put("material_id", jsonMater.getString("material_id")); @@ -396,62 +420,74 @@ public class BakingServiceImpl implements BakingService { //判断区域是否属于B1,B1的出烘箱流程出到对应的半成品区 if ("B1".equals(product_area)) { - JSONObject jsonRaw = rawTab.query("container_name = '" + jsonHotIvt.getString("container_name") + "' and is_delete = '0'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonRaw)) { - throw new BadRequestException("未查询到母卷号:" + jsonHotIvt.getString("container_name") + "对应的生箔工单!"); - } - JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonMater)) { - throw new BadRequestException("物料基础信息中无此物料!"); - } + RLock lock = redissonClient.getLock("AutoIntoHotCacheTask"); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + JSONObject jsonRaw = rawTab.query("container_name = '" + jsonHotIvt.getString("container_name") + "' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonRaw)) { + throw new BadRequestException("未查询到母卷号:" + jsonHotIvt.getString("container_name") + "对应的生箔工单!"); + } + JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonMater)) { + throw new BadRequestException("物料基础信息中无此物料!"); + } - //查询当前点位为空且没有任务的桁架内缓存点 - JSONObject cache_param = new JSONObject(); - cache_param.put("flag", "4"); - cache_param.put("point_location", jsonHotIvt.getString("point_location")); - cache_param.put("product_area", jsonHotIvt.getString("product_area")); - JSONObject cache_jo = WQL.getWO("PDA_COOLIN").addParamMap(cache_param).process().uniqueResult(0); - if (ObjectUtil.isEmpty(cache_jo)) { - throw new BadRequestException("桁架范围内没有可用的空点位,请检查库存!"); + //查询当前点位为空且没有任务的桁架内缓存点 + JSONObject cache_param = new JSONObject(); + cache_param.put("flag", "4"); + cache_param.put("point_location", jsonHotIvt.getString("point_location")); + cache_param.put("product_area", jsonHotIvt.getString("product_area")); + JSONObject cache_jo = WQL.getWO("PDA_COOLIN").addParamMap(cache_param).process().uniqueResult(0); + if (ObjectUtil.isEmpty(cache_jo)) { + throw new BadRequestException("桁架范围内没有可用的空点位,请检查库存!"); + } + + // 3.创建任务 + JSONObject param = new JSONObject(); + param.put("point_code1", point_code1); + param.put("point_code2", cache_jo.getString("point_code")); + param.put("material_code", jsonHotIvt.getString("container_name")); + param.put("product_area", jsonHotIvt.getString("product_area")); + OutHotTask outHotTask = new OutHotTask(); + String task_id = outHotTask.createTask(param); + + //查询该母卷对应最近的一条入烘箱记录 + JSONObject last_hot_mst = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst").query("container_name = '" + jsonHotIvt.getString("container_name") + "' AND io_type = '0' order by confirm_time desc").uniqueResult(0); + + JSONObject hotParam = new JSONObject(); + hotParam.put("container_name", jsonRaw.getString("container_name")); + hotParam.put("workorder_id", jsonRaw.getString("workorder_id")); + hotParam.put("material_id", jsonMater.getString("material_id")); + hotParam.put("qty", jsonRaw.get("qty")); + hotParam.put("io_type", "1"); + hotParam.put("qty_unit_id", jsonMater.getString("base_unit_id")); + hotParam.put("task_id", task_id); + hotParam.put("start_point_code", point_code1); + hotParam.put("end_point_code", cache_jo.getString("point_code")); + boolean exists = redisUtils.hHasKey(point_code1, "temperature"); + String point_temperature = ""; + if (exists) { + point_temperature = (String) redisUtils.hget(point_code1, "temperature"); + } else { + throw new BadRequestException("当前操作点位设备:" + point_code1 + ",无法获取温度,请稍后再试!"); + } + hotParam.put("temperature", point_temperature); + + if (ObjectUtil.isEmpty(last_hot_mst)) { + hotParam.put("oven_time", "480"); + } else { + hotParam.put("oven_time", last_hot_mst.getString("oven_time")); + } + this.createHotIoMst(hotParam); + } else { + throw new BadRequestException("当前其他任务正在分配冷却站点,为避免重复分配请稍后再试!"); + } + } finally { + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); + } } - - // 3.创建任务 - JSONObject param = new JSONObject(); - param.put("point_code1", point_code1); - param.put("point_code2", cache_jo.getString("point_code")); - param.put("material_code", jsonHotIvt.getString("container_name")); - param.put("product_area", jsonHotIvt.getString("product_area")); - OutHotTask outHotTask = new OutHotTask(); - String task_id = outHotTask.createTask(param); - - //查询该母卷对应最近的一条入烘箱记录 - JSONObject last_hot_mst = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst").query("container_name = '" + jsonHotIvt.getString("container_name") + "' AND io_type = '0' order by confirm_time desc").uniqueResult(0); - - JSONObject hotParam = new JSONObject(); - hotParam.put("container_name", jsonRaw.getString("container_name")); - hotParam.put("workorder_id", jsonRaw.getString("workorder_id")); - hotParam.put("material_id", jsonMater.getString("material_id")); - hotParam.put("qty", jsonRaw.get("qty")); - hotParam.put("io_type", "1"); - hotParam.put("qty_unit_id", jsonMater.getString("base_unit_id")); - hotParam.put("task_id", task_id); - hotParam.put("start_point_code", point_code1); - hotParam.put("end_point_code", cache_jo.getString("point_code")); - boolean exists = redisUtils.hHasKey(point_code1, "temperature"); - String point_temperature = ""; - if(exists){ - point_temperature = (String) redisUtils.hget(point_code1, "temperature"); - }else{ - throw new BadRequestException("当前操作点位设备:"+point_code1+",无法获取温度,请稍后再试!"); - } - hotParam.put("temperature", point_temperature); - - if (ObjectUtil.isEmpty(last_hot_mst)) { - hotParam.put("oven_time", "480"); - } else { - hotParam.put("oven_time", last_hot_mst.getString("oven_time")); - } - this.createHotIoMst(hotParam); } else { // 出烘箱,创建桁架任务到对接位 if (!in_area_id.contains(product_area)) { @@ -471,6 +507,9 @@ public class BakingServiceImpl implements BakingService { case "A4": reging_id = RegionTypeEnum.D_HKZC.getId(); break; + case "B1": + reging_id = RegionTypeEnum.B1_HKZC.getId(); + break; case "B2": reging_id = RegionTypeEnum.B2_HKZC.getId(); break; @@ -486,7 +525,7 @@ public class BakingServiceImpl implements BakingService { JSONArray pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().getResultJSONArray(0); if (ObjectUtil.isEmpty(pointArr)) { - throw new BadRequestException("没有无货且没有任务的点位类型为出箱的烘箱对接位!"); + throw new BadRequestException("出烘箱对接位,被货物或任务占用,请检查处理或等待!"); } // 2.判断暂存位是否有任务:找到无任务的暂存位 @@ -505,7 +544,7 @@ public class BakingServiceImpl implements BakingService { } } if (ObjectUtil.isEmpty(point_code2)) { - throw new BadRequestException("没有无货且没有任务的点位类型为出箱的烘箱对接位!"); + throw new BadRequestException("出烘箱对接位,被货物或任务占用,请检查处理或等待!!"); } // 3.创建任务 @@ -541,10 +580,10 @@ public class BakingServiceImpl implements BakingService { hotParam.put("end_point_code", point_code2); boolean exists = redisUtils.hHasKey(point_code1, "temperature"); String point_temperature = ""; - if(exists){ + if (exists) { point_temperature = (String) redisUtils.hget(point_code1, "temperature"); - }else{ - throw new BadRequestException("当前操作点位设备:"+point_code1+",无法获取温度,请稍后再试!"); + } else { + throw new BadRequestException("当前操作点位设备:" + point_code1 + ",无法获取温度,请稍后再试!"); } hotParam.put("temperature", point_temperature); if (ObjectUtil.isEmpty(last_hot_mst)) { @@ -559,7 +598,6 @@ public class BakingServiceImpl implements BakingService { result.put("message", "操作成功!"); return result; } - public JSONObject getJsonObject(String product_area, JSONObject point_code2_jo, String temperature) { if (ObjectUtil.isEmpty(point_code2_jo)) { throw new BadRequestException("烘箱对接没有可用位置!"); @@ -575,7 +613,7 @@ public class BakingServiceImpl implements BakingService { String point_code = hot_row.getString("point_code"); boolean exists = redisUtils.hHasKey(point_code, "temperature"); String point_temperature = ""; - if(exists){ + if (exists) { point_temperature = (String) redisUtils.hget(point_code, "temperature"); } if (ObjectUtil.isNotEmpty(point_temperature)) { @@ -705,7 +743,7 @@ public class BakingServiceImpl implements BakingService { } JSONObject jsonCool = new JSONObject(); - jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonCool.put("iostorinv_id", IdUtil.getLongId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "0"); jsonCool.put("material_id", jsonMater.getString("material_id")); @@ -745,7 +783,7 @@ public class BakingServiceImpl implements BakingService { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject jsonHotMst = new JSONObject(); - jsonHotMst.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonHotMst.put("iostorinv_id", IdUtil.getLongId()); jsonHotMst.put("bill_code", CodeUtil.getNewCode("HOT_BILL_CODE")); jsonHotMst.put("container_name", param.getString("container_name")); jsonHotMst.put("workorder_id", param.getString("workorder_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java index 26e118d65..332b256ee 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.pda.mps.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -22,6 +22,7 @@ import org.nl.wms.ext.mes.service.LmsToMesService; import org.nl.wms.pda.mps.eum.RegionTypeEnum; import org.nl.wms.pda.mps.service.FeedingService; import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.tasks.CoolCutTask; import org.nl.wms.sch.tasks.OutHotTask; import org.nl.wms.st.inbill.service.CheckOutBillService; @@ -142,7 +143,7 @@ public class FeedingServiceImpl implements FeedingService { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject jsonCool = new JSONObject(); - jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonCool.put("iostorinv_id", IdUtil.getLongId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "1"); jsonCool.put("material_id", mater_jo.getString("material_id")); @@ -289,15 +290,15 @@ public class FeedingServiceImpl implements FeedingService { throw new BadRequestException("该点位上不存在母卷!"); } if (!StrUtil.equals(cool_jo.getString("container_name"), container_name)) { - throw new BadRequestException("该点位:"+point_code+"不存在母卷:"+container_name); + throw new BadRequestException("该点位:" + point_code + "不存在母卷:" + container_name); } JSONObject result = new JSONObject(); result.put("message", "操作成功!"); //B1烘箱外边的冷却点 if (cool_jo.getString("product_area").equals("B1") && cool_jo.getString("point_type").equals("1")) { - JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + next_point_code + "' and product_area='"+cool_jo.getString("product_area")+"'").uniqueResult(0); + JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + next_point_code + "' and product_area='" + cool_jo.getString("product_area") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(cut_jo)) { - cut_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + next_point_code + "' and product_area='"+cool_jo.getString("product_area")+"' and point_type in ('1','6')").uniqueResult(0); + cut_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + next_point_code + "' and product_area='" + cool_jo.getString("product_area") + "' and point_type in ('1','6')").uniqueResult(0); } if (ObjectUtil.isEmpty(cut_jo)) { throw new BadRequestException("请扫描B1车间分切机满轴点位、分切缓存位满轴点位、生箔冷却缓存位满轴点位做为终点!"); @@ -307,7 +308,7 @@ public class FeedingServiceImpl implements FeedingService { if (StrUtil.equals("01", cut_jo.getString("empty_point_status"))) { jo.put("point_code1", cool_jo.getString("full_point_code")); jo.put("point_code2", cut_jo.getString("full_point_code")); - jo.put("material_code",cool_jo.getString("container_name")); + jo.put("material_code", cool_jo.getString("container_name")); jo.put("product_area", cut_jo.getString("product_area")); jo.put("task_type", "010302"); } else { @@ -416,27 +417,47 @@ public class FeedingServiceImpl implements FeedingService { //只找入箱点位 map.put("point_type", "5"); + boolean status_flag = false; JSONObject pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); if (ObjectUtil.isEmpty(pointArr)) { map.put("point_location", cool_jo.getString("point_location").equals("0") ? "1" : "0"); pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); if (ObjectUtil.isEmpty(pointArr)) { - throw new BadRequestException("没有无货且没有任务的点位类型为出箱的烘箱对接位!"); + status_flag = true; + // throw new BadRequestException("出烘箱对接位,被货物或任务占用,请检查处理或等待!!"); } } + // 2.找冷却区空货位 + JSONObject cool_map = new JSONObject(); + cool_map.put("flag", "2"); + cool_map.put("product_area", cool_jo.getString("product_area")); + cool_map.put("point_location", "0"); + + JSONObject jsonCooIvt = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(cool_map).process().uniqueResult(0); + // 如果为空 + if (ObjectUtil.isEmpty(jsonCooIvt)) { + cool_map.put("point_location", "1"); + jsonCooIvt = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(cool_map).process().uniqueResult(0); + } + if (ObjectUtil.isEmpty(jsonCooIvt)) { + throw new BadRequestException("冷却区空位不足"); + } - task_jo.put("point_code2", pointArr.getString("point_code")); //将分切机的点位作为目的点,桁架任务完成时,自动创建AGV任务 task_jo.put("point_code3", next_point_code); task_jo.put("material_code", cool_jo.getString("container_name")); task_jo.put("product_area", cool_jo.getString("product_area")); task_jo.put("task_type", "010205"); - OutHotTask outHotTask = new OutHotTask(); + if (status_flag) { + task_jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); + }else { + task_jo.put("point_code2", pointArr.getString("point_code")); + } + OutHotTask outHotTask = SpringContextHolder.getBean(OutHotTask.class); String task_id = outHotTask.createTask(task_jo); } - } - else { + } else { JSONObject jo = new JSONObject(); //查询该分切机对应的点位 JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + next_point_code + "'").uniqueResult(0); @@ -496,7 +517,7 @@ public class FeedingServiceImpl implements FeedingService { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject jsonCool = new JSONObject(); - jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonCool.put("iostorinv_id", IdUtil.getLongId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "1"); jsonCool.put("material_id", mater_jo.getString("material_id")); @@ -537,7 +558,10 @@ public class FeedingServiceImpl implements FeedingService { //查询对应的分切点位是否存在 JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("empty_point_code = '" + point_code + "'").uniqueResult(0); if (ObjectUtil.isEmpty(cut_jo)) { - throw new BadRequestException("请输入或者扫码分切区域的空轴点位!"); + cut_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("empty_point_code = '" + point_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(cut_jo)) { + throw new BadRequestException("请输入或者扫码分切区域的空轴点位!"); + } } if (StrUtil.equals("01", cut_jo.getString("empty_point_status"))) { throw new BadRequestException("该点位库存状态不存在空轴!"); @@ -575,12 +599,12 @@ public class FeedingServiceImpl implements FeedingService { JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + point_code + "'").uniqueResult(0); //B1支持从分切上料暂存架送回母卷 - if(point_code.contains("B1_FQZC")){ + if (point_code.contains("B1_FQZC")) { cut_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code + "'").uniqueResult(0); if (ObjectUtil.isEmpty(cut_jo)) { throw new BadRequestException("请输入或者扫码分切区域的满轴点位!"); } - }else{ + } else { if (ObjectUtil.isEmpty(cut_jo)) { throw new BadRequestException("请输入或者扫码分切区域的满轴点位!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/HandleBakingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/HandleBakingServiceImpl.java index f6998423d..b3dc37735 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/HandleBakingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/HandleBakingServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.pda.mps.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; @@ -92,7 +92,7 @@ public class HandleBakingServiceImpl implements HandleBakingService { //插入冷却区出入库单表 // 生成冷却区出入表 JSONObject jsonCool = new JSONObject(); - jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonCool.put("iostorinv_id", IdUtil.getLongId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "1"); jsonCool.put("material_id", jsonMater.getString("material_id")); @@ -218,7 +218,7 @@ public class HandleBakingServiceImpl implements HandleBakingService { //生成冷却区入库记录 JSONObject jsonCool = new JSONObject(); - jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonCool.put("iostorinv_id", IdUtil.getLongId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "0"); jsonCool.put("material_id", jsonMater.getString("material_id")); @@ -343,7 +343,7 @@ public class HandleBakingServiceImpl implements HandleBakingService { WQLObject stIvtHotregioniomstService = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst"); // 烘箱区出入主表 JSONObject jsonHotMst = new JSONObject(); - jsonHotMst.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonHotMst.put("iostorinv_id", IdUtil.getLongId()); jsonHotMst.put("bill_code", CodeUtil.getNewCode("HOT_BILL_CODE")); jsonHotMst.put("container_name", param.getString("container_name")); jsonHotMst.put("workorder_id", param.getString("workorder_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java index 27bb52e8b..1d2285908 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.pda.mps.service.impl; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -373,7 +373,7 @@ public class RawFoilServiceImpl implements RawFoilService { // 插入生箔工序工单表 JSONObject json = new JSONObject(); - json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("workorder_id", IdUtil.getLongId()); json.put("container_name", container_name); json.put("resource_name", device_jo.getString("ext_code")); json.put("mfg_order_name", "test"); @@ -410,7 +410,7 @@ public class RawFoilServiceImpl implements RawFoilService { String bigType = whereJson.getString("big_type"); // 插入生箔工序工单表 JSONObject json = new JSONObject(); - json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("workorder_id", IdUtil.getLongId()); json.put("container_name", whereJson.getString("container_name")); json.put("resource_name", device_jo.getString("ext_code")); json.put("mfg_order_name", "test"); @@ -555,6 +555,10 @@ public class RawFoilServiceImpl implements RawFoilService { String container_name = jsonRaw.getString("container_name"); JSONObject task_jo = WQLObject.getWQLObject("SCH_BASE_Task").query("material_code = '" + container_name + "' and task_status <> '07' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(task_jo)) { + throw new BadRequestException("当前母卷AGV搬运任务不存在或已被强制完成!"); + } + // 查询生箔点位库存表 JSONObject jsonSb = stIvtSbpointivtService.query("ext_code = '" + jsonRaw.getString("resource_name") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonSb)) { @@ -574,7 +578,7 @@ public class RawFoilServiceImpl implements RawFoilService { JSONObject result = wmsToAcsService.updateTask(paramArr); if (!StrUtil.equals(result.getString("status"), "200")) { - throw new BadRequestException("操作失败:" + result.getString("message ")); + throw new BadRequestException("操作失败:" + result.getString("errArr")); } // 更新工单状态为确认下卷 @@ -602,6 +606,10 @@ public class RawFoilServiceImpl implements RawFoilService { String container_name = jsonRaw.getString("container_name"); JSONObject task_jo = WQLObject.getWQLObject("SCH_BASE_Task").query("material_code = '" + container_name + "' and task_status <> '07' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(task_jo)) { + throw new BadRequestException("当前母卷AGV搬运任务不存在或已被强制完成!"); + } + // 查询生箔点位库存表 JSONObject jsonSb = WQLObject.getWQLObject("st_ivt_sbpointivt").query("ext_code = '" + jsonRaw.getString("resource_name") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonSb)) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql index e3531b8b9..a0c253c9c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql @@ -85,7 +85,7 @@ IFNULL(po.material_code,'') = '' ENDOPTION OPTION 输入.mater_flag = "1" - IFNULL(po.material_code,'') = '' + IFNULL(po.material_code,'') = '' ENDOPTION UNION SELECT @@ -294,6 +294,44 @@ ENDQUERY ENDIF + IF 输入.flag = "303" + QUERY + SELECT + * + FROM + sch_base_point p + WHERE + p.is_delete = '0' + AND p.is_used = '1' + OPTION 输入.reging_id <> "" + p.region_id = 输入.reging_id + ENDOPTION + OPTION 输入.point_type <> "" + p.point_type = 输入.point_type + ENDOPTION + OPTION 输入.cant_location <> "" + p.point_location not in 输入.cant_location + ENDOPTION + AND p.point_type = '4' + AND p.point_status = '1' + AND 0 = ( + SELECT + COUNT(*) + FROM + sch_base_task t + WHERE + t.task_status < '07' + AND ( + t.point_code1 = p.point_code + OR t.point_code2 = p.point_code + OR t.point_code3 = p.point_code + OR t.point_code4 = p.point_code + ) + AND t.is_delete = '0') + ENDSELECT + ENDQUERY + ENDIF + IF 输入.flag = "302" QUERY SELECT @@ -403,7 +441,9 @@ is_used = '1' AND IFNULL(po.material_code,'') = '' AND po.region_id = 输入.reging_id - AND po.point_location = 输入.point_location + OPTION 输入.point_location <> "" + po.point_location = 输入.point_location + ENDOPTION AND po.point_type = 输入.point_type AND NOT EXISTS ( SELECT diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java index 9733355b1..33d5bb044 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.pda.st.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -411,7 +411,7 @@ public class ProductInstorServiceImpl implements ProductInstorService { throw new BadRequestException("该木箱已经分配过货位,无法继续分配!"); } - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String task_id = IdUtil.getLongId() + ""; //直接分配虚拟区货位,并确认 if ("BC01".equals(sub_jo.getString("ext_code"))) { JSONObject jsonObject = WQLObject.getWQLObject("st_ivt_sectattr").query("sect_id = '" + whereJson.getString("sect_id") + "'") diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java index 401ec7ed3..6e5cd739a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.pdm.bi.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -152,7 +152,7 @@ public class SubpackagerelationServiceImpl implements SubpackagerelationService String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setWorkorder_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setCreate_time(now); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/rest/CoolPointIvtController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/rest/CoolPointIvtController.java index c71c06d2c..2962bb6f8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/rest/CoolPointIvtController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/rest/CoolPointIvtController.java @@ -1,6 +1,7 @@ package org.nl.wms.pdm.ivt.rest; +import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -79,4 +80,10 @@ public class CoolPointIvtController { return new ResponseEntity<>(HttpStatus.OK); } + @GetMapping("B1screen") + @SaIgnore + public ResponseEntity B1screen() { + return new ResponseEntity<>(coolpointivtService.B1screen(), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/rest/HotPointIvtController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/rest/HotPointIvtController.java index b598d5d03..3b93a6000 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/rest/HotPointIvtController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/rest/HotPointIvtController.java @@ -1,6 +1,7 @@ package org.nl.wms.pdm.ivt.rest; +import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -77,4 +78,10 @@ public class HotPointIvtController { hotpointivtService.uploadMes(form); return new ResponseEntity<>(HttpStatus.OK); } + + @GetMapping("B1screen") + @SaIgnore + public ResponseEntity B1screen() { + return new ResponseEntity<>(hotpointivtService.B1screen(), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/CoolPointIvtService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/CoolPointIvtService.java index a82690b39..168af342c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/CoolPointIvtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/CoolPointIvtService.java @@ -1,5 +1,6 @@ package org.nl.wms.pdm.ivt.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.nl.wms.pdm.ivt.service.dto.CoolPointIvtDto; import org.springframework.data.domain.Pageable; @@ -79,4 +80,5 @@ public interface CoolPointIvtService { Map coolRegionIOQueryAll(Map whereJson, Pageable page); void uploadMes(JSONObject form); -} + + JSONArray B1screen();} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/HotPointIvtService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/HotPointIvtService.java index 9abfa2f79..61587c210 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/HotPointIvtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/HotPointIvtService.java @@ -1,5 +1,6 @@ package org.nl.wms.pdm.ivt.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.nl.wms.pdm.ivt.service.dto.HotPointIvtDto; import org.springframework.data.domain.Pageable; @@ -79,5 +80,6 @@ public interface HotPointIvtService { Map taskDtlQuery(Map whereJson, Pageable page); void uploadMes(JSONObject form); + JSONArray B1screen(); -} \ No newline at end of file +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CoolPointIvtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CoolPointIvtServiceImpl.java index 914870d0f..6f985189f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CoolPointIvtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CoolPointIvtServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.pdm.ivt.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -41,6 +41,17 @@ import java.util.Map; @Slf4j public class CoolPointIvtServiceImpl implements CoolPointIvtService { + + @Override + public JSONArray B1screen() { + //获取人员对应的区域 + HashMap map = new HashMap(); + map.put("flag", "1"); + map.put("in_area_id", "('B1','B2')"); + JSONArray jsonArray = WQL.getWO("ST_IVT_COOLPOINTIVT").addParamMap(map).process().getResultJSONArray(0); + return jsonArray; + } + @Override public Map queryAll(Map whereJson, Pageable page) { @@ -107,7 +118,7 @@ public class CoolPointIvtServiceImpl implements CoolPointIvtService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setIvt_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setIvt_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CutPointIvtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CutPointIvtServiceImpl.java index 526b58fd9..11063d774 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CutPointIvtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CutPointIvtServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.pdm.ivt.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -93,7 +93,7 @@ public class CutPointIvtServiceImpl implements CutPointIvtService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setIvt_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setIvt_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/DeliveryPointIvtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/DeliveryPointIvtServiceImpl.java index 04d1d1b4a..81f5d709b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/DeliveryPointIvtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/DeliveryPointIvtServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.pdm.ivt.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -91,7 +91,7 @@ public class DeliveryPointIvtServiceImpl implements DeliveryPointIvtService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setIvt_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setIvt_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/HotPointIvtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/HotPointIvtServiceImpl.java index 61c30b2fe..6c141511f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/HotPointIvtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/HotPointIvtServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.pdm.ivt.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -45,6 +45,32 @@ public class HotPointIvtServiceImpl implements HotPointIvtService { @Autowired private RedisUtils redisUtils; + @Override + public JSONArray B1screen() { + HashMap map = new HashMap(); + map.put("flag", "1"); + map.put("in_area_id", "('B1','B2')"); + JSONArray rows = WQL.getWO("ST_IVT_HOTPOINTIVT").addParamMap(map).process().getResultJSONArray(0); + JSONArray new_rows = new JSONArray(); + for (int i = 0; i < rows.size(); i++) { + JSONObject row = rows.getJSONObject(i); + Object redisTemp = redisUtils.hget(row.getString("point_code"), "temperature"); + String temperature = "未知"; + if (redisTemp!=null){ + temperature = String.valueOf(redisTemp); + } + Object redislastTime = redisUtils.hget(row.getString("point_code"), "temperature"); + String lastTime = "未知"; + if (redislastTime!=null){ + lastTime = String.valueOf(redislastTime); + } + row.put("temperature", temperature); + row.put("c", lastTime); + new_rows.add(row); + } + return new_rows; + } + @Override public Map queryAll(Map whereJson, Pageable page) { //获取人员对应的区域 @@ -117,7 +143,7 @@ public class HotPointIvtServiceImpl implements HotPointIvtService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setIvt_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setIvt_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/PackagePointIvtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/PackagePointIvtServiceImpl.java index 7fafae9da..23d481570 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/PackagePointIvtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/PackagePointIvtServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.pdm.ivt.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -91,7 +91,7 @@ public class PackagePointIvtServiceImpl implements PackagePointIvtService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setIvt_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setIvt_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/SbPointIvtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/SbPointIvtServiceImpl.java index edc370da3..26a8bc3db 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/SbPointIvtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/SbPointIvtServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.pdm.ivt.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -91,7 +91,7 @@ public class SbPointIvtServiceImpl implements SbPointIvtService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setPoint_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setPoint_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/rest/SlittingproductionplanController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/rest/SlittingproductionplanController.java index d3627290d..9dd38767f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/rest/SlittingproductionplanController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/rest/SlittingproductionplanController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; import org.nl.modules.logging.annotation.Log; import org.nl.wms.pdm.service.SlittingproductionplanService; import org.nl.wms.pdm.service.dto.SlittingproductionplanDto; @@ -30,6 +31,7 @@ public class SlittingproductionplanController { private final SlittingproductionplanService slittingproductionplanService; private final IPdmBiSlittingproductionplanService biSlittingproductionplanService; + private final SlitterService slitterService; @GetMapping @Log("查询分切计划") @@ -111,4 +113,9 @@ public class SlittingproductionplanController { biSlittingproductionplanService.setDirection(whereJson); return new ResponseEntity<>(HttpStatus.OK); } + @Log("加急") + @PostMapping("/urgentPlan") + public ResponseEntity urgentPlan(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(slitterService.urgentBatchPlan(whereJson), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/RawfoilworkorderServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/RawfoilworkorderServiceImpl.java index 668db5517..32c0d198b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/RawfoilworkorderServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/RawfoilworkorderServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.pdm.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -126,7 +126,7 @@ public class RawfoilworkorderServiceImpl implements RawfoilworkorderService { } - dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setWorkorder_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/SlittingproductionplanServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/SlittingproductionplanServiceImpl.java index ded9e2fcb..c8bbff227 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/SlittingproductionplanServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/SlittingproductionplanServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.pdm.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -128,7 +128,7 @@ public class SlittingproductionplanServiceImpl implements Slittingproductionplan String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setWorkorder_id(IdUtil.getLongId()); dto.setUpdate_optid(currentUserId); dto.setUpdate_optname(nickName); dto.setUpdate_time(now); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_COOLPOINTIVT.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_COOLPOINTIVT.wql index 053af445a..5dbf8ea89 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_COOLPOINTIVT.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_COOLPOINTIVT.wql @@ -56,34 +56,35 @@ IF 输入.flag = "1" PAGEQUERY SELECT - cool.* + cool.*, der.description FROM st_ivt_coolpointivt cool + LEFT JOIN PDM_BI_RawFoilWorkOrder der ON cool.container_name = der.container_name WHERE cool.product_area in 输入.in_area_id OPTION 输入.point_code <> "" - point_code LIKE 输入.point_code + cool.point_code LIKE 输入.point_code ENDOPTION OPTION 输入.container_name <> "" - container_name LIKE 输入.container_name + cool.container_name LIKE 输入.container_name ENDOPTION OPTION 输入.full_point_status <> "" - full_point_status = 输入.full_point_status + cool.full_point_status = 输入.full_point_status ENDOPTION OPTION 输入.empty_point_status <> "" - empty_point_status = 输入.empty_point_status + cool.empty_point_status = 输入.empty_point_status ENDOPTION OPTION 输入.cool_ivt_status <> "" - cool_ivt_status = 输入.cool_ivt_status + cool.cool_ivt_status = 输入.cool_ivt_status ENDOPTION OPTION 输入.product_area <> "" - product_area = 输入.product_area + cool.product_area = 输入.product_area ENDOPTION OPTION 输入.is_used <> "" is_used = 输入.is_used ENDOPTION OPTION 输入.point_location <> "" - point_location = 输入.point_location + cool.point_location = 输入.point_location ENDOPTION OPTION 输入.begin_time <> "" instorage_time >= 输入.begin_time @@ -129,4 +130,4 @@ ENDSELECT ENDPAGEQUERY - ENDIF \ No newline at end of file + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql index 018e1f4d9..2967abff2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql @@ -54,22 +54,23 @@ IF 输入.flag = "1" PAGEQUERY SELECT - hot.* + hot.*, der.description FROM st_ivt_hotpointivt hot + LEFT JOIN PDM_BI_RawFoilWorkOrder der ON hot.container_name = der.container_name WHERE hot.product_area in 输入.in_area_id OPTION 输入.point_location <> "" - point_location = 输入.point_location + hot.point_location = 输入.point_location ENDOPTION OPTION 输入.point_code <> "" - point_code LIKE 输入.point_code + hot.point_code LIKE 输入.point_code ENDOPTION OPTION 输入.point_status <> "" - point_status = 输入.point_status + hot.point_status = 输入.point_status ENDOPTION OPTION 输入.product_area <> "" - product_area = 输入.product_area + hot.product_area = 输入.product_area ENDOPTION OPTION 输入.is_used <> "" is_used = 输入.is_used @@ -135,4 +136,4 @@ ENDSELECT ENDPAGEQUERY - ENDIF \ No newline at end of file + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/ComPareUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/ComPareUtil.java index ecc4992d0..ce6d283e5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/ComPareUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/ComPareUtil.java @@ -27,8 +27,6 @@ public class ComPareUtil { public static JSONObject CompareWhight(JSONObject jsonObject) { - WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); - String vehicle_code = jsonObject.getString("vehicle_code"); // 处理子卷号 @@ -37,23 +35,14 @@ public class ComPareUtil { throw new BadRequestException("子卷号不能为空!"); } - List pcsnList = Arrays.asList(material_barcode.split(",")); - // 查询子卷包装关系 - List subList = subTab.query("container_name in ('" + String.join("','", pcsnList) + "') and status in ('0','1','99')") - .getResultJSONArray(0).toJavaList(JSONObject.class); - if (ObjectUtil.isEmpty(subList)) { - throw new BadRequestException("未查询到子卷包装信息!"); - } - if (StringUtils.isBlank(subList.get(0).getString("package_box_sn"))) { - throw new BadRequestException("木箱号不能为空!"); - } //查询托盘重量 JSONObject vehicle_ext = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0); if (ObjectUtil.isEmpty(vehicle_ext)) { throw new BadRequestException("未查询到托盘的扩展信息"); } + IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService = SpringContextHolder.getBean(IpdmBiSubpackagerelationService.class); - List list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, vehicle_ext.getString("pcsn"))); + List list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, jsonObject.getString("sub_box"))); if (ObjectUtil.isEmpty(list)) { throw new BadRequestException("未查询到对应的木箱包装关系!"); } @@ -72,15 +61,16 @@ public class ComPareUtil { } //查询子卷入库配置 IPdmBiContainerinboundService iPdmBiContainerinboundService = SpringContextHolder.getBean(IPdmBiContainerinboundService.class); - PdmBiContainerinbound pdmBiContainerinbound = iPdmBiContainerinboundService.getOne(new QueryWrapper() - .eq("box", sub.getPackage_box_sn())); + PdmBiContainerinbound pdmBiContainerinbound = iPdmBiContainerinboundService.list(new QueryWrapper() + .eq("box", sub.getPackage_box_sn()) + .orderByDesc("id")).get(0); JSONObject json = new JSONObject(); json.put("compaer_result", compaer_result); json.put("box_no", sub.getPackage_box_sn()); json.put("box_weight", sub.getBox_weight().intValue()); json.put("current_weight", new BigDecimal(current_weight).intValue()); - json.put("containers", list.stream().map(a->a.getContainer_name()).collect(Collectors.toList())); - json.put("inbound", (pdmBiContainerinbound != null ? pdmBiContainerinbound.getInbound():false)); + json.put("containers", list.stream().map(a -> a.getContainer_name()).collect(Collectors.toList())); + json.put("inbound", (pdmBiContainerinbound != null ? pdmBiContainerinbound.getInbound() : false)); return json; } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java index 46dbc118e..33b0b67a0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringUtils; +import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.AcsUtil; @@ -36,17 +37,14 @@ public abstract class AbstractAcsTask { return addTask(); } - public List schedule(String taskId) { - return addTask(taskId); - } - /** * 添加任务进行下发 * * @return */ public abstract List addTask(); - public List addTask(String taskId){ + + public List addTask(SchBaseTask task){ throw new BadRequestException("当前类没有重写addTask(taskId)方法"); }; @@ -120,6 +118,11 @@ public abstract class AbstractAcsTask { * */ public JSONObject immediateNotifyAcs(String task_id) { + try { + Thread.sleep(1000); + }catch (Exception ex){ + + } List taskList = this.schedule(); if (ObjectUtil.isNotEmpty(taskList)) { JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList)); @@ -130,6 +133,21 @@ public abstract class AbstractAcsTask { } } return null; + } + public JSONObject immediateTaskNotifyAcs(SchBaseTask task) { + if (task==null){ + throw new BadRequestException("任务下发参数不能为空"); + } + List taskList = this.addTask(task); + if (ObjectUtil.isNotEmpty(taskList)) { + JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList)); + if (acsUtil == null){ + return AcsUtil.notifyAcs("api/wms/task", arr); + }else { + return acsUtil.notifyAcs3("api/wms/task", arr); + } + } + return null; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoIntoHotCacheTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoIntoHotCacheTask.java index ef6db9464..145c7344a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoIntoHotCacheTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoIntoHotCacheTask.java @@ -10,6 +10,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.tasks.first_floor_area.auto.AutoSendToZxq; import org.nl.modules.wql.WQL; +import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.sch.tasks.InCoolIvtTask; import org.nl.wms.sch.tasks.InHotTask; import org.redisson.api.RLock; @@ -38,7 +39,7 @@ public class AutoIntoHotCacheTask { @SneakyThrows public void run() { log.info("定时对B1入暂存...."); - RLock lock = redissonClient.getLock(THIS_CLASS); + RLock lock = redissonClient.getLock("AutoIntoHotCacheTask"); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { @@ -54,7 +55,6 @@ public class AutoIntoHotCacheTask { log.info("烘箱对接位:{} 没找到暂存位!", task.getPoint_code1()); return; } - new InHotTask().immediateNotifyAcs(task.getTask_id()); task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); task.setPoint_code2(cache_jo.getString("point_code")); @@ -62,6 +62,8 @@ public class AutoIntoHotCacheTask { task.setUpdate_time(DateUtil.now()); task.setTask_type("010204"); taskService.updateById(task); + + SpringContextHolder.getBean(InHotTask.class).immediateNotifyAcs(task.getTask_id()); } } else { log.info("定时对B1入暂存任务被锁住。"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryDeviceStatus.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryDeviceStatus.java index f88afd89e..6487923c7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryDeviceStatus.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoQueryDeviceStatus.java @@ -35,6 +35,7 @@ public class AutoQueryDeviceStatus { boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock){ + log.info("正在更新温度...."); for (URLEnum url : URLEnum.values()) { try { String product_area = url.getProduct_area(); @@ -54,7 +55,7 @@ public class AutoQueryDeviceStatus { String countdown_house = row.getString("countdown_house"); String countdown_min = row.getString("countdown_min"); String countdown_sec = row.getString("countdown_sec"); - + log.info("设备:{} - 温度:{}", device_code, row.getString("now_temperature")); if (StrUtil.isEmpty(countdown_house)) { countdown_house = "0"; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java index e33475460..36eba6d6f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.sch.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -152,7 +152,7 @@ public class PointServiceImpl implements PointService { RegionDto regionDto = regionService.findById(dto.getRegion_id()); dto.setRegion_code(regionDto.getRegion_code()); dto.setRegion_name(regionDto.getRegion_name()); - dto.setPoint_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setPoint_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); @@ -352,7 +352,7 @@ public class PointServiceImpl implements PointService { for (int i = 0; i < arrStruct.size(); i++) { JSONObject json = arrStruct.getJSONObject(i); JSONObject structMap = new JSONObject(); - structMap.put("point_id", IdUtil.getSnowflake(1, 1).nextId()); + structMap.put("point_id", IdUtil.getLongId()); structMap.put("point_code", json.getString("struct_code")); structMap.put("point_name", json.getString("struct_name")); structMap.put("region_id", json.get("sect_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java index 5572770a0..f546ee514 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.sch.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -93,7 +93,7 @@ public class RegionServiceImpl implements RegionService { throw new BadRequestException("编码已存在"); } - dto.setRegion_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setRegion_id(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java index 8fb2a5ff2..881882fcc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -209,7 +209,7 @@ public class CallEmpReelTask extends AbstractAcsTask { throw new BadRequestException("终点未找到可用点位:" + point_code2); } - //创建桁架任务将子卷搬运到桁架下的半成品缓存位 + /*//创建桁架任务将子卷搬运到桁架下的半成品缓存位 //查询当前点位为空且没有任务的桁架内缓存点 JSONObject cache_param = new JSONObject(); cache_param.put("flag", "4"); @@ -221,8 +221,8 @@ public class CallEmpReelTask extends AbstractAcsTask { if ("B1".equals(jsonTask.getString("product_area"))) { // 创建半条任务 JSONObject jo = new JSONObject(); - jo.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("task_id", IdUtil.getLongId()); + jo.put("task_code", IdUtil.getLongId()); jo.put("task_type", "010206"); jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); jo.put("point_code1", point_code4); @@ -250,7 +250,29 @@ public class CallEmpReelTask extends AbstractAcsTask { param.put("type", "3"); InHotTask inHotTask = SpringContextHolder.getBean(InHotTask.class); inHotTask.createTask(param); - } + }*/ + JSONObject cache_param = new JSONObject(); + cache_param.put("flag", "4"); + cache_param.put("point_location", jsonIvt.getString("point_location")); + cache_param.put("product_area", jsonIvt.getString("product_area")); + // 创建半条任务 + JSONObject jo = new JSONObject(); + jo.put("task_id", IdUtil.getLongId()); + jo.put("task_code", IdUtil.getLongId()); + jo.put("task_type", "010206"); + jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); + jo.put("point_code1", point_code4); + jo.put("point_code2", ""); + jo.put("material_code", jsonTask.getString("material_code")); + jo.put("product_area", jsonTask.getString("product_area")); + jo.put("handle_class", InHotTask.class.getName()); + jo.put("remark", cache_param); + jo.put("type", "3"); + jo.put("priority", "1"); + jo.put("sort_seq", "1"); + jo.put("create_time", DateUtil.now()); + jo.put("acs_task_type", "6"); + taskTab.insert(jo); // 更新点位库存状态 jsonIvt2.put("point_status", "2"); jsonIvt2.put("material_code", jsonTask.getString("material_code")); @@ -358,7 +380,7 @@ public class CallEmpReelTask extends AbstractAcsTask { } JSONObject jsonRegion = new JSONObject(); - jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonRegion.put("iostorinv_id", IdUtil.getLongId()); jsonRegion.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonRegion.put("io_type", "0"); jsonRegion.put("material_id", jsonMater.getString("material_id")); @@ -425,8 +447,8 @@ public class CallEmpReelTask extends AbstractAcsTask { } JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("material_code", form.getString("material_code")); json.put("point_code1", form.getString("point_code1")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java index 27ca43c0e..8903cb7c5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -12,7 +12,9 @@ import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl; +import org.nl.wms.pda.mps.eum.RegionTypeEnum; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; @@ -168,6 +170,43 @@ public class CoolCutTask extends AbstractAcsTask { jsonCoolIvt2.put("update_optname", currentUsername); jsonCoolIvt2.put("update_time", DateUtil.now()); WQLObject.getWQLObject("st_ivt_coolpointivt").update(jsonCoolIvt2); + + //判断是存在确定起点的该任务类型 + JSONArray issue_arr = taskTab.query("task_type = '010205' AND task_status = '02' AND is_delete= '0'").getResultJSONArray(0); + JSONObject map = new JSONObject(); + map.put("flag", "4"); + map.put("reging_id", RegionTypeEnum.B1_HKZC.getId()); + //只找入箱点位 + map.put("point_type", "5"); + JSONArray canuse_point = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().getResultJSONArray(0); + for (int i = 0; i < issue_arr.size(); i++) { + JSONObject issue_jo = issue_arr.getJSONObject(i); + JSONObject goal_point = WQLObject.getWQLObject("st_ivt_coolpointivt").query("point_code = '" + issue_jo.getString("point_code1") + "'").uniqueResult(0); + for (int j = 0; j < canuse_point.size(); j++) { + JSONObject canuse_point_jo = canuse_point.getJSONObject(j); + if (canuse_point_jo.getString("point_location").equals(goal_point.getString("point_location"))) { + issue_jo.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + issue_jo.put("point_code2", canuse_point_jo.getString("point_code")); + canuse_point.remove(canuse_point_jo); + taskTab.update(issue_jo); + break; + } + } + if (!issue_jo.getString("task_status").equals(TaskStatusEnum.START_AND_POINT.getCode())) { + for (int j = 0; j < canuse_point.size(); j++) { + JSONObject canuse_point_jo = canuse_point.getJSONObject(j); + if (!canuse_point_jo.getString("point_location").equals(goal_point.getString("point_location"))) { + issue_jo.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + issue_jo.put("point_code2", canuse_point_jo.getString("point_code")); + canuse_point.remove(canuse_point_jo); + taskTab.update(issue_jo); + break; + } + } + } + //下发任务 + SpringContextHolder.getBean(OutHotTask.class).immediateNotifyAcs(null); + } } else { // 更新主表状态 JSONObject coolMst = ivtTab.query("task_id = '" + task_id + "'").uniqueResult(0); @@ -271,7 +310,42 @@ public class CoolCutTask extends AbstractAcsTask { cut_jo.put("update_time", DateUtil.now()); WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_jo); } - + //判断是存在确定起点的该任务类型 + JSONArray issue_arr = taskTab.query("task_type = '010205' AND task_status = '02' AND is_delete= '0'").getResultJSONArray(0); + JSONObject map = new JSONObject(); + map.put("flag", "4"); + map.put("reging_id", RegionTypeEnum.B1_HKZC.getId()); + //只找入箱点位 + map.put("point_type", "5"); + JSONArray canuse_point = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().getResultJSONArray(0); + for (int i = 0; i < issue_arr.size(); i++) { + JSONObject issue_jo = issue_arr.getJSONObject(i); + JSONObject goal_point = WQLObject.getWQLObject("st_ivt_coolpointivt").query("point_code = '" + issue_jo.getString("point_code1") + "'").uniqueResult(0); + for (int j = 0; j < canuse_point.size(); j++) { + JSONObject canuse_point_jo = canuse_point.getJSONObject(j); + if (canuse_point_jo.getString("point_location").equals(goal_point.getString("point_location"))) { + issue_jo.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + issue_jo.put("point_code2", canuse_point_jo.getString("point_code")); + canuse_point.remove(canuse_point_jo); + taskTab.update(issue_jo); + break; + } + } + if (!issue_jo.getString("task_status").equals(TaskStatusEnum.START_AND_POINT.getCode())) { + for (int j = 0; j < canuse_point.size(); j++) { + JSONObject canuse_point_jo = canuse_point.getJSONObject(j); + if (!canuse_point_jo.getString("point_location").equals(goal_point.getString("point_location"))) { + issue_jo.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + issue_jo.put("point_code2", canuse_point_jo.getString("point_code")); + canuse_point.remove(canuse_point_jo); + taskTab.update(issue_jo); + break; + } + } + } + //下发任务 + SpringContextHolder.getBean(OutHotTask.class).immediateNotifyAcs(null); + } } else { // 更新主表状态 JSONObject coolMst = ivtTab.query("task_id = '" + task_id + "'").uniqueResult(0); @@ -323,6 +397,12 @@ public class CoolCutTask extends AbstractAcsTask { if ("010303".equals(jsonTask.getString("task_type"))) { //更新分切区空轴库存 JSONObject cut_jo2 = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("empty_point_code = '" + point_code1 + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(cut_jo2)) { + cut_jo2 = WQLObject.getWQLObject("st_ivt_coolpointivt").query("empty_point_code = '" + point_code1 + "'").uniqueResult(0); + } + if (ObjectUtil.isEmpty(cut_jo2)) { + throw new BadRequestException("未查询到对应的点位【" + point_code1 + "】!"); + } cut_jo2.put("empty_point_status", "01"); cut_jo2.put("empty_vehicle_code", ""); cut_jo2.put("update_optid", currentUserId); @@ -367,10 +447,10 @@ public class CoolCutTask extends AbstractAcsTask { JSONObject cut_jo2 = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("full_point_code = '" + point_code1 + "'").uniqueResult(0); if (ObjectUtil.isEmpty(cut_jo2)) { //B1车间支持从分切上料暂存位送回母卷 - if(point_code1.contains("B1_FQZC")){ + if (point_code1.contains("B1_FQZC")) { cut_jo2 = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code1 + "'").uniqueResult(0); if (ObjectUtil.isEmpty(cut_jo2)) { - throw new BadRequestException("任务点位异常,st_ivt_coolpointivt表找不到满轴点位:"+point_code1); + throw new BadRequestException("任务点位异常,st_ivt_coolpointivt表找不到满轴点位:" + point_code1); } container_name = cut_jo2.getString("container_name"); cut_jo2.put("full_point_status", "01"); @@ -381,7 +461,7 @@ public class CoolCutTask extends AbstractAcsTask { cut_jo2.put("update_time", DateUtil.now()); WQLObject.getWQLObject("st_ivt_coolpointivt").update(cut_jo2); } - }else{ + } else { container_name = cut_jo2.getString("container_name"); cut_jo2.put("full_point_status", "01"); cut_jo2.put("full_vehicle_code", ""); @@ -430,24 +510,24 @@ public class CoolCutTask extends AbstractAcsTask { String point_code3 = form.getString("point_code3"); String point_code4 = form.getString("point_code4"); JSONObject task1 = isSingleTask(point_code1); - if ( ObjectUtil.isNotEmpty(task1)) { - throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务:"+task1.getString("task_code")); + if (ObjectUtil.isNotEmpty(task1)) { + throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务:" + task1.getString("task_code")); } JSONObject task2 = isSingleTask(point_code2); - if ( ObjectUtil.isNotEmpty(task2)) { - throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务:"+task2.getString("task_code")); + if (ObjectUtil.isNotEmpty(task2)) { + throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务:" + task2.getString("task_code")); } JSONObject task3 = isSingleTask(point_code3); - if ( ObjectUtil.isNotEmpty(task3)) { - throw new BadRequestException("点位:" + point_code3 +"存在未完成的任务:"+task3.getString("task_code")); + if (ObjectUtil.isNotEmpty(task3)) { + throw new BadRequestException("点位:" + point_code3 + "存在未完成的任务:" + task3.getString("task_code")); } JSONObject task4 = isSingleTask(point_code4); - if ( ObjectUtil.isNotEmpty(task4)) { - throw new BadRequestException("点位:" + point_code4 + "存在未完成的任务:"+task4.getString("task_code")); + if (ObjectUtil.isNotEmpty(task4)) { + throw new BadRequestException("点位:" + point_code4 + "存在未完成的任务:" + task4.getString("task_code")); } JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", point_code1); @@ -503,13 +583,13 @@ public class CoolCutTask extends AbstractAcsTask { JSONObject task3 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code3 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0); JSONObject task4 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code4 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0); - if(ObjectUtil.isNotEmpty(task1)){ + if (ObjectUtil.isNotEmpty(task1)) { return task1; - }else if(ObjectUtil.isNotEmpty(task2)){ + } else if (ObjectUtil.isNotEmpty(task2)) { return task2; - }else if(ObjectUtil.isNotEmpty(task3)){ + } else if (ObjectUtil.isNotEmpty(task3)) { return task3; - }else if(ObjectUtil.isNotEmpty(task4)){ + } else if (ObjectUtil.isNotEmpty(task4)) { return task4; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java index 4bba4a8be..5568f0e26 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -623,8 +623,8 @@ public class CutConveyorTask extends AbstractAcsTask { } //查询该载具号是否存在未完成的任务 JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("task_status", ObjectUtil.isNotEmpty(form.getString("task_status")) ? form.getString("task_status") : TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", point_code1); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java index bfb843c0a..5ff6dde30 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -693,8 +693,8 @@ public class CutTrussTask extends AbstractAcsTask { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); json.put("vehicle_code2", form.getString("vehicle_code2")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/EmptyVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/EmptyVehicleTask.java index b91bc38ea..d1b2d45b5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/EmptyVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/EmptyVehicleTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -178,8 +178,8 @@ public class EmptyVehicleTask extends AbstractAcsTask { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java index 9ad251720..46085dff1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -202,8 +202,8 @@ public class InCoolIvtTask extends AbstractAcsTask { } JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", "010204"); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", point_code1); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java index 7a67af7ea..428d759d0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -271,8 +271,8 @@ public class InHotTask extends AbstractAcsTask { throw new BadRequestException("点位:" + point_code3 + "存在未完成的任务!"); } JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", "010201"); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", form.getString("point_code1")); @@ -323,8 +323,8 @@ public class InHotTask extends AbstractAcsTask { } JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", "010203"); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", form.getString("point_code1")); @@ -361,8 +361,8 @@ public class InHotTask extends AbstractAcsTask { } JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", "010204"); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", form.getString("point_code1")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java index c2da49502..5b906598f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -216,8 +216,8 @@ public class InTask extends AbstractAcsTask { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java index 7febd0944..be4ab2432 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -151,7 +151,7 @@ public class OutHotTask extends AbstractAcsTask { jo.put("product_area", cut_jo.getString("product_area")); jo.put("task_type", "010301"); } - AbstractAcsTask task = new CoolCutTask(); + CoolCutTask task = SpringContextHolder.getBean(CoolCutTask.class); task.createTask(jo); } else { JSONObject jsonHotIvt = hotIvtTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); @@ -232,6 +232,7 @@ public class OutHotTask extends AbstractAcsTask { String point_code1 = form.getString("point_code1"); String point_code2 = form.getString("point_code2"); String point_code3 = form.getString("point_code3"); + String task_status = form.getString("task_status"); if (cutConveyorTask.isSingleTask(point_code1)) { throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务!"); } @@ -245,15 +246,19 @@ public class OutHotTask extends AbstractAcsTask { } } JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); String task_type = form.getString("task_type"); if (StrUtil.isNotEmpty(task_type)) { json.put("task_type", task_type); } else { json.put("task_type", "010202"); } - json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + if (StrUtil.isNotEmpty(task_status)) { + json.put("task_status", task_status); + }else { + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + } json.put("point_code1", form.getString("point_code1")); json.put("point_code2", form.getString("point_code2")); json.put("point_code3", form.getString("point_code3")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java index f37b2086f..6949baa1a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -190,8 +190,8 @@ public class OutTask extends AbstractAcsTask { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PaperTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PaperTrussTask.java index d4a6a4d0d..6d94abc20 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PaperTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PaperTrussTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -322,8 +322,8 @@ public class PaperTrussTask extends AbstractAcsTask { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); json.put("material_code", form.getString("material_code")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PaperTubeTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PaperTubeTask.java index b332a8838..a0ce4a23c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PaperTubeTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PaperTubeTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -253,8 +253,8 @@ public class PaperTubeTask extends AbstractAcsTask { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); String task_status = form.getString("task_status"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendOutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendOutTask.java index 447ec8b9c..72dc28e63 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendOutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendOutTask.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -157,8 +157,8 @@ public class SendOutTask extends AbstractAcsTask { } JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", form.getString("point_code1")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InbillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InbillServiceImpl.java index 2bc574b26..d7bf0454d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InbillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InbillServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.st.inbill.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -113,7 +113,7 @@ public class InbillServiceImpl { sub_jo.put("bill_type", mst_jo.getString("bill_type")); sub_jo.put("io_type", "0"); sub_jo.put("insert_time", DateUtil.now()); - sub_jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + sub_jo.put("record_id", IdUtil.getLongId()); sub_record.insert(sub_jo); //回写明细表实际数量 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InchargeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InchargeServiceImpl.java index ff07bb6f2..73b614076 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InchargeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InchargeServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.st.inbill.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -129,7 +129,7 @@ public class InchargeServiceImpl implements InchargeService { dto.setEnd_region_id(end_region_id); } - dto.setRecord_uuid(IdUtil.getSnowflake(1, 1).nextId()); + dto.setRecord_uuid(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); @@ -222,7 +222,7 @@ public class InchargeServiceImpl implements InchargeService { JSONObject jsonInMst = mstTab.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0); JSONObject jsonOutMst = new JSONObject(); - jsonOutMst.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonOutMst.put("iostorinv_id", IdUtil.getLongId()); jsonOutMst.put("bill_code", CodeUtil.getNewCode("IO_CODE")); jsonOutMst.put("io_type", "1"); jsonOutMst.put("buss_type", "1009"); @@ -256,7 +256,7 @@ public class InchargeServiceImpl implements InchargeService { for (int i = 0; i < inDtlArr.size(); i++) { JSONObject json = inDtlArr.getJSONObject(i); JSONObject jsonOutDtl = new JSONObject(); - jsonOutDtl.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonOutDtl.put("iostorinvdtl_id", IdUtil.getLongId()); jsonOutDtl.put("iostorinv_id", jsonOutMst.getLongValue("iostorinv_id")); jsonOutDtl.put("seq_no", json.getIntValue("seq_no")); jsonOutDtl.put("material_id", json.getLongValue("material_id")); @@ -279,7 +279,7 @@ public class InchargeServiceImpl implements InchargeService { for (int j = 0; j < inDisArr.size(); j++) { JSONObject json2 = inDisArr.getJSONObject(j); JSONObject jsonOutDis = new JSONObject(); - jsonOutDis.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonOutDis.put("iostorinvdis_id", IdUtil.getLongId()); jsonOutDis.put("iostorinv_id", jsonOutMst.getLongValue("iostorinv_id")); jsonOutDis.put("iostorinvdtl_id", jsonOutDtl.getLongValue("iostorinvdtl_id")); jsonOutDis.put("seq_no", json2.getIntValue("seq_no")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java index aa012886d..a2c41d654 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.st.inbill.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -132,7 +132,7 @@ public class OutChargeServiceImpl implements OutChargeService { JSONArray dis_rows = dis_wql.query("iostorinv_id = '" + whereJson.get("iostorinv_id") + "'").getResultJSONArray(0); //生成手工入库单 - String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); whereJson.put("iostorinv_id", iostorinv_id); whereJson.put("bill_code", bill_code); @@ -165,7 +165,7 @@ public class OutChargeServiceImpl implements OutChargeService { ArrayList ivtList = new ArrayList<>(); // 存在库存的集合 for (int i = 0; i < dis_rows.size(); i++) { //插入明细表 - String iostorinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinvdtl_id = IdUtil.getLongId() + ""; JSONObject dis_row = dis_rows.getJSONObject(i); // 校验是否存在库存 @@ -193,7 +193,7 @@ public class OutChargeServiceImpl implements OutChargeService { //插入手工入库明细表 dtl_wql.insert(dis_row); - dis_row.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dis_row.put("iostorinvdis_id", IdUtil.getLongId()); dis_row.put("seq_no", 1); dis_row.put("sect_id", ""); dis_row.put("sect_code", ""); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java index 1b138cc98..c4ac3e0d5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.st.inbill.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -224,7 +224,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { String now = DateUtil.now(); double total_qty = 0; JSONObject io_mst = new JSONObject(); - String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); io_mst.put("iostorinv_id", iostorinv_id); io_mst.put("bill_code", bill_code); @@ -256,7 +256,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { for (int i = 0; i < rows.size(); i++) { HashMap row = rows.get(i); - row.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + row.put("iostorinvdtl_id", IdUtil.getLongId() + ""); row.put("iostorinv_id", iostorinv_id); row.put("seq_no", (i + 1) + ""); JSONObject material = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + row.get("product_name") + "'").uniqueResult(0); @@ -291,7 +291,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").insert(row); JSONObject dis = new JSONObject(); - dis.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + dis.put("iostorinvdis_id", IdUtil.getLongId() + ""); dis.put("iostorinv_id", iostorinv_id); dis.put("iostorinvdtl_id", row.get("iostorinvdtl_id")); dis.put("seq_no", 1); @@ -417,7 +417,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { ArrayList rows = (ArrayList) whereJson.get("tableData"); for (int i = 0; i < rows.size(); i++) { HashMap row = rows.get(i); - row.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + row.put("iostorinvdtl_id", IdUtil.getLongId() + ""); row.put("iostorinv_id", iostorinv_id); row.put("seq_no", (i + 1) + ""); JSONObject material = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + row.get("product_name") + "'").uniqueResult(0); @@ -439,7 +439,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").insert(row); JSONObject dis = new JSONObject(); - dis.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + dis.put("iostorinvdis_id", IdUtil.getLongId() + ""); dis.put("iostorinv_id", iostorinv_id); dis.put("iostorinvdtl_id", row.get("iostorinvdtl_id")); dis.put("seq_no", 1); @@ -655,7 +655,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { boolean is_virtual = false; if ("09".equals(sect_jo.getString("sect_type_attr"))) { is_virtual = true; - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String task_id = IdUtil.getLongId() + ""; dis_map.put("task_id", task_id); dis_map.put("work_status", "01"); } @@ -2764,7 +2764,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { JSONArray dtl_rows = dtl_wql.query("iostorinv_id = '" + whereJson.get("iostorinv_id") + "'").getResultJSONArray(0); //生成手工出库单 - String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); whereJson.put("iostorinv_id", iostorinv_id); whereJson.put("bill_code", bill_code); @@ -2778,7 +2778,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { dtl_row.put("source_bill_type", mst_row.getString("bill_type")); dtl_row.put("source_bill_code", mst_row.getString("bill_code")); dtl_row.put("source_bill_table", "ST_IVT_IOStorInvDtl"); - dtl_row.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + dtl_row.put("iostorinvdtl_id", IdUtil.getLongId()); dtl_row.put("iostorinv_id", iostorinv_id); dtl_row.put("bill_status", "10"); dtl_wql.insert(dtl_row); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java index c5a43c9d9..8e9e175d1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java @@ -1,7 +1,7 @@ package org.nl.wms.st.inbill.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -47,7 +47,7 @@ public class StorPublicServiceImpl implements StorPublicService { if (ObjectUtil.isEmpty(jo_WMSMaterial)) { throw new BadRequestException("物料不存在或者未启用:" + from.getString("material_id")); } - from.put("stockrecord_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + from.put("stockrecord_id", IdUtil.getLongId() + ""); from.put("struct_code", jo.getString("struct_code")); from.put("struct_name", jo.getString("struct_name")); from.put("stor_id", jo.getString("stor_id")); @@ -69,7 +69,7 @@ public class StorPublicServiceImpl implements StorPublicService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); - from.put("change_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + from.put("change_id", IdUtil.getLongId() + ""); from.put("change_time", DateUtil.now()); from.put("change_person_id", currentUserId + ""); from.put("change_person_name", nickName); @@ -129,7 +129,7 @@ public class StorPublicServiceImpl implements StorPublicService { from.put("less_num", from.getDoubleValue("change_qty")); } - from.put("stordaily_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + from.put("stordaily_id", IdUtil.getLongId() + ""); wql_IOSectDaily.insert(from); } else {// 更新 HashMap map = new HashMap(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ChangeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ChangeServiceImpl.java index 6382c97ce..d96cfe2fb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ChangeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ChangeServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.st.instor.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -115,7 +115,7 @@ public class ChangeServiceImpl implements ChangeService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - String changeinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String changeinv_id = IdUtil.getLongId() + ""; JSONObject mst_jo = new JSONObject(); mst_jo.put("changeinv_id", changeinv_id); mst_jo.put("bill_code", CodeUtil.getNewCode("CHANGE_CODE")); @@ -183,7 +183,7 @@ public class ChangeServiceImpl implements ChangeService { for (int i = 0; i < container_rows.size(); i++) { JSONObject container_row = container_rows.getJSONObject(i); JSONObject change_jo = new JSONObject(); - change_jo.put("changeinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + change_jo.put("changeinvdtl_id", IdUtil.getLongId() + ""); change_jo.put("changeinv_id", jo_mst.getString("changeinv_id")); change_jo.put("seq_no", detail_count + 1); JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + container_row.getString("product_name") + "'").uniqueResult(0); @@ -227,7 +227,7 @@ public class ChangeServiceImpl implements ChangeService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - String moveinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String moveinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("MOVE_CODE"); json.put("moveinv_id", moveinv_id); json.put("bill_code", bill_code); @@ -297,7 +297,7 @@ public class ChangeServiceImpl implements ChangeService { double total_qty = 0; for (int i = 0; i < ja.size(); i++) { JSONObject jo = ja.getJSONObject(i); - String moveinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String moveinvdtl_id = IdUtil.getLongId() + ""; total_qty = total_qty + jo.getDoubleValue("qty"); jo.put("moveinvdtl_id", moveinvdtl_id); jo.put("moveinv_id", jo_mst.getString("moveinv_id")); @@ -323,8 +323,8 @@ public class ChangeServiceImpl implements ChangeService { jo.put("task_id", task.getString("task_id")); } else { task = new JSONObject(); - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - String task_code = IdUtil.getSnowflake(1, 1).nextId() + ""; + String task_id = IdUtil.getLongId() + ""; + String task_code = IdUtil.getLongId() + ""; task.put("taskdtl_id", task_id); task.put("task_id", task_id); @@ -591,7 +591,7 @@ public class ChangeServiceImpl implements ChangeService { old_sub.put("create_id", currentUserId); old_sub.put("create_name", nickName); old_sub.put("change_time", DateUtil.now()); - old_sub.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + old_sub.put("workorder_id", IdUtil.getLongId() + ""); WQLObject.getWQLObject("PDM_BI_SubPackageRelationChangeFlow").insert(old_sub); if (StrUtil.isNotEmpty(UpdatedDateOfProduction)) { @@ -606,7 +606,7 @@ public class ChangeServiceImpl implements ChangeService { new_sub.put("create_id", currentUserId); new_sub.put("create_name", nickName); new_sub.put("change_time", DateUtil.now()); - new_sub.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + new_sub.put("workorder_id", IdUtil.getLongId() + ""); WQLObject.getWQLObject("PDM_BI_SubPackageRelationChangeFlow").insert(new_sub); } HashMap map_mst = new HashMap<>(); @@ -766,7 +766,7 @@ public class ChangeServiceImpl implements ChangeService { //更新桶记录表 wo_BucketRecord.update(bucket); //插入一条变动记录 - bucket.put("change_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + bucket.put("change_id", IdUtil.getLongId() + ""); bucket.put("bucket_code", bucketunique); bucket.put("change_type_scode", "01"); bucket.put("change_time", now); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/CheckServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/CheckServiceImpl.java index eed993651..85fb761f3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/CheckServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/CheckServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.st.instor.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; @@ -181,7 +181,7 @@ public class CheckServiceImpl implements CheckService { // 插入主表 JSONObject jsonMst = new JSONObject(); - jsonMst.put("check_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonMst.put("check_id", IdUtil.getLongId()); jsonMst.put("check_code", CodeUtil.getNewCode("PD_CODE")); jsonMst.put("buss_type", jsonObject.getString("check_type")); jsonMst.put("check_type", jsonObject.getString("check_type")); @@ -203,7 +203,7 @@ public class CheckServiceImpl implements CheckService { for (int i = 0; i < dtlArr.size(); i++) { JSONObject json = dtlArr.getJSONObject(i); JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("checkdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("checkdtl_id", IdUtil.getLongId()); jsonDtl.put("check_id", jsonMst.getLongValue("check_id")); jsonDtl.put("check_code", jsonMst.getString("check_code")); jsonDtl.put("seq_no", i + 1); @@ -238,7 +238,7 @@ public class CheckServiceImpl implements CheckService { HashMap row = rows.get(i); set.add(row.get("struct_id")); - String checkdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String checkdtl_id = IdUtil.getLongId() + ""; row.put("checkdtl_id", checkdtl_id); row.put("check_code", jo_mst.getString("check_code")); row.put("check_id", jo_mst.getString("check_id")); @@ -318,7 +318,7 @@ public class CheckServiceImpl implements CheckService { for (int i = 0; i < dtlArr.size(); i++) { JSONObject json = dtlArr.getJSONObject(i); JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("checkdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("checkdtl_id", IdUtil.getLongId()); jsonDtl.put("check_id", jsonMst.getLongValue("check_id")); jsonDtl.put("check_code", jsonMst.getString("check_code")); jsonDtl.put("seq_no", i + 1); @@ -612,7 +612,7 @@ public class CheckServiceImpl implements CheckService { for (int i = 0; i < rows.size(); i++) { JSONObject jo = rows.getJSONObject(i); - String checkdtldis_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String checkdtldis_id = IdUtil.getLongId() + ""; jo.put("checkdtldis_id", checkdtldis_id); jo.put("check_id", jo_mst.getString("check_id")); jo.put("check_code", jo_mst.getString("check_code")); @@ -827,7 +827,7 @@ public class CheckServiceImpl implements CheckService { // 插入主表 JSONObject jsonMst = new JSONObject(); - jsonMst.put("check_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonMst.put("check_id", IdUtil.getLongId()); jsonMst.put("check_code", CodeUtil.getNewCode("PD_CODE")); jsonMst.put("buss_type", jsonObject.getString("check_type")); jsonMst.put("check_type", jsonObject.getString("check_type")); @@ -849,7 +849,7 @@ public class CheckServiceImpl implements CheckService { for (int i = 0; i < dtlArr.size(); i++) { JSONObject json = dtlArr.getJSONObject(i); JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("checkdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("checkdtl_id", IdUtil.getLongId()); jsonDtl.put("check_id", jsonMst.getLongValue("check_id")); jsonDtl.put("check_code", jsonMst.getString("check_code")); jsonDtl.put("seq_no", i + 1); @@ -902,7 +902,7 @@ public class CheckServiceImpl implements CheckService { // 新增明细 JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("checkdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("checkdtl_id", IdUtil.getLongId()); jsonDtl.put("check_id", jsonMst.getLongValue("check_id")); jsonDtl.put("check_code", jsonMst.getString("check_code")); jsonDtl.put("seq_no", jsonMst.getIntValue("dtl_num") + 1); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java index 1f8254250..c14b44290 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.st.instor.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -258,7 +258,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - String moveinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String moveinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("MOVE_CODE"); String biz_date = (String) map.get("biz_date"); biz_date = biz_date.substring(0, 10); @@ -506,7 +506,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { double total_qty = 0; for (int i = 0; i < ja.size(); i++) { JSONObject jo = ja.getJSONObject(i); - String moveinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String moveinvdtl_id = IdUtil.getLongId() + ""; total_qty = total_qty + jo.getDoubleValue("qty"); jo.put("moveinvdtl_id", moveinvdtl_id); jo.put("moveinv_id", jo_mst.getString("moveinv_id")); @@ -532,8 +532,8 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { jo.put("task_id", task.getString("task_id")); } else { task = new JSONObject(); - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - String task_code = IdUtil.getSnowflake(1, 1).nextId() + ""; + String task_id = IdUtil.getLongId() + ""; + String task_code = IdUtil.getLongId() + ""; task.put("taskdtl_id", task_id); task.put("task_id", task_id); @@ -606,7 +606,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - String moveinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String moveinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("MOVE_CODE"); json.put("moveinv_id", moveinv_id); json.put("bill_code", bill_code); @@ -680,7 +680,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { double total_qty = 0; for (int i = 0; i < ja.size(); i++) { JSONObject jo = ja.getJSONObject(i); - String moveinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String moveinvdtl_id = IdUtil.getLongId() + ""; total_qty = total_qty + jo.getDoubleValue("qty"); jo.put("moveinvdtl_id", moveinvdtl_id); jo.put("moveinv_id", jo_mst.getString("moveinv_id")); @@ -710,8 +710,8 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { jo.put("task_id", task.getString("task_id")); } else { task = new JSONObject(); - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - String task_code = IdUtil.getSnowflake(1, 1).nextId() + ""; + String task_id = IdUtil.getLongId() + ""; + String task_code = IdUtil.getLongId() + ""; task.put("task_id", task_id); task.put("task_code", task_code); @@ -1293,7 +1293,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { //更新桶记录表 wo_BucketRecord.update(bucket); //插入一条变动记录 - bucket.put("change_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + bucket.put("change_id", IdUtil.getLongId() + ""); bucket.put("bucket_code", bucketunique); bucket.put("change_type_scode", "01"); bucket.put("change_time", now); @@ -1677,7 +1677,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { JSONObject moveParam = new JSONObject(); moveParam.put("jsonAllBlockPoint", jsonLockArr); moveParam.put("is_move", "1"); - moveParam.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId()); + moveParam.put("task_group_id", IdUtil.getLongId()); bean.createMove(moveParam, null); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java index 861a1b956..076b8d4b0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.st.instor.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -101,7 +101,7 @@ public class ProductScrapServiceImpl implements ProductScrapService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - String changeinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String changeinv_id = IdUtil.getLongId() + ""; JSONObject mst_jo = new JSONObject(); mst_jo.put("scrap_id", changeinv_id); mst_jo.put("scrap_code", CodeUtil.getNewCode("SCRAP_CODE")); @@ -138,7 +138,7 @@ public class ProductScrapServiceImpl implements ProductScrapService { JSONObject json = rows.getJSONObject(i); JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("scrapdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("scrapdtl_id", IdUtil.getLongId()); jsonDtl.put("scrap_id", jsonMst.getLongValue("scrap_id")); jsonDtl.put("seq_no", i); jsonDtl.put("material_id", json.getLongValue("material_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/RecutPlanServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/RecutPlanServiceImpl.java index 58e9df640..08fc1c348 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/RecutPlanServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/RecutPlanServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.st.instor.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -95,7 +95,7 @@ public class RecutPlanServiceImpl implements RecutPlanService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - String changeinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String changeinv_id = IdUtil.getLongId() + ""; JSONObject mst_jo = new JSONObject(); mst_jo.put("plan_id", changeinv_id); mst_jo.put("plan_code", CodeUtil.getNewCode("PLAN_CODE")); @@ -132,7 +132,7 @@ public class RecutPlanServiceImpl implements RecutPlanService { JSONObject json = rows.getJSONObject(i); JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("plandtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("plandtl_id", IdUtil.getLongId()); jsonDtl.put("plan_id", jsonMst.getLongValue("plan_id")); jsonDtl.put("seq_no", i); jsonDtl.put("material_id", json.getLongValue("material_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/EmpMoveTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/EmpMoveTask.java index 92958aad5..3cbcfb95b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/EmpMoveTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/EmpMoveTask.java @@ -1,7 +1,7 @@ package org.nl.wms.st.instor.task; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -157,8 +157,8 @@ public class EmpMoveTask extends AbstractAcsTask { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java index 46835cc6f..89a72d4c4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java @@ -1,7 +1,7 @@ package org.nl.wms.st.instor.task; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -193,8 +193,8 @@ public class HandMoveStorAcsTask extends AbstractAcsTask { String currentUsername = SecurityUtils.getCurrentUsername(); JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_id", IdUtil.getLongId()); + json.put("task_code", IdUtil.getLongId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index 7cc779ae5..bab69f61f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -2,7 +2,7 @@ package org.nl.wms.st.outbill.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -391,7 +391,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); map.put("iostorinv_id", iostorinv_id); map.put("bill_code", bill_code); @@ -414,7 +414,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { for (int i = 0; i < rows.size(); i++) { JSONObject row = rows.getJSONObject(i); - row.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + row.put("iostorinvdtl_id", IdUtil.getLongId() + ""); row.put("iostorinv_id", iostorinv_id); row.put("seq_no", (i + 1) + ""); row.put("assign_qty", "0"); @@ -470,7 +470,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } } String now = DateUtil.now(); - String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); JSONObject jsonStor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id ='" + MapUtil.getStr(map, "stor_id") + "'").uniqueResult(0); @@ -510,7 +510,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { throw new BadRequestException("数量不能为0"); } JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + jsonDtl.put("iostorinvdtl_id", IdUtil.getLongId() + ""); jsonDtl.put("iostorinv_id", iostorinv_id); jsonDtl.put("seq_no", (i + 1) + ""); jsonDtl.put("material_id", row.getString("material_id")); @@ -554,7 +554,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { for (int j = 0; j < ivtArr.size(); j++) { JSONObject jsonIvt = ivtArr.getJSONObject(j); JSONObject jsonDtl2 = new JSONObject(); - jsonDtl2.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + jsonDtl2.put("iostorinvdtl_id", IdUtil.getLongId() + ""); jsonDtl2.put("iostorinv_id", iostorinv_id); jsonDtl2.put("seq_no", i + 2 + j); jsonDtl2.put("material_id", jsonIvt.getString("material_id")); @@ -615,7 +615,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } } String now = DateUtil.now(); - String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); JSONObject jsonStor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id ='" + MapUtil.getStr(map, "stor_id") + "'").uniqueResult(0); @@ -655,7 +655,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { throw new BadRequestException("数量不能为0"); } JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + jsonDtl.put("iostorinvdtl_id", IdUtil.getLongId() + ""); jsonDtl.put("iostorinv_id", iostorinv_id); jsonDtl.put("seq_no", (i + 1) + ""); jsonDtl.put("material_id", row.getString("material_id")); @@ -721,7 +721,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } } String now = DateUtil.now(); - String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); JSONObject jsonStor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id ='" + MapUtil.getStr(map, "stor_id") + "'").uniqueResult(0); @@ -761,7 +761,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + jsonDtl.put("iostorinvdtl_id", IdUtil.getLongId() + ""); jsonDtl.put("iostorinv_id", iostorinv_id); jsonDtl.put("seq_no", (i + 1) + ""); jsonDtl.put("material_id", row.getString("material_id")); @@ -807,7 +807,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { JSONObject jsonIvt = ivtArr.getJSONObject(j); JSONObject jsonDtl2 = new JSONObject(); - jsonDtl2.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + jsonDtl2.put("iostorinvdtl_id", IdUtil.getLongId() + ""); jsonDtl2.put("iostorinv_id", iostorinv_id); jsonDtl2.put("seq_no", i + 2 + j); jsonDtl2.put("material_id", jsonIvt.getString("material_id")); @@ -1419,7 +1419,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + jsonDtl.put("iostorinvdtl_id", IdUtil.getLongId() + ""); jsonDtl.put("iostorinv_id", iostorinv_id); jsonDtl.put("seq_no", (i + 1) + ""); jsonDtl.put("material_id", row.getString("material_id")); @@ -1463,7 +1463,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { for (int j = 0; j < ivtArr.size(); j++) { JSONObject jsonIvt = ivtArr.getJSONObject(j); JSONObject jsonDtl2 = new JSONObject(); - jsonDtl2.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + jsonDtl2.put("iostorinvdtl_id", IdUtil.getLongId() + ""); jsonDtl2.put("iostorinv_id", iostorinv_id); jsonDtl2.put("seq_no", i + 2 + j); jsonDtl2.put("material_id", jsonIvt.getString("material_id")); @@ -1530,7 +1530,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + jsonDtl.put("iostorinvdtl_id", IdUtil.getLongId() + ""); jsonDtl.put("iostorinv_id", iostorinv_id); jsonDtl.put("seq_no", (i + 1) + ""); jsonDtl.put("material_id", row.getString("material_id")); @@ -1754,37 +1754,37 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { unassign_qty = 0; assign_qty = NumberUtil.add(assign_qty, canuse_qty); - //更新库存 - jsonIvt.put("bill_type_scode", jo_mst.getString("bill_type")); - jsonIvt.put("inv_id", dtl.getString("iostorinv_id")); - jsonIvt.put("bill_code", jo_mst.getString("bill_code")); - jsonIvt.put("bill_table", "ST_IVT_IOStorInv"); - storPublicService.IOStor(jsonIvt, "11"); - //生成分配明细 - dtl.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); - dtl.put("sect_id", jsonIvt.getString("sect_id")); - dtl.put("sect_code", jsonIvt.getString("sect_code")); - dtl.put("sect_name", jsonIvt.getString("sect_name")); - dtl.put("struct_id", jsonIvt.getString("struct_id")); - dtl.put("struct_code", jsonIvt.getString("struct_code")); - dtl.put("struct_name", jsonIvt.getString("struct_name")); - dtl.put("pcsn", jsonIvt.getString("pcsn")); - dtl.put("box_no", jsonIvt.getString("storagevehicle_code")); - dtl.put("storagevehicle_id", jsonIvt.getString("storagevehicle_id")); - dtl.put("storagevehicle_code", jsonIvt.getString("storagevehicle_code")); - dtl.put("storagevehicle_type", jsonIvt.getString("storagevehicle_type")); - dtl.put("is_issued", "0"); - dtl.put("plan_qty", jsonIvt.getDoubleValue("change_qty")); - dtl.put("real_qty", jsonIvt.getDoubleValue("change_qty")); - dtl.put("is_overdue", jsonIvt.getString("is_overdue")); - dtl.put("instorage_time", jsonIvt.getString("instorage_time")); - // 如果所属仓位是虚拟区 则将分配明细状态变为生成 - JSONObject jsonSect = wo_sect.query("sect_id = '" + jsonIvt.getString("sect_id") + "'").uniqueResult(0); - if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { - dtl.put("work_status", "01"); - } else { - dtl.put("work_status", "00"); - } + //更新库存 + jsonIvt.put("bill_type_scode", jo_mst.getString("bill_type")); + jsonIvt.put("inv_id", dtl.getString("iostorinv_id")); + jsonIvt.put("bill_code", jo_mst.getString("bill_code")); + jsonIvt.put("bill_table", "ST_IVT_IOStorInv"); + storPublicService.IOStor(jsonIvt, "11"); + //生成分配明细 + dtl.put("iostorinvdis_id", IdUtil.getLongId()); + dtl.put("sect_id", jsonIvt.getString("sect_id")); + dtl.put("sect_code", jsonIvt.getString("sect_code")); + dtl.put("sect_name", jsonIvt.getString("sect_name")); + dtl.put("struct_id", jsonIvt.getString("struct_id")); + dtl.put("struct_code", jsonIvt.getString("struct_code")); + dtl.put("struct_name", jsonIvt.getString("struct_name")); + dtl.put("pcsn", jsonIvt.getString("pcsn")); + dtl.put("box_no", jsonIvt.getString("storagevehicle_code")); + dtl.put("storagevehicle_id", jsonIvt.getString("storagevehicle_id")); + dtl.put("storagevehicle_code", jsonIvt.getString("storagevehicle_code")); + dtl.put("storagevehicle_type", jsonIvt.getString("storagevehicle_type")); + dtl.put("is_issued", "0"); + dtl.put("plan_qty", jsonIvt.getDoubleValue("change_qty")); + dtl.put("real_qty", jsonIvt.getDoubleValue("change_qty")); + dtl.put("is_overdue", jsonIvt.getString("is_overdue")); + dtl.put("instorage_time", jsonIvt.getString("instorage_time")); + // 如果所属仓位是虚拟区 则将分配明细状态变为生成 + JSONObject jsonSect = wo_sect.query("sect_id = '" + jsonIvt.getString("sect_id") + "'").uniqueResult(0); + if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { + dtl.put("work_status", "01"); + } else { + dtl.put("work_status", "00"); + } // 判断是否超期 if (jo_mst.getString("is_overdue").equals("1")) { @@ -1863,7 +1863,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // 如果是发货出库则判断运费和物流公司不能为空 String bill_type = jo_mst.getString("bill_type"); - if (StrUtil.equals(bill_type, "1001")) { + /*if (StrUtil.equals(bill_type, "1001")) { String trans_code = jo_mst.getString("trans_code"); String estimated_freight = jo_mst.getString("estimated_freight"); @@ -1874,7 +1874,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { throw new BadRequestException("预估运费不能为空"); } - } + }*/ //查询生成和未分配完的明细 JSONArray dtls = WQL.getWO("QST_IVT_CHECKOUTBILL") @@ -1961,7 +1961,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { //生成分配明细 - dtl.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dtl.put("iostorinvdis_id", IdUtil.getLongId()); dtl.put("sect_id", ivt2.getString("sect_id")); dtl.put("sect_code", ivt2.getString("sect_code")); dtl.put("sect_name", ivt2.getString("sect_name")); @@ -2035,7 +2035,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // storPublicService.IOStor(jsonIvt, "11"); //生成分配明细 - dtl.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dtl.put("iostorinvdis_id", IdUtil.getLongId()); dtl.put("sect_id", jsonIvt.getString("sect_id")); dtl.put("sect_code", jsonIvt.getString("sect_code")); dtl.put("sect_name", jsonIvt.getString("sect_name")); @@ -2146,7 +2146,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // 如果是发货出库则判断运费和物流公司不能为空 String bill_type = jo_mst.getString("bill_type"); - if (StrUtil.equals(bill_type, "1001")) { + /*if (StrUtil.equals(bill_type, "1001")) { String trans_code = jo_mst.getString("trans_code"); String estimated_freight = jo_mst.getString("estimated_freight"); @@ -2157,7 +2157,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { throw new BadRequestException("预估运费不能为空"); } - } + }*/ //查询生成和未分配完的明细 JSONArray dtls = WQL.getWO("QST_IVT_CHECKOUTBILL") @@ -2236,7 +2236,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { storPublicService.IOStor(ivt2, "11"); //生成分配明细 - dtl.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dtl.put("iostorinvdis_id", IdUtil.getLongId()); dtl.put("sect_id", ivt2.getString("sect_id")); dtl.put("sect_code", ivt2.getString("sect_code")); dtl.put("sect_name", ivt2.getString("sect_name")); @@ -2305,7 +2305,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { jsonIvt.put("bill_table", "ST_IVT_IOStorInv"); storPublicService.IOStor(jsonIvt, "11"); //生成分配明细 - dtl.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dtl.put("iostorinvdis_id", IdUtil.getLongId()); dtl.put("sect_id", jsonIvt.getString("sect_id")); dtl.put("sect_code", jsonIvt.getString("sect_code")); dtl.put("sect_name", jsonIvt.getString("sect_name")); @@ -2378,7 +2378,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { ivt.put("bill_table", "ST_IVT_IOStorInv"); storPublicService.IOStor(ivt, "11"); //生成分配明细 - json.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("iostorinvdis_id", IdUtil.getLongId()); json.put("sect_id", ivt.getString("sect_id")); json.put("sect_code", ivt.getString("sect_code")); json.put("sect_name", ivt.getString("sect_name")); @@ -2874,7 +2874,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } // 更新第一个任务 任务组、任务顺序号 - jsonTask.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonTask.put("task_group_id", IdUtil.getLongId()); jsonTask.put("sort_seq", 1); wo_Task.update(jsonTask); @@ -2990,7 +2990,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { if (ObjectUtil.isNotEmpty(jsonIsBlockL)) { // 更新第一个任务 任务组、任务顺序号 - jsonTask.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonTask.put("task_group_id", IdUtil.getLongId()); jsonTask.put("sort_seq", 1); wo_Task.update(jsonTask); // 从左边生成移库单 @@ -3007,7 +3007,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // 判断左边是否被挡住 if (ObjectUtil.isNotEmpty(jsonIsBlockR)) { // 更新第一个任务 任务组、任务顺序号 - jsonTask.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonTask.put("task_group_id", IdUtil.getLongId()); jsonTask.put("sort_seq", 1); wo_Task.update(jsonTask); // 从右边生成移库单 @@ -3199,7 +3199,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { if (ObjectUtil.isNotEmpty(paramMoveArr)) { JSONObject moveParam = new JSONObject(); moveParam.put("jsonAllBlockPoint", paramMoveArr); - moveParam.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId()); + moveParam.put("task_group_id", IdUtil.getLongId()); this.createMove(moveParam, allTransactionConsumer); new HandMoveStorAcsTask().immediateNotifyAcs(null); @@ -3803,7 +3803,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } // 创建任务组 - long task_group_id = IdUtil.getSnowflake(1, 1).nextId(); + long task_group_id = IdUtil.getLongId(); /*-----------------------update开始------------------------------*/ @@ -3904,7 +3904,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { outTask.immediateNotifyAcs(null); // 更新任务组 - task_group_id = IdUtil.getSnowflake(1, 1).nextId(); + task_group_id = IdUtil.getLongId(); canAdd = false; } else { @@ -3965,7 +3965,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { disRowArrNew.clear(); // 更新任务组 - task_group_id = IdUtil.getSnowflake(1, 1).nextId(); + task_group_id = IdUtil.getLongId(); } else { // 迭代调用自身 this.rowDispose(jsonRow, allTransactionConsumer); @@ -4245,7 +4245,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } // 创建任务组 - long task_group_id = IdUtil.getSnowflake(1, 1).nextId(); + long task_group_id = IdUtil.getLongId(); // 判断是否需要生成移库 if (ObjectUtil.isNotEmpty(moveArr)) { @@ -4343,7 +4343,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { outTask.immediateNotifyAcs(null); // 更新任务组 - task_group_id = IdUtil.getSnowflake(1, 1).nextId(); + task_group_id = IdUtil.getLongId(); canAdd = false; } else { @@ -4402,7 +4402,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { disRowArrNew.clear(); // 更新任务组 - task_group_id = IdUtil.getSnowflake(1, 1).nextId(); + task_group_id = IdUtil.getLongId(); } else { } return null; @@ -4769,7 +4769,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // 如果是发货出库则判断运费和物流公司不能为空 String bill_type = jo_mst.getString("bill_type"); - if (StrUtil.equals(bill_type, "1001")) { + /*if (StrUtil.equals(bill_type, "1001")) { String trans_code = jo_mst.getString("trans_code"); String estimated_freight = jo_mst.getString("estimated_freight"); @@ -4780,7 +4780,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { throw new BadRequestException("预估运费不能为空"); } - } + }*/ //查询生成和未分配完的明细 JSONObject dtl = WQL.getWO("QST_IVT_CHECKOUTBILL") @@ -4844,7 +4844,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { ivt.put("bill_table", "ST_IVT_IOStorInv"); storPublicService.IOStor(ivt, "11"); //生成分配明细 - dtl.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dtl.put("iostorinvdis_id", IdUtil.getLongId()); dtl.put("sect_id", ivt.getString("sect_id")); dtl.put("sect_code", ivt.getString("sect_code")); dtl.put("sect_name", ivt.getString("sect_name")); @@ -4923,7 +4923,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { ivt.put("bill_table", "ST_IVT_IOStorInv"); storPublicService.IOStor(ivt, "11"); //生成分配明细 - json.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("iostorinvdis_id", IdUtil.getLongId()); json.put("sect_id", ivt.getString("sect_id")); json.put("sect_code", ivt.getString("sect_code")); json.put("sect_name", ivt.getString("sect_name")); @@ -5175,7 +5175,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { jsonSub.put("bill_type", jo_mst.getString("bill_type")); jsonSub.put("io_type", "1"); jsonSub.put("insert_time", DateUtil.now()); - jsonSub.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonSub.put("record_id", IdUtil.getLongId()); sub_record.insert(jsonSub); // 更新对应任务为完成 @@ -5210,7 +5210,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } //生成手工入库单 - String new_iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String new_iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); jo_mst.put("iostorinv_id", new_iostorinv_id); jo_mst.put("bill_code", bill_code); @@ -5237,7 +5237,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { double total_qty = 0.00; for (int i = 0; i < dis_rows.size(); i++) { //插入明细表 - String iostorinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinvdtl_id = IdUtil.getLongId() + ""; JSONObject dis_row = dis_rows.getJSONObject(i); //查询对应的出库单明细 JSONObject dtl_row = dtl_wql.query("iostorinvdtl_id = '" + dis_row.getString("iostorinvdtl_id") + "'").uniqueResult(0); @@ -5256,7 +5256,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { //插入调拨明细表 dtl_wql.insert(dis_row); - dis_row.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dis_row.put("iostorinvdis_id", IdUtil.getLongId()); dis_row.put("seq_no", 1); dis_row.put("sect_id", ""); dis_row.put("sect_code", ""); @@ -5807,7 +5807,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { jsonSub.put("bill_type", jo_mst.getString("bill_type")); jsonSub.put("io_type", "1"); jsonSub.put("insert_time", DateUtil.now()); - jsonSub.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonSub.put("record_id", IdUtil.getLongId()); sub_record.insert(jsonSub); // 更新对应任务为完成 @@ -5842,7 +5842,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } //生成手工入库单 - String new_iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String new_iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); jo_mst.put("iostorinv_id", new_iostorinv_id); jo_mst.put("bill_code", bill_code); @@ -5869,7 +5869,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { double total_qty = 0.00; for (int i = 0; i < dis_rows.size(); i++) { //插入明细表 - String iostorinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinvdtl_id = IdUtil.getLongId() + ""; JSONObject dis_row = dis_rows.getJSONObject(i); //查询对应的出库单明细 JSONObject dtl_row = dtl_wql.query("iostorinvdtl_id = '" + dis_row.getString("iostorinvdtl_id") + "'").uniqueResult(0); @@ -5888,7 +5888,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { //插入调拨明细表 dtl_wql.insert(dis_row); - dis_row.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dis_row.put("iostorinvdis_id", IdUtil.getLongId()); dis_row.put("seq_no", 1); dis_row.put("sect_id", ""); dis_row.put("sect_code", ""); @@ -6155,7 +6155,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { jsonSub.put("bill_type", jo_mst.getString("bill_type")); jsonSub.put("io_type", "1"); jsonSub.put("insert_time", DateUtil.now()); - jsonSub.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonSub.put("record_id", IdUtil.getLongId()); sub_record.insert(jsonSub); } @@ -6314,7 +6314,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { JSONArray dtl_rows = dtl_wql.query("iostorinv_id = '" + whereJson.get("iostorinv_id") + "'").getResultJSONArray(0); //生成手工入库库单 - String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String iostorinv_id = IdUtil.getLongId() + ""; String bill_code = CodeUtil.getNewCode("IO_CODE"); for (int i = 0; i < dtl_rows.size(); i++) { @@ -6323,7 +6323,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { dtl_row.put("source_bill_type", mst_row.getString("bill_type")); dtl_row.put("source_bill_code", mst_row.getString("bill_code")); dtl_row.put("source_bill_table", "ST_IVT_IOStorInvDtl"); - dtl_row.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + dtl_row.put("iostorinvdtl_id", IdUtil.getLongId()); dtl_row.put("iostorinv_id", iostorinv_id); dtl_wql.insert(dtl_row); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java index 102b07ac6..49ce1ff31 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.st.outbill.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -128,7 +128,7 @@ public class RegionioOutServiceImpl implements RegionioOutService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - dto.setIostorinv_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setIostorinv_id(IdUtil.getLongId()); dto.setBill_code(bill_code); dto.setIo_type("1"); dto.setBill_status("10"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/InEmptyvehiclerecordServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/InEmptyvehiclerecordServiceImpl.java index 60a7e6fc5..00031ece6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/InEmptyvehiclerecordServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/InEmptyvehiclerecordServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.st.vehiclebill.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -105,7 +105,7 @@ public class InEmptyvehiclerecordServiceImpl implements InEmptyvehiclerecordServ dto.setEnd_region_id(end_region_id); } - dto.setRecord_uuid(IdUtil.getSnowflake(1, 1).nextId()); + dto.setRecord_uuid(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/OutEmptyvehiclerecordServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/OutEmptyvehiclerecordServiceImpl.java index 6ef9c49ce..5795711b4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/OutEmptyvehiclerecordServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/OutEmptyvehiclerecordServiceImpl.java @@ -3,7 +3,7 @@ package org.nl.wms.st.vehiclebill.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -105,7 +105,7 @@ public class OutEmptyvehiclerecordServiceImpl implements OutEmptyvehiclerecordSe dto.setStart_region_id(start_region_id); } - dto.setRecord_uuid(IdUtil.getSnowflake(1, 1).nextId()); + dto.setRecord_uuid(IdUtil.getLongId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_optid(currentUserId); diff --git a/lms/nladmin-system/src/main/resources/config/application.yml b/lms/nladmin-system/src/main/resources/config/application.yml index a435e1108..69e869bb4 100644 --- a/lms/nladmin-system/src/main/resources/config/application.yml +++ b/lms/nladmin-system/src/main/resources/config/application.yml @@ -69,7 +69,7 @@ spring: threadPool: threadCount: 14 # class: org.nl.system.service.quartz.SimpleThreadPool - scheduler-name: quartzScheduler + scheduler-name: scheduler task: pool: # 核心线程池大小 @@ -190,3 +190,7 @@ lucene: tlog: id-generator: org.nl.config.TlogIdGenerator + +snowflake: + worker-id: 1 # 机器ID,0-31之间 + datacenter-id: 1 # 数据中心ID,0-31之间 \ No newline at end of file diff --git a/lms/nladmin-system/src/test/java/org/nl/init/EventTest.java b/lms/nladmin-system/src/test/java/org/nl/init/EventTest.java index 62e23540b..8172e0f10 100644 --- a/lms/nladmin-system/src/test/java/org/nl/init/EventTest.java +++ b/lms/nladmin-system/src/test/java/org/nl/init/EventTest.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.nl.b_lms.bst.ivt.papervehicle.service.dao.mapper.MdPbPapervehicleMapper; import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.mapper.BstIvtShafttubeivtMapper; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; @@ -23,6 +24,7 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.tasks.first_floor_area.*; +import org.nl.b_lms.sch.tasks.slitter.auto.AutoCallAirShaftTask; import org.nl.b_lms.sch.tasks.slitter.service.impl.SlitterServiceImpl; import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxManageService; @@ -39,8 +41,12 @@ import org.slf4j.MarkerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; +import oshi.SystemInfo; +import oshi.hardware.ComputerSystem; +import oshi.hardware.HardwareAbstractionLayer; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -81,10 +87,22 @@ public class EventTest { @Autowired private SchBasePointMapper schBasePointMapper; @Autowired + private MdPbPapervehicleMapper papervehicleMapper; + @Autowired private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private AutoCallAirShaftTask autoCallAirShaftTask; @Test - public void sss() { - System.out.println(schBasePointMapper.queryKZPoint()); + public void tests() { +// System.out.println(schBasePointMapper.queryKZPoint()); +// List list = Arrays.asList("482210000000001"); +// System.out.println(papervehicleMapper.getGXs("0", list)); +// PdmBiSlittingproductionplan byContainerName = slittingproductionplanService.getByContainerName("B1虚拟-B50FQ00001-2"); + PdmBiSlittingproductionplan byContainerName = slittingproductionplanService.getByContainerName("BB3X2410280907A1"); + List plans = new ArrayList<>(); + plans.add(byContainerName); + BstIvtShafttubeivt shafttubeivt = bstIvtShafttubeivtMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtShafttubeivt::getPoint_code, "B_CBJ01")); + autoCallAirShaftTask.toCallAgvMovePaperTube(plans, "0", shafttubeivt, slittingproductionplanService.getAllCutPlan(0)); } @Test @@ -363,12 +381,12 @@ public class EventTest { zxDjwTask.createTask(jo); } - public static void main(String[] args) { - String name = "纸制筒管|纸管|6英寸|12|650"; - if (name.contains("3英寸") || name.contains("3.12英寸")) { - System.out.println("4"); - } else { - System.out.println("5"); - } - } +// public static void main(String[] args) { +// String name = "纸制筒管|纸管|6英寸|12|650"; +// if (name.contains("3英寸") || name.contains("3.12英寸")) { +// System.out.println("4"); +// } else { +// System.out.println("5"); +// } +// } } diff --git a/lms/nladmin-ui/src/views/wms/agvrush/charge/index.vue b/lms/nladmin-ui/src/views/wms/agvrush/charge/index.vue index bb2d0ffd6..5b8f17409 100644 --- a/lms/nladmin-ui/src/views/wms/agvrush/charge/index.vue +++ b/lms/nladmin-ui/src/views/wms/agvrush/charge/index.vue @@ -33,7 +33,7 @@ -
+
- - - + + +
@@ -83,10 +83,10 @@
- + 报警: - + {{ agvObj.fault }}
diff --git a/lms/nladmin-ui/src/views/wms/agvrush/deviceerror/index.vue b/lms/nladmin-ui/src/views/wms/agvrush/deviceerror/index.vue new file mode 100644 index 000000000..8834789a4 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/agvrush/deviceerror/index.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/wms/agvrush/error/bstIvtShafttubeivt.js b/lms/nladmin-ui/src/views/wms/agvrush/error/bstIvtShafttubeivt.js new file mode 100644 index 000000000..eddb9d529 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/agvrush/error/bstIvtShafttubeivt.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/bstIvtShafttubeivt', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/bstIvtShafttubeivt/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/bstIvtShafttubeivt', + method: 'put', + data + }) +} + +export function setHaveShaft(data) { + return request({ + url: 'api/bstIvtShafttubeivt/setHaveShaft', + method: 'post', + data + }) +} + +export default { add, edit, del, setHaveShaft } diff --git a/lms/nladmin-ui/src/views/wms/agvrush/error/index.vue b/lms/nladmin-ui/src/views/wms/agvrush/error/index.vue new file mode 100644 index 000000000..d50d21d0a --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/agvrush/error/index.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/wms/basedata/product/userDevice/index.vue b/lms/nladmin-ui/src/views/wms/basedata/product/userDevice/index.vue new file mode 100644 index 000000000..a89ede003 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/basedata/product/userDevice/index.vue @@ -0,0 +1,324 @@ + + + + + + + diff --git a/lms/nladmin-ui/src/views/wms/basedata/product/userDevice/userDevice.js b/lms/nladmin-ui/src/views/wms/basedata/product/userDevice/userDevice.js new file mode 100644 index 000000000..7849b60e5 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/basedata/product/userDevice/userDevice.js @@ -0,0 +1,43 @@ +import request from '@/utils/request' + +export function queryStor(data) { + return request({ + url: '/api/userDevice/queryStor', + method: 'post', + data + }) +} + +export function queryuserDevice(data) { + return request({ + url: '/api/userDevice/queryUserDevice', + method: 'post', + data + }) +} + +export function save(data) { + return request({ + url: '/api/userDevice/save', + method: 'post', + data + }) +} + +export function getuserDevice(data) { + return request({ + url: '/api/userDevice/getuserDevice', + method: 'post', + data + }) +} + +export function getSect(data) { + return request({ + url: '/api/userDevice/getSect', + method: 'post', + data + }) +} + +export default { queryuserDevice, queryStor, save, getuserDevice, getSect } diff --git a/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue b/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue index 1388a15e6..a0f2d64aa 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue @@ -178,6 +178,53 @@ + + + + + + + + + + + + + + + + + + + + + + 取 消 + + { + if (res) { + this.dtlVisible = true + this.childrenList = res + } + }) }, + async syncMes(row) { + const url = 'http://10.1.3.36:8081/' + row.url + const response = await fetch(url, { + method: 'POST', // *GET, POST, PUT, DELETE, etc. + headers: { + 'Content-Type': 'application/json' + // 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: row.param // body 数据类型必须与“Content-Type”头匹配 + }) + const data = await response.json() + window.alert(JSON.stringify(data)) + }, + initQuery() { const end = new Date() const start = new Date() diff --git a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue index 8ba8d664e..51643cd78 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue @@ -321,6 +321,18 @@ > 设置右卷 + + 加急 + @@ -488,7 +500,7 @@ - + @@ -724,6 +736,68 @@ export default { this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) }) }, + urgentPlan() { + const _selectData = this.$refs.table.selection + const data = { + 'data': _selectData + } + crudSlittingproductionplan.urgentPlan(data).then(res => { + this.crud.toQuery() + if (res.failInfo.length == 0) { + this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + } else { + this.$notify({ + title: '操作结果', + dangerouslyUseHTMLString: true, + message: this.buildNotificationContent(res), + duration: 0, + offset: 50, + customClass: 'custom-notify' + }) + } + }) + }, + buildNotificationContent(data) { + console.log('通知数据:', data) + + // 第一行:统计信息 + const stats = `
总数:${data.total},成功:${data.success},失败:${data.fail}
` + + // 第二行:失败信息表格 + let tableHtml = '' + + if (data.failInfo && Object.keys(data.failInfo).length > 0) { + // 创建表头 + const headers = ` + 卷号 + 信息 + ` + + // 创建表格行 + const rows = Object.values(data.failInfo).flatMap(errorObj => { + return Object.entries(errorObj).map(([volumeNo, errorMsg]) => { + return ` + ${volumeNo} + ${errorMsg} + ` + }) + }).join('') + + tableHtml = ` +
+
失败信息:
+ + ${headers} + ${rows} +
+
+ ` + } else { + tableHtml = '
无失败信息
' + } + + return `${stats}${tableHtml}` + }, inFinish() { const _selectData = this.$refs.table.selection const data = { @@ -810,5 +884,4 @@ export default { diff --git a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js index 862d266dd..c02c4286a 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js +++ b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js @@ -71,6 +71,14 @@ export function setDirection(data) { data }) } + +export function urgentPlan(data) { + return request({ + url: 'api/slittingproductionplan/urgentPlan', + method: 'post', + data + }) +} export function updates(data) { return request({ url: 'api/slittingproductionplan', @@ -79,4 +87,4 @@ export function updates(data) { }) } -export default { add, edit, del, upMaterFinish, caseFinish, sendFinish, inFinish, compelFinish, setDirection, updates } +export default { add, edit, del, upMaterFinish, caseFinish, sendFinish, inFinish, compelFinish, setDirection, updates, urgentPlan } diff --git a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/tubeDialog2.vue b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/tubeDialog2.vue index 8a84a1ab0..d313e8884 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/tubeDialog2.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/tubeDialog2.vue @@ -15,11 +15,11 @@ - + - + - + + + + + + + + + + @@ -101,6 +124,9 @@ export default { hand(value) { this.form.productName = value }, + hand2(value) { + this.form.sameBoxCode = value + }, close() { this.$emit('update:dialogShow', false) this.form = {}