From bcd583668d6dc95993075354a8e7b0935e92eefd Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 22 三月 2021 11:07:26 +0800
Subject: [PATCH] #
---
src/main/resources/mapper/CustOrderMapper.xml | 1
src/main/webapp/views/custOrder/custOrder.html | 9 +++
src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java | 15 +++++
src/main/webapp/static/js/custOrder/custOrder.js | 11 ++-
src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java | 5 +
src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java | 13 ++++
src/main/java/zy/cloud/wms/manager/service/LocDetlService.java | 3 +
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java | 16 +++-
src/main/java/zy/cloud/wms/common/service/MainService.java | 38 ++++++++++--
src/main/java/zy/cloud/wms/manager/entity/CustOrder.java | 17 +++++
src/main/java/zy/cloud/wms/manager/service/CustOrderService.java | 2
src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java | 2
src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java | 2
src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java | 3
src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java | 4 +
src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java | 23 +++++++
16 files changed, 143 insertions(+), 21 deletions(-)
diff --git a/src/main/java/zy/cloud/wms/common/service/MainService.java b/src/main/java/zy/cloud/wms/common/service/MainService.java
index 433c536..d1ef20f 100644
--- a/src/main/java/zy/cloud/wms/common/service/MainService.java
+++ b/src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -7,18 +7,19 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import zy.cloud.wms.common.config.CodeCoolException;
import zy.cloud.wms.common.model.OrderStoDto;
+import zy.cloud.wms.common.service.asrs.AsrsService;
+import zy.cloud.wms.common.service.asrs.entity.Result;
import zy.cloud.wms.common.utils.VersionUtils;
import zy.cloud.wms.manager.entity.*;
+import zy.cloud.wms.manager.entity.param.StockTransferParam;
import zy.cloud.wms.manager.service.CustOrderService;
import zy.cloud.wms.manager.service.LocDetlService;
import zy.cloud.wms.manager.service.MatService;
import zy.cloud.wms.manager.service.PakoutService;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
/**
* Created by vincent on 2021/3/1
@@ -37,15 +38,28 @@
private CustOrderService custOrderService;
@Autowired
private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private AsrsService asrsService;
@Transactional
public List<StoPreTab> stockOutPreview(OrderStoDto dto) {
if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) {
throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
}
+ List<StoPreTab> res = new ArrayList<>();
// 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
- locDetlService.checkLocDetlCount(dto.getNumber());
- List<StoPreTab> result = new ArrayList<>();
+ List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(dto.getNumber());
+ if (!Cools.isEmpty(transferParams)) {
+ // 鏌ョ湅绔嬪簱搴撳瓨
+ Result result = asrsService.stockTransferPrew(transferParams);
+ if (result.getCode() == 500) {
+ throw new CodeCoolException("20001-" + String.valueOf(result.getData()));
+ }
+ if (result.getCode() == 200) {
+ res = (List<StoPreTab>) result.getData();
+ }
+ }
+
for (CustOrder custOrder : dto.getCustOrders()) {
// 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
Mat mat = matService.selectByMatnr(custOrder.getUserCode());
@@ -72,14 +86,22 @@
tab.setRemQty(tab.getTotal() - tab.getReduce());
tab.setPrior(locDetlService.isPrior(locDetl.getNodeId(), mat.getMatnr()));
tab.setPrior$(tab.getPrior()?"鉁�":"脳");
- result.add(tab);
+ tab.setType(1);
+ res.add(tab);
// 鍓╀綑寰呭嚭鏁伴噺閫掑噺
issued = issued - locDetl.getAnfme();
}
}
}
- return result;
+ res.sort(new Comparator<StoPreTab>() {
+ @Override
+ public int compare(StoPreTab o1, StoPreTab o2) {
+// return o1.getMatnr().length() - o2.getMatnr().length();
+ return (int) (o1.getAnfme() - o2.getAnfme());
+ }
+ });
+ return res;
}
@Transactional
diff --git a/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java b/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
index 9fb018a..3560d4b 100644
--- a/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
+++ b/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
@@ -19,6 +19,21 @@
@Value("${asrs.baseUrl}")
private String asrsBaseUrl;
+ public Result stockTransferPrew(List<StockTransferParam> params) {
+ try {
+ String response = new HttpHandler.Builder()
+ .setUri(asrsBaseUrl)
+ .setPath("/open/api/stockOut/prew")
+ .setJson(JSON.toJSONString(params))
+ .build()
+ .doPost();
+ return JSON.parseObject(response, Result.class);
+ } catch (IOException e) {
+ e.printStackTrace();
+ return new Result(500, "鏈嶅姟鍣ㄥ紓甯�", null);
+ }
+ }
+
public Boolean stockTransfer(List<StockTransferParam> params) {
try {
String response = new HttpHandler.Builder()
diff --git a/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java b/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java
index 497cd3b..bb31cd6 100644
--- a/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java
+++ b/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java
@@ -1,6 +1,9 @@
package zy.cloud.wms.common.service.asrs.entity;
import lombok.Data;
+import zy.cloud.wms.manager.entity.StoPreTab;
+
+import java.util.List;
/**
* Created by vincent on 2021/3/20
@@ -12,6 +15,14 @@
private String msg;
- private Object data;
+ private List<StoPreTab> data;
+ public Result() {
+ }
+
+ public Result(Integer code, String msg, List<StoPreTab> data) {
+ this.code = code;
+ this.msg = msg;
+ this.data = data;
+ }
}
diff --git a/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java b/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
index b721994..cb18372 100644
--- a/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
+++ b/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
@@ -311,6 +311,7 @@
data.getETypeID(), // 缁忔墜浜虹紪鍙穂闈炵┖]
detl0.getUserCode(), // 鍟嗗搧缂栧彿
detl0.getQty(), // 鍟嗗搧鏁伴噺
+ detl0.getQty(), // 鎬绘暟閲�
detl0.getPrice(), // 鍟嗗搧鍗曚环
detl0.getComment(), // 鍟嗗搧澶囨敞[闈炵┖]
0, // 鐘舵��
@@ -372,7 +373,7 @@
// 琛ㄤ綋
GetOrderResultDetl0 detl0 = new GetOrderResultDetl0();
detl0.setUserCode(custOrder.getUserCode());
- detl0.setQty(custOrder.getQty());
+ detl0.setQty(custOrder.getTotal());
detl0.setPrice(custOrder.getPrice());
detl0.setComment(custOrder.getComment());
list.add(detl0);
diff --git a/src/main/java/zy/cloud/wms/manager/entity/CustOrder.java b/src/main/java/zy/cloud/wms/manager/entity/CustOrder.java
index 2de633b..eeb2b63 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/CustOrder.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/CustOrder.java
@@ -55,6 +55,12 @@
private Double qty;
/**
+ * 鎬绘暟閲�
+ */
+ @ApiModelProperty(value= "鎬绘暟閲�")
+ private Double total;
+
+ /**
* 鍟嗗搧鍗曚环
*/
@ApiModelProperty(value= "鍟嗗搧鍗曚环")
@@ -94,13 +100,14 @@
public CustOrder() {}
- public CustOrder(String number,String billDate,String bTypeId,String eTypeId,String userCode,Double qty,Double price,String comment,Integer status,Date createTime,Date updateTime,String memo) {
+ public CustOrder(String number,String billDate,String bTypeId,String eTypeId,String userCode,Double qty,Double total,Double price,String comment,Integer status,Date createTime,Date updateTime,String memo) {
this.number = number;
this.billDate = billDate;
this.bTypeId = bTypeId;
this.eTypeId = eTypeId;
this.userCode = userCode;
this.qty = qty;
+ this.total = total;
this.price = price;
this.comment = comment;
this.status = status;
@@ -172,6 +179,14 @@
this.qty = qty;
}
+ public Double getTotal() {
+ return total;
+ }
+
+ public void setTotal(Double total) {
+ this.total = total;
+ }
+
public Double getPrice() {
return price;
}
diff --git a/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java b/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
index 58b639f..e32e995 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
@@ -30,4 +30,6 @@
private String prior$;
+ private Integer type;
+
}
diff --git a/src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java b/src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java
index eb0ff73..fe809f4 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java
@@ -12,5 +12,7 @@
private Double anfme;
+ private Double total;
+
}
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
index 3c1be77..207f7fb 100644
--- a/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
+++ b/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
@@ -16,4 +16,8 @@
@Update("delete from man_cust_order where number=#{number}")
int delete(@Param("number") String number);
+
+ @Update("update man_cust_order_log set qty = #{qty} where number=#{number} and user_code=#{userCode}")
+ int updateQty(@Param("number") String number, @Param("userCode") String userCode, @Param("qty") Double qty);
+
}
diff --git a/src/main/java/zy/cloud/wms/manager/service/CustOrderService.java b/src/main/java/zy/cloud/wms/manager/service/CustOrderService.java
index 8710096..04859aa 100644
--- a/src/main/java/zy/cloud/wms/manager/service/CustOrderService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/CustOrderService.java
@@ -7,4 +7,6 @@
boolean updateStatus(String number, Integer status);
+ boolean updateQty(String number, String userCode, Double anfme);
+
}
diff --git a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
index a0eab4c..0607190 100644
--- a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import zy.cloud.wms.manager.entity.LocDetl;
+import zy.cloud.wms.manager.entity.param.StockTransferParam;
import java.util.List;
@@ -20,6 +21,8 @@
*/
void checkLocDetlCount(String number);
+ List<StockTransferParam> checkLocDetlCountOfRes(String number);
+
/**
* 鍑忓皯搴撳瓨
*/
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java
index d5f3d40..a2566e7 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java
@@ -13,4 +13,9 @@
public boolean updateStatus(String number, Integer status) {
return this.baseMapper.updateStatus(number, status) > 0;
}
+
+ @Override
+ public boolean updateQty(String number, String userCode, Double anfme) {
+ return this.baseMapper.updateQty(number, userCode, anfme) > 0;
+ }
}
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
index 64ec318..5a1277b 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
@@ -11,6 +11,7 @@
import zy.cloud.wms.manager.entity.LocDetl;
import zy.cloud.wms.manager.entity.Mat;
import zy.cloud.wms.manager.entity.Prior;
+import zy.cloud.wms.manager.entity.param.StockTransferParam;
import zy.cloud.wms.manager.mapper.LocDetlMapper;
import zy.cloud.wms.manager.service.CustOrderService;
import zy.cloud.wms.manager.service.LocDetlService;
@@ -84,6 +85,28 @@
}
@Override
+ public List<StockTransferParam> checkLocDetlCountOfRes(String number) {
+ List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("number", number).eq("status", 1));
+ boolean asrs = false;
+ List<StockTransferParam> params = new ArrayList<>();
+ for (CustOrder custOrder : custOrders) {
+ Double count = this.baseMapper.selectCountByMatnr(custOrder.getUserCode());
+ if (count == null) {
+ count = 0.0D;
+ }
+ if (count < custOrder.getQty()) {
+ if (!asrs) { asrs = true; }
+ StockTransferParam param = new StockTransferParam();
+ param.setMatnr(custOrder.getUserCode());
+ param.setAnfme(custOrder.getQty() - count);
+ param.setTotal(custOrder.getQty());
+ params.add(param);
+ }
+ }
+ return params;
+ }
+
+ @Override
public Boolean reduceStock(Long nodeId, String matnr, Double anfme) {
return this.baseMapper.reduceStock(nodeId, matnr, anfme)>0;
}
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
index b580661..74ca754 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -317,6 +317,7 @@
null, // 缁忔墜浜虹紪鍙穂绌篯
dto.getMatnr(), // 鍟嗗搧缂栧彿
dto.getCount(), // 鍟嗗搧鏁伴噺
+ dto.getCount(), // 鎬绘暟閲�
Cools.isEmpty(mat.getName())?0.0D:Double.parseDouble(mat.getName()), // 鍟嗗搧鍗曚环
null, // 鍟嗗搧澶囨敞[绌篯
1, // 鐘舵��
@@ -332,9 +333,10 @@
}
@Override
+ @Transactional
public R stockTransfer(String number, Long userId) {
List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("number", number).eq("status", 1));
- boolean error = false;
+ boolean asrs = false;
List<StockTransferParam> params = new ArrayList<>();
for (CustOrder custOrder : custOrders) {
Double count = locDetlService.selectCountByMatnr(custOrder.getUserCode());
@@ -342,17 +344,21 @@
count = 0.0D;
}
if (count < custOrder.getQty()) {
- if (!error) {
- error = true;
- }
+ if (!asrs) { asrs = true; }
StockTransferParam param = new StockTransferParam();
param.setMatnr(custOrder.getUserCode());
param.setAnfme(custOrder.getQty() - count);
params.add(param);
}
}
- if (error) {
+ if (asrs) {
if (asrsService.stockTransfer(params)) {
+ for (StockTransferParam param : params) {
+ // 淇敼閿�鍞鍗曞緟鍑烘暟閲�
+ if (!custOrderService.updateQty(number, param.getMatnr(), param.getAnfme())) {
+ throw new CoolException("淇敼閿�鍞鍗曞緟鍑烘暟閲忓け璐�");
+ }
+ }
return R.ok("搴撳瓨璋冩嫧鎴愬姛");
} else {
return R.error("绔嬪簱璋冩嫧澶辫触锛岃鑱旂郴绠$悊鍛�");
diff --git a/src/main/resources/mapper/CustOrderMapper.xml b/src/main/resources/mapper/CustOrderMapper.xml
index b561851..fecc359 100644
--- a/src/main/resources/mapper/CustOrderMapper.xml
+++ b/src/main/resources/mapper/CustOrderMapper.xml
@@ -10,6 +10,7 @@
<result column="eType_id" property="eTypeId" />
<result column="user_code" property="userCode" />
<result column="qty" property="qty" />
+ <result column="total" property="total" />
<result column="price" property="price" />
<result column="comment" property="comment" />
<result column="status" property="status" />
diff --git a/src/main/webapp/static/js/custOrder/custOrder.js b/src/main/webapp/static/js/custOrder/custOrder.js
index 932e1f0..a8160a1 100644
--- a/src/main/webapp/static/js/custOrder/custOrder.js
+++ b/src/main/webapp/static/js/custOrder/custOrder.js
@@ -206,7 +206,7 @@
,closeBtn: false
,offset: '100px'
// ,area: ['800px','450px']
- ,area: '800px'
+ ,area: '1000px'
,shade: 0.5
,shadeClose: true
,id: 'LAY_layuipro'
@@ -224,15 +224,16 @@
height: 432,
cols: [[
{field: 'title', title: '鍟嗗搧', align: 'center'},
- {field: 'anfme', title: '鎬绘暟閲�', align: 'center', style: 'font-weight: bold', width: 80},
+ {field: 'anfme', title: '鎬绘暟閲�', align: 'center', style: 'font-weight: bold', width: 90},
+ {field: 'type', title: '浠撳簱', align: 'center', templet: '#typeTpl', width: 90},
{field: 'locNo', title: '璐т綅', align: 'center'},
{field: 'prior$', title: '鎺ㄨ崘璐т綅', align: 'center', width: 100},
- {field: 'reduce', title: '鏁伴噺', align: 'center', width: 80, style: 'font-weight: bold'},
+ {field: 'reduce', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
// {field: 'remQty', title: '浣欓噺', align: 'center', width: 80},
- {field: 'total', title: '鎬婚噺', align: 'center', width: 80},
+ {field: 'total', title: '鎬婚噺', align: 'center', width: 90},
]],
done: function () {
- tableX.merges('stoPreTab', [0,1]);
+ tableX.merges('stoPreTab', [0,1,2]);
$('.layui-table-body.layui-table-main').css("overflow", "auto")
}
});
diff --git a/src/main/webapp/views/custOrder/custOrder.html b/src/main/webapp/views/custOrder/custOrder.html
index d4eb38f..4b5d3ae 100644
--- a/src/main/webapp/views/custOrder/custOrder.html
+++ b/src/main/webapp/views/custOrder/custOrder.html
@@ -86,6 +86,15 @@
>{{d.status$}}</span>
</script>
+<script type="text/html" id="typeTpl">
+ <span name="type"
+ {{# if( d.type === 1){ }}
+ class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>骞充粨</span>
+ {{# } else if(d.type === 2){ }}
+ class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>绔嬪簱</span>
+ {{# } }}
+</script>
+
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script>
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
--
Gitblit v1.9.1