src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/common/service/erp/entity/UploadCancelResult.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/manager/service/LocDetlService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/custOrder/custOrder.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/pda/matQuery.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/pda/stockCheck.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
@@ -39,6 +39,8 @@ public static final String GET_BASIS = "cM/basis/getBasis"; public static final String UPLOAD_BILL = "cM/basis/uploadBill"; public static final String UPLOAD_STOCK = "cM/basis/uploadStock"; public static final String OVER_BILL = "cM/basis/OverBill"; public static final String UPLOAD_CANCEL_RESULT = "cM/basis/cancelOrders"; @Autowired private CustOrderService custOrderService; @@ -474,4 +476,93 @@ } /** * 获取取消订单 */ @Scheduled(cron = "0/5 * * * * ? ") @Transactional // @PostConstruct public void getCancelOrdersExecute(){ try { Map<String, Object> json = new HashMap<>(); String response = new HttpHandler.Builder() .setUri(URI) .setPath(OVER_BILL) .setJson(JSON.toJSONString(json)) .build() .doPost(); if (!Cools.isEmpty(response)) { // log.info(response); Date now = new Date(); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return; } List<GetOrderResult0> list = JSON.parseArray(result.getData(), GetOrderResult0.class); if (!Cools.isEmpty(list)) { boolean complete = true; Set<String> existNumbers = new HashSet<>(); } } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } /** * 上传销售订单取消结果 */ @Scheduled(cron = "0/5 * * * * ? ") @Transactional // @PostConstruct public void uploadCancelOrdersExecute(){ try { List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("status", 3).isNotNull("vch_code")); if (Cools.isEmpty(custOrders)) { return; } Map<String, Object> json = new HashMap<>(); List<UploadCancelResult> list = new ArrayList<>(); for (CustOrder custOrder : custOrders) { UploadCancelResult result = new UploadCancelResult(); result.setNumber(custOrder.getNumber()); result.setUserCode(custOrder.getUserCode()); result.setQty(custOrder.getTotal()); result.setStatus(1); list.add(result); } json.put("data", list); String response = new HttpHandler.Builder() .setUri(URI) .setPath(UPLOAD_CANCEL_RESULT) .setJson(JSON.toJSONString(json)) .build() .doPost(); if (!Cools.isEmpty(response)) { // log.info(response); Date now = new Date(); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return; } for (UploadCancelResult result1 : list) { // 转历史档 int save = custOrderMapper.saveLog(result1.getNumber(), result1.getUserCode()); if (save > 0) { if (custOrderMapper.delete(new EntityWrapper<CustOrder>().eq("number", result1.getNumber()).eq("user_code", result1.getUserCode())) == 0) { throw new CoolException("删除销售订单失败"); } } } } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } } src/main/java/zy/cloud/wms/common/service/erp/entity/UploadCancelResult.java
New file @@ -0,0 +1,19 @@ package zy.cloud.wms.common.service.erp.entity; import lombok.Data; /** * Created by vincent on 2021/4/5 */ @Data public class UploadCancelResult { private String number; private String userCode; private Double qty; private Integer Status; } src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
@@ -14,9 +14,15 @@ @Insert("insert into man_cust_order_log select * from man_cust_order where number=#{number}") int saveLog(String number); @Insert("insert into man_cust_order_log select * from man_cust_order where number=#{number} and user_code = #{userCode}") int saveLog(@Param("number") String number, @Param("userCode") String userCode); @Update("delete from man_cust_order where number=#{number}") int delete(@Param("number") String number); @Update("delete from man_cust_order where number=#{number} and user_code = #{userCode}") int delete(@Param("number") String number, @Param("userCode") String userCode); @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); src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -13,6 +13,11 @@ LocDetl getLocDetl(Long nodeId, String matnr); /** * 查看当前物料在库存中的库存明细(推荐货位在前) * @param matnr * @return */ List<LocDetl> findOfSort(String matnr); /** src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -254,9 +254,59 @@ List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>() .eq("doc_num", param.getNumber()) .in("wrk_sts", 1, 2)); // 修改库存数量 for (Pakout pakout : pakouts) { LocDetl locDetl = locDetlService.getLocDetl(pakout.getNodeId(), pakout.getMatnr()); // 缺货 or 立库 if (locDetl == null) { // 缺货 if (pakout.getLocNo().equals("缺货")) { Double count = Optional.ofNullable(locDetlService.selectCountByMatnr(pakout.getMatnr())).orElse(0.0D); if (count < pakout.getAnfme()) { throw new CoolException(pakout.getMaktx()+"缺货"); } Date now = new Date(); // 查找推荐货位是否库存足够 List<LocDetl> locDetls = locDetlService.findOfSort(pakout.getMatnr()); double issued = Optional.ofNullable(pakout.getAnfme()).orElse(0.0D) ; for (LocDetl locDetl1 : locDetls) { if (issued > 0) { // 保存出库通知单 Pakout newPakout = new Pakout(); newPakout.setWrkSts(3L); newPakout.setAnfme(issued>=locDetl1.getAnfme()?locDetl1.getAnfme():issued); newPakout.setZpallet(locDetl1.getZpallet()); newPakout.setLocNo(locDetl1.getLocNo()); newPakout.setNodeId(locDetl1.getNodeId()); newPakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId())); VersionUtils.setPakout(newPakout, locDetl1); newPakout.setDocId(pakout.getDocId()); // 单据类型 newPakout.setDocNum(pakout.getDocNum()); // 单据编号 newPakout.setCreateTime(now); newPakout.setUpdateTime(now); newPakout.setStatus(1); if (!pakoutService.insert(newPakout)) { throw new CoolException("保存出库通知单失败"); } if (issued>=locDetl1.getAnfme()) { // 删除库存明细 if (!locDetlService.removeStock(locDetl1.getNodeId(), newPakout.getMatnr())) { throw new CoolException("删除库存明细失败"); } } else { // 修改库存明细数量 if (!locDetlService.reduceStock(locDetl1.getNodeId(), newPakout.getMatnr(), issued)) { throw new CoolException("修改库存明细数量失败"); } } // 剩余待出数量递减 issued = issued - locDetl1.getAnfme(); } } } continue; } // 修改库存数量 if (pakout.getAnfme()>=locDetl.getAnfme()) { // 删除库存明细 if (!locDetlService.removeStock(locDetl.getNodeId(), pakout.getMatnr())) { @@ -269,6 +319,7 @@ } } } // 修改出库单状态 if (!pakoutService.stockOutComplete(param.getWrkNo(), param.getNumber(), userId)) { return R.error("保存数据失败"); src/main/webapp/views/custOrder/custOrder.html
@@ -92,6 +92,8 @@ class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>平仓</span> {{# } else if(d.type === 2){ }} class="layui-badge layui-badge-green" ><span style="display: none">{{d.number}}</span>立库</span> {{# } else if(d.type === 0){ }} class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>缺货</span> {{# } }} </script> src/main/webapp/views/pda/matQuery.html
@@ -39,6 +39,13 @@ text-overflow:ellipsis; vertical-align: middle; } .form-box textarea { width: 120px; margin-left: 10px; padding-left: 5px; height: 30px; border: 1px solid #777777; } #selectBtn { vertical-align: middle; padding: 3px 5px; @@ -88,12 +95,9 @@ <button id="selectBtn">选</button> </div> <div class="form-item"> <span>商品名称</span> <input id="maktx" type="text" disabled="disabled"> </div> <div class="form-item"> <span>商品规格</span> <input id="specs" type="text" disabled="disabled"> <span style="float: left;margin-left: 38px">商品名称</span> <textarea id="maktx" type="text" disabled="disabled" style="height: 60px;float: left;"></textarea> <div style="clear: both"></div> </div> <div class="form-item"> <span>单位</span> src/main/webapp/views/pda/stockCheck.html
@@ -114,7 +114,7 @@ cellMinWidth: 50, cols: [[ {fixed: 'left', align: 'center', field: 'count', title: '数量', event: 'modify', style:'font-weight: bold;', width:50}, {field: 'matnr', align: 'center', title: '商品编号', event: 'modify'}, // {field: 'matnr', align: 'center', title: '商品编号', event: 'modify'}, {field: 'maktx', align: 'center', title: '商品名称', event: 'modify'} ]], done: function (res, curr, count) {