From f96c2adc8d6bab6a4ee67a50ecfc9e6c7e435efd Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期一, 24 四月 2023 08:50:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/stasrs' into stasrs --- src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | 2 src/main/java/com/zy/asrs/service/LocDetlService.java | 2 src/main/java/com/zy/asrs/controller/OpenController.java | 6 src/main/resources/mapper/LocDetlMapper.xml | 8 + src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java | 6 src/main/java/com/zy/asrs/task/handler/OrderSendHandler.java | 88 ++++++++++++++ src/main/java/com/zy/asrs/task/OrderSendScheduler.java | 33 +++++ src/main/java/com/zy/asrs/service/OpenService.java | 2 src/main/java/com/zy/asrs/task/ErpAccessTokenScheduler.java | 25 ++++ src/main/webapp/views/password.html | 16 ++ src/main/webapp/views/index.html | 24 +++ src/main/java/com/zy/asrs/task/handler/ErpAccessTokenHandler.java | 89 ++++++++++++++ src/main/webapp/static/js/order/order.js | 4 src/main/java/com/zy/common/model/DetlDto.java | 2 src/main/webapp/static/js/common.js | 16 ++ src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 11 + src/main/webapp/views/login.html | 1 src/main/resources/application.yml | 4 18 files changed, 325 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 8f2e27c..5ec0d66 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -6,6 +6,7 @@ import com.core.common.*; import com.core.exception.CoolException; import com.zy.asrs.entity.param.*; +import com.zy.asrs.entity.result.StockVo; import com.zy.asrs.service.OpenService; import com.zy.common.model.DetlDto; import com.zy.common.web.BaseController; @@ -105,9 +106,10 @@ */ @RequestMapping("/stock/default/v1") public R queryStock(@RequestHeader(required = false) String appkey, + @RequestBody StockVo stockVo, HttpServletRequest request) { - auth(appkey, null, request); - return R.ok().add(openService.queryStock()); + auth(appkey, stockVo, request); + return R.ok().add(openService.queryStock(stockVo)); } private void auth(String appkey, Object obj, HttpServletRequest request) { diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java index c33ab13..6238035 100644 --- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java @@ -58,7 +58,7 @@ Double queryStockAnfme(String matnr, String batch); - List<StockVo> queryStockTotal(); + List<StockVo> queryStockTotal(@Param("matnr")String matnr,@Param("batch")String batch); Integer sum(); diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java index 0023ecf..5bf12ab 100644 --- a/src/main/java/com/zy/asrs/service/LocDetlService.java +++ b/src/main/java/com/zy/asrs/service/LocDetlService.java @@ -47,7 +47,7 @@ Double queryStockAnfme(String matnr, String batch); - List<StockVo> queryStockTotal(); + List<StockVo> queryStockTotal(StockVo stockVo); Integer sum(); diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java index bd22c5e..be4655c 100644 --- a/src/main/java/com/zy/asrs/service/OpenService.java +++ b/src/main/java/com/zy/asrs/service/OpenService.java @@ -32,7 +32,7 @@ /** * 搴撳瓨缁熻 */ - List<StockVo> queryStock(); + List<StockVo> queryStock(StockVo stockVo); // ------------------------------------------ diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java index 44bdd07..8cc6a1f 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java @@ -87,8 +87,10 @@ } @Override - public List<StockVo> queryStockTotal() { - return this.baseMapper.queryStockTotal(); + public List<StockVo> queryStockTotal(StockVo stockVo) { + String matnr=stockVo.getMatnr(); + String batch=stockVo.getBatch(); + return this.baseMapper.queryStockTotal(matnr,batch); } /** diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index 7c0de39..7530d36 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -122,6 +122,7 @@ } else { list.add(dto); } + dto.setWeight(detail.getWeight()); } for (DetlDto detlDto : list) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); @@ -147,6 +148,7 @@ orderDetl.setUpdateTime(now); orderDetl.setStatus(1); orderDetl.setQty(0.0D); + orderDetl.setWeight(detlDto.getWeight()); if (!orderDetlService.insert(orderDetl)) { throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); } @@ -264,6 +266,7 @@ } else { list.add(dto); } + dto.setWeight(detail.getWeight()); } for (DetlDto detlDto : list) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); @@ -282,6 +285,7 @@ orderDetl.setUpdateTime(now); orderDetl.setStatus(1); orderDetl.setQty(0.0D); + orderDetl.setWeight(detlDto.getWeight()); if (!orderDetlService.insert(orderDetl)) { throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); } @@ -335,8 +339,8 @@ @Override @Transactional - public List<StockVo> queryStock() { - return locDetlService.queryStockTotal(); + public List<StockVo> queryStock(StockVo stockVo) { + return locDetlService.queryStockTotal(stockVo); } @Override @@ -548,6 +552,9 @@ mat.setStatus(1); mat.setCreateTime(now); mat.setUpdateTime(now); + if (Cools.isEmpty(matParam.getLength()) || matParam.getLength() == 0) { + mat.setLength(null); + } if (!matService.insert(mat)) { throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); } else { diff --git a/src/main/java/com/zy/asrs/task/ErpAccessTokenScheduler.java b/src/main/java/com/zy/asrs/task/ErpAccessTokenScheduler.java new file mode 100644 index 0000000..5c62adf --- /dev/null +++ b/src/main/java/com/zy/asrs/task/ErpAccessTokenScheduler.java @@ -0,0 +1,25 @@ +package com.zy.asrs.task; + +import com.zy.asrs.task.handler.ErpAccessTokenHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +@Component +public class ErpAccessTokenScheduler { + + public static String accessToken = ""; + + @Autowired + private ErpAccessTokenHandler erpAccessTokenHandler; + + + + @PostConstruct + @Scheduled(cron = "10 15,30,45,59 * * * ?") + private void accessToken(){ + erpAccessTokenHandler.getAccessToken(); + } +} diff --git a/src/main/java/com/zy/asrs/task/OrderSendScheduler.java b/src/main/java/com/zy/asrs/task/OrderSendScheduler.java new file mode 100644 index 0000000..673f885 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/OrderSendScheduler.java @@ -0,0 +1,33 @@ +package com.zy.asrs.task; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.handler.OrderSendHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class OrderSendScheduler { + + @Autowired + private OrderService orderService; + + @Autowired + private OrderSendHandler orderSendHandler; + + + + @Scheduled(cron = "0/3 * * * * ? ") + private void looping(){ + List<Order> orders = orderService.selectList(new EntityWrapper<Order>() + .eq("settle", "4") + .le("item_id", 3)); + for (Order order : orders) { + orderSendHandler.start(order); + } + } +} diff --git a/src/main/java/com/zy/asrs/task/handler/ErpAccessTokenHandler.java b/src/main/java/com/zy/asrs/task/handler/ErpAccessTokenHandler.java new file mode 100644 index 0000000..185e247 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/handler/ErpAccessTokenHandler.java @@ -0,0 +1,89 @@ +package com.zy.asrs.task.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.core.exception.CoolException; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.ErpAccessTokenScheduler; +import com.zy.common.utils.HttpHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.io.IOException; + +@Service +@Slf4j +public class ErpAccessTokenHandler extends AbstractHandler<String> { + private String erpIp = "http://10.100.221.19:81"; + + + public void getAccessToken() { + JSONObject appTokenJson = new JSONObject(); + appTokenJson.put("appId", "ESB"); + appTokenJson.put("appSecuret", "123456789"); + appTokenJson.put("tenantid", "ierp"); + appTokenJson.put("accountId", "1492035591649364992"); + appTokenJson.put("language", "zh_CN"); + + JSONObject appTokenResp; + + //鑾峰彇app_token锛岀敤app_token鑾峰彇access_token + try { + appTokenResp = JSON.parseObject(new HttpHandler.Builder() + .setUri(erpIp) + .setPath("/ierp/api/getAppToken.do") + .setJson(appTokenJson.toJSONString()) + .build() + .doPost()); + } catch (IOException e) { + log.info("杩炴帴erp鏈嶅姟鍣ㄨ秴鏃�"); + return; + } + JSONObject data = null; + try { + data = (JSONObject) appTokenResp.get("data"); + + } catch (Exception e) { + System.out.println("鑾峰彇appToken涓虹┖"); + throw new CoolException(e); + } + + //鑾峰彇access_token + if ((boolean) data.get("success")) { + JSONObject accessTokenJson = new JSONObject(); + accessTokenJson.put("user", "13800000000"); + accessTokenJson.put("apptoken", (String) data.get("app_token")); + accessTokenJson.put("tenantid", "ierp"); + accessTokenJson.put("accountId", "1492035591649364992"); + accessTokenJson.put("usertype", "Mobile"); + + JSONObject accessTokenResp; + //鑾峰彇app_token锛岀敤app_token鑾峰彇access_token + try { + accessTokenResp = JSON.parseObject(new HttpHandler.Builder() + .setUri(erpIp) + .setPath("/ierp/api/login.do") + .setJson(accessTokenJson.toJSONString()) + .build() + .doPost()); + } catch (IOException e) { + throw new RuntimeException(e); + } + JSONObject accessTokenData = null; + try { + accessTokenData = (JSONObject) accessTokenResp.get("data"); + } catch (Exception e) { + System.out.println("鑾峰彇accessToken涓虹┖"); + throw new CoolException(e); + } + + if ((boolean) accessTokenData.get("success")) { + ErpAccessTokenScheduler.accessToken = (String) accessTokenData.get("access_token"); + log.info("鏇存柊access_token, 鏂皌oken涓�:" + (String) accessTokenData.get("access_token")); + } + + } + + + } +} diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSendHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSendHandler.java new file mode 100644 index 0000000..3c86c42 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/handler/OrderSendHandler.java @@ -0,0 +1,88 @@ +package com.zy.asrs.task.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.DocType; +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.DocTypeService; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.ErpAccessTokenScheduler; +import com.zy.common.utils.HttpHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Service +@Transactional +public class OrderSendHandler extends AbstractHandler<String> { + private static final String erpIp = "10.100.221.19:81"; + private static final String inPath = "/ierp/kapi/app/im/PurinbillApiPlugin"; + private static final String outPath = "/ierp/kapi/app/im/SaloutbillApiPlugin"; + + + + + @Autowired + private OrderService orderService; + @Autowired + private DocTypeService docTypeService; + + public void start(Order order) { + String accessToken = ErpAccessTokenScheduler.accessToken; + if (accessToken.equals("")) { + return; + } + + HashMap<String, Object> header = new HashMap<>(); + header.put("accessToken",accessToken); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("orderNo",order.getOrderNo()); + HttpHandler.Builder prepBuilder = new HttpHandler.Builder() + .setUri(erpIp) + .setHeaders(header) + .setJson(jsonObject.toJSONString()); + JSONObject respJson; + + + //鍏ュ簱鍗曟嵁 + if (docTypeService.selectOne(new EntityWrapper<DocType>() + .eq("doc_id",order.getDocType())).getPakin() == 1) { + try { + respJson = JSON.parseObject( + prepBuilder.setPath(inPath) + .build() + .doPost()); + } catch (IOException e) { + throw new RuntimeException(e); + } + }else { + //鍑哄簱鍗曟嵁 + try { + respJson = JSON.parseObject( + prepBuilder.setPath(outPath) + .build() + .doPost()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + if ((boolean)respJson.get("success")) { + orderService.updateSettle(order.getId(),6L,1L); + log.info("鍗曟嵁:" + order.getOrderNo() + "鍥炰紶鎴愬姛锛屽凡鏇存柊鍗曟嵁鐘舵��"); + }else { + + order.setItemId(order.getItemId() + 1); + orderService.updateById(order); + log.info("鍗曟嵁:"+ order.getOrderNo()+" 鍥炰紶澶辫触锛岃繖鏄" + order.getItemId() + "娆″洖浼�"); + log.info(respJson.toJSONString()); + } + } +} diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java index ff48745..0a38646 100644 --- a/src/main/java/com/zy/common/model/DetlDto.java +++ b/src/main/java/com/zy/common/model/DetlDto.java @@ -20,6 +20,8 @@ private Double anfme; + private Double weight; + public DetlDto() { } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d704656..0f0267c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,8 +10,8 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver -# url: jdbc:sqlserver://10.10.10.100:1433;databasename=stasrs - url: jdbc:sqlserver://192.168.4.15:1433;databasename=stasrs + url: jdbc:sqlserver://10.10.10.100:1433;databasename=stasrs +# url: jdbc:sqlserver://192.168.4.15:1433;databasename=stasrs username: sa password: sa@123 mvc: diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml index b188922..81c8ca0 100644 --- a/src/main/resources/mapper/LocDetlMapper.xml +++ b/src/main/resources/mapper/LocDetlMapper.xml @@ -295,9 +295,15 @@ select matnr, batch, - count(anfme) as count + sum(anfme) as count from asr_loc_detl where 1=1 + <if test="batch != null and batch != ''"> + and batch = #{batch} + </if> + <if test="matnr != null and matnr != ''"> + and matnr = #{matnr} + </if> group by matnr,batch </select> <select id="sum" resultType="java.lang.Integer"> diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index 88c58cc..412dbdf 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -5,6 +5,22 @@ // 璇︽儏绐楀彛-瀹藉害 var detailWidth = '90%'; +function checkPassword(password) { + //瀵嗙爜蹇呴』鍖呭惈瀛楃鍜屾暟瀛楅暱搴︿笉鑳藉皯浜�8浣� + let pattern = /(?=.*[0-9])(?=.*[a-zA-Z!@#$]).{8,}/ + //涓嶈兘鍖呭惈杩炵画鏁板瓧 + let pattern2 = /(0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){3}\d/ + //閲嶅鏁板瓧涓嶈兘瓒呰繃鍥涗綅 + let pattern3 = /(\d)\1{3}/ + if (pattern.test(password) && pattern2.test(password) === false && pattern3.test(password) === false) { + //鍖归厤鏀捐 + return true + } + + //涓嶅尮閰嶈姹備慨鏀瑰瘑鐮�1 + return false; +} + // 闈炵┖鍒ゆ柇 function isEmpty(obj){ return typeof obj == "undefined" || obj == null || obj === ""; diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js index d49ed24..3a7bc90 100644 --- a/src/main/webapp/static/js/order/order.js +++ b/src/main/webapp/static/js/order/order.js @@ -48,6 +48,7 @@ {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200}, {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl', minWidth: 160, width: 160}, {field: 'memo', align: 'center',title: '澶囨敞', hide: true}, + {field: 'createBy$', align: 'center', title: '鎿嶄綔鍛�', minWidth: 160, width: 160}, {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 260} ]], request: { @@ -202,7 +203,8 @@ // }, // {field: 'inQty', title: '宸插叆搴撻噺'}, // {field: 'color', title: '棰滆壊'}, - {field: 'specs', title: '瑙勬牸'} + {field: 'specs', title: '瑙勬牸'}, + {field: 'weight', title: '閲嶉噺'} ]], request: { pageName: 'curr', diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html index 0523023..20a7e84 100644 --- a/src/main/webapp/views/index.html +++ b/src/main/webapp/views/index.html @@ -52,7 +52,7 @@ <cite id="username" style="margin-right: 5px">绠$悊鍛�</cite> </a> <dl class="layui-nav-child"> - <dd lay-unselect><a ew-href="detail.html?resourceId=8">鍩烘湰璧勬枡</a></dd> + <dd lay-unselect><a id="personPage" ew-href="detail.html?resourceId=8">鍩烘湰璧勬枡</a></dd> <hr> <dd lay-unselect><a id="logout">閫�鍑�</a></dd> </dl> @@ -160,6 +160,28 @@ var url = logout.getAttribute('href'); logout.setAttribute('href', baseUrl + "/login"); + let username = localStorage.getItem('username') + let password = localStorage.getItem('password') + if (!(username === 'super' || password === 'root')) { + if(!checkPassword(password)){ + //瑕佹眰淇敼瀵嗙爜 + layer.msg('寮卞瘑鐮佽淇敼瀵嗙爜鍐嶇户缁�', {icon: 2}); + layer.open({ + type: 2, + title: '鍩烘湰璧勬枡', + maxmin: true, + shadeClose: false, + area: [top.detailWidth, top.detailHeight], + content: 'detail.html', + closeBtn: 0, + success: function(layero, index){ + layero.find('.layui-layer-min').remove(); //鍘绘帀鏈�灏忓寲鎸夐挳 + layero.find('.layui-layer-max').remove(); //鍘绘帀鏈�澶у寲鎸夐挳 + } + }) + } + } + }); </script> <script type="text/html" id="menuTpl"> diff --git a/src/main/webapp/views/login.html b/src/main/webapp/views/login.html index 1c0772a..af1d465 100644 --- a/src/main/webapp/views/login.html +++ b/src/main/webapp/views/login.html @@ -133,6 +133,7 @@ if (res.code === 200){ localStorage.setItem("token", res.data.token); localStorage.setItem("username", res.data.username); + localStorage.setItem("password", password); window.location.href = "index.html"; } else if (res.code === 10001) { layer.tips(res.msg, '#username', {tips: [4, '#ff0000']}); diff --git a/src/main/webapp/views/password.html b/src/main/webapp/views/password.html index 70c14d5..623a5ab 100644 --- a/src/main/webapp/views/password.html +++ b/src/main/webapp/views/password.html @@ -91,11 +91,27 @@ if (parent.$('#password').val() === hex_md5(val)) { return "涓庢棫瀵嗙爜涓嶈兘鐩稿悓"; } + + let username = localStorage.getItem('username') + if (!(username === 'super' || password === 'root')){ + if(!checkPassword(val)){ + //瀵嗙爜蹇呴』鍖呭惈瀛楃鍜屾暟瀛� + return "瀵嗙爜蹇呴』鍖呭惈瀛楃鍜屾暟瀛楅暱搴︿笉鑳藉皯浜�8浣嶏紝涓斾笉鑳藉寘鍚繛缁暟瀛楀拰鍥涗綅閲嶅鏁板瓧"; + } + } }, rePwd: function (val) { if ($('#password').val() !== val){ return "瀵嗙爜涓嶄竴鑷�"; } + + let username = localStorage.getItem('username') + if (!(username === 'super' || password === 'root')){ + if(!checkPassword(val)){ + //瀵嗙爜蹇呴』鍖呭惈瀛楃鍜屾暟瀛� + return "瀵嗙爜蹇呴』鍖呭惈瀛楃鍜屾暟瀛楅暱搴︿笉鑳藉皯浜�8浣嶏紝涓斾笉鑳藉寘鍚繛缁暟瀛楀拰鍥涗綅閲嶅鏁板瓧"; + } + } } }); -- Gitblit v1.9.1