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