From 0fc6123a213aa5568d3afb524f578d754de5933c Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 19 十一月 2025 19:58:36 +0800
Subject: [PATCH] #盘点
---
src/main/java/com/zy/asrs/service/WorkService.java | 2
src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java | 1
src/main/webapp/views/checkOrder/checkOrder.html | 26 ++++--
src/main/resources/mapper/CheckOrderDetlMapper.xml | 9 ++
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 106 +++++++++++++++++++++++++
src/main/java/com/zy/asrs/service/CheckOrderService.java | 1
src/main/webapp/static/js/checkOrder/checkOrder.js | 30 +++++++
src/main/java/com/zy/asrs/controller/OutController.java | 62 +++++++++++++++
8 files changed, 223 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 60b2dec..48e8775 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -5,12 +5,14 @@
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
+import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.common.model.LocDto;
import com.zy.common.model.TaskDto;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@@ -46,6 +48,9 @@
@Resource
private OrderPakoutService orderPakOutService;
+ @Autowired
+ private CheckOrderService checkOrderService;
+
@PostMapping("/out/pakout/orderDetlIds/auth")
@@ -220,4 +225,61 @@
return R.ok();
}
+ @PostMapping("/out/checkPakOut/auth")
+ @ManagerAuth(memo = "璁㈠崟鍑哄簱")
+ public synchronized R checkPakOut(@RequestBody List<LocDto> locDtos) throws InterruptedException {
+ if (Cools.isEmpty(locDtos)) {
+ return R.parse(BaseRes.PARAM);
+ }
+ List<LocDto> locDtoArrayList = new ArrayList<>();
+ for (LocDto locDto : locDtos){
+ if (locDto.getFrozen()!=1 && locDto.getFrozenLoc()!=1){
+ locDtoArrayList.add(locDto);
+ }
+ }
+ locDtos = locDtoArrayList;
+ if (Cools.isEmpty(locDtos)) {
+ return R.parse("搴撳瓨/搴撲綅琚喕缁擄紝璇峰鐞嗗悗鍑哄簱锛侊紒锛�");
+ }
+ boolean lack = true;
+ for (LocDto locDto : locDtos) {
+ if (!locDto.isLack()) {
+ lack = false;
+ break;
+ }
+ }
+ if (lack) {
+ return R.error("搴撳瓨涓嶈冻");
+ }
+
+ Thread.sleep(1000L);
+
+ List<TaskDto> taskDtos = new ArrayList<>();
+ // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
+ for (LocDto locDto : locDtos) {
+ if (locDto.isLack()) { continue; }
+ TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
+ if (TaskDto.has(taskDtos, taskDto)) {
+ TaskDto dto = TaskDto.find(taskDtos, taskDto);
+ assert dto != null;
+ dto.getLocDtos().addAll(taskDto.getLocDtos());
+ } else {
+ taskDtos.add(taskDto);
+ }
+ }
+ // -----------------------------------------------------------------------------------------------
+ for (TaskDto taskDto : taskDtos) {
+ BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+ workService.checkStockOut(staNo, taskDto, getUserId());
+ }
+
+ String orderNo = taskDtos.get(0).getLocDtos().get(0).getOrderNo();
+ CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", orderNo));
+ checkOrder.setSettle(11L);
+ if (!checkOrderService.updateById(checkOrder)) {
+ throw new CoolException("鏇存柊鐩樼偣鍗曠姸鎬佸け璐�");
+ }
+ return R.ok();
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/service/CheckOrderService.java b/src/main/java/com/zy/asrs/service/CheckOrderService.java
index 472ac66..520e858 100644
--- a/src/main/java/com/zy/asrs/service/CheckOrderService.java
+++ b/src/main/java/com/zy/asrs/service/CheckOrderService.java
@@ -2,7 +2,6 @@
import com.zy.asrs.entity.CheckOrder;
import com.baomidou.mybatisplus.service.IService;
-import com.zy.asrs.entity.CheckOrderDetl;
import com.zy.common.model.LocDto;
import java.util.List;
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 8d34c6e..361e76f 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -42,6 +42,8 @@
void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
+ void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId);
+
/**
* 绌烘澘鍏ュ簱
* @return 搴撲綅鍙�
diff --git a/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
index 778076d..4f650e4 100644
--- a/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index ebb91c0..669e524 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -18,6 +18,7 @@
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.*;
+import com.zy.common.model.enumUtils.OrderEnumVo;
import com.zy.common.model.enums.IoWorkType;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.properties.SlaveProperties;
@@ -93,6 +94,12 @@
@Resource
private OrderPakoutService orderPakOutService;
+
+ @Autowired
+ private CheckOrderService checkOrderService;
+
+ @Autowired
+ private CheckOrderDetlService checkOrderDetlService;
@Override
@Transactional
@@ -390,7 +397,7 @@
}
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
Date now = new Date();
List<LocDto> locDtos = taskDto.getLocDtos();
@@ -403,8 +410,9 @@
LocMast locMast = locMastService.selectById(taskDto.getLocNo());
// 鍒ゆ柇鏄惁鏄洏鐐瑰崟
String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
- OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
- int ioType = orderPakout.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
+// OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
+ CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", orderNo));
+ int ioType = checkOrder.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
@@ -486,6 +494,98 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
+ public void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
+ Date now = new Date();
+ List<LocDto> locDtos = taskDto.getLocDtos();
+ for (LocDto locDto : locDtos) {
+ if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+ throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+ int ioType = 107;
+ StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
+ wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDto locDto : taskDto.getLocDtos()) {
+ if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+ continue;
+ }
+
+ List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>()
+ .eq("loc_no", locDto.getLocNo())
+ .eq("matnr", locDto.getMatnr())
+ .eq("batch", locDto.getBatch())
+ .eq("order_no", locDto.getOrderNo())
+ );
+
+ if (checkOrderDetls.size() > 1) {
+ throw new CoolException("鏁版嵁澶т簬1,璇锋鏌ユ暟鎹�");
+ }
+
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(checkOrderDetls.get(0));
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBatch(locDto.getBatch());
+ wrkDetl.setOrderNo(locDto.getOrderNo());
+ wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ // 淇敼璁㈠崟鏄庣粏
+ checkOrderDetls.get(0).setStatus(2);
+ if (!checkOrderDetlService.updateById(checkOrderDetls.get(0))){
+ throw new CoolException("淇濆瓨璁㈠崟鏄庣粏澶辫触");
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(taskDto.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType == 101 ? "R" : "P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+
+ @Override
@Transactional
public String emptyPlateIn(Integer devpNo, Long userId) {
// 婧愮珯鐐圭姸鎬佹娴�
diff --git a/src/main/resources/mapper/CheckOrderDetlMapper.xml b/src/main/resources/mapper/CheckOrderDetlMapper.xml
index e58eb14..91fe3dc 100644
--- a/src/main/resources/mapper/CheckOrderDetlMapper.xml
+++ b/src/main/resources/mapper/CheckOrderDetlMapper.xml
@@ -20,7 +20,7 @@
<result column="price" property="price" />
<result column="sku" property="sku" />
<result column="units" property="units" />
- <result column="barcode" property="barcode" />
+ <result column="zpallet" property="zpallet" />
<result column="origin" property="origin" />
<result column="manu" property="manu" />
<result column="manu_date" property="manuDate" />
@@ -52,6 +52,13 @@
<result column="line_number" property="lineNumber" />
<result column="loc_no" property="locNo" />
<result column="version" property="version" />
+ <result column="standby1" property="standby1" />
+ <result column="standby2" property="standby2" />
+ <result column="standby3" property="standby3" />
+ <result column="box_type1" property="boxType1" />
+ <result column="box_type2" property="boxType2" />
+ <result column="box_type3" property="boxType3" />
+ <result column="loc_detl_id" property="locDetlId" />
</resultMap>
diff --git a/src/main/webapp/static/js/checkOrder/checkOrder.js b/src/main/webapp/static/js/checkOrder/checkOrder.js
index 6642cbe..d752f36 100644
--- a/src/main/webapp/static/js/checkOrder/checkOrder.js
+++ b/src/main/webapp/static/js/checkOrder/checkOrder.js
@@ -1,7 +1,9 @@
var insTbCount = 0;
layui.config({
base: baseUrl + "/static/layui/lay/modules/"
-}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate','tableMerge'], function () {
+}).extend({
+ notice: 'notice/notice',
+}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate','tableMerge','notice'], function () {
var $ = layui.jquery;
var layer = layui.layer;
var form = layui.form;
@@ -12,6 +14,7 @@
var layDate = layui.laydate;
var laytpl = layui.laytpl;
var tableMerge = layui.tableMerge;
+ var notice = layui.notice;
// 娓叉煋鎼滅储妯℃澘
$.ajax({
@@ -598,6 +601,31 @@
})
}
+ function pakout(tableCache, layerIndex) {
+ // let loadIndex = layer.load(2);
+ notice.msg('姝e湪鐢熸垚鐩樼偣鍑哄簱浠诲姟......', {icon: 4});
+ $.ajax({
+ url: baseUrl + "/out/checkPakOut/auth",
+ headers: {'token': localStorage.getItem('token')},
+ contentType: 'application/json;charset=UTF-8',
+ data: JSON.stringify(tableCache),
+ method: 'POST',
+ success: function (res) {
+ notice.destroy();
+ if (res.code === 200) {
+ layer.close(layerIndex);
+ layer.msg(res.msg, {icon: 1});
+ insTb.reload({where: null});
+ insTb2.reload({where: null, page: {curr: 1}});
+ } else if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ } else {
+ layer.msg(res.msg, {icon: 2})
+ }
+ }
+ });
+ }
+
function createTask(orderId) {
let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
diff --git a/src/main/webapp/views/checkOrder/checkOrder.html b/src/main/webapp/views/checkOrder/checkOrder.html
index 498e2f5..354848a 100644
--- a/src/main/webapp/views/checkOrder/checkOrder.html
+++ b/src/main/webapp/views/checkOrder/checkOrder.html
@@ -37,14 +37,9 @@
.btn-delete {
display: none;
}
- /* 闄愬埗涓嬫媺妗嗗ぇ灏忥紝涓嶈秴鍑鸿〃鏍� */
- .ew-select-fixed select {
- max-width: 100%;
- width: 100%;
- }
- .ew-select-fixed .layui-form-select dl {
- max-height: 200px;
- overflow-y: auto;
+ .layui-table-view .layui-table-cell .layui-select-title .layui-input {
+ height: 28px;
+ line-height: 28px;
}
</style>
</head>
@@ -239,6 +234,21 @@
</select>
</div>
</script>
+
+<script type="text/html" id="staBatchSelectDialog">
+ <form class="layui-form" style="padding: 25px 50px 30px 50px;text-align: center">
+ <select id="batchSelectStaBox" name="batchSta" lay-vertype="tips" lay-verify="required" required="">
+ </select>
+ <button style="margin-top: 30px" class="layui-btn" lay-filter="staBatchSelectConfirm" lay-submit="">纭畾</button>
+ </form>
+</script>
+
+<script type="text/template" id="batchStaSelectTpl">
+ <option value="">閫夋嫨鍑哄簱绔�</option>
+ {{#each list}}
+ <option value="{{this}}">{{this}}</option>
+ {{/each}}
+</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
--
Gitblit v1.9.1