From 9c3f8e613e828776670354a87cb37695e218a00d Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Tue, 10 Oct 2023 11:08:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3bug:=201.=E5=BD=93=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E4=BA=BA=E4=B8=8D=E5=9C=A8=E4=BC=81=E4=B8=9A=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E9=80=9A=E7=9F=A5=E4=B8=AD=E7=9B=B4=E6=8E=A5=E7=82=B9?= =?UTF-8?q?=E5=90=8C=E6=84=8F=E6=97=B6=EF=BC=88=E5=9C=A8=E4=BB=93=E5=82=A8?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E4=B8=AD=E8=BF=9B=E8=A1=8C=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=97=B6=EF=BC=89=EF=BC=8C=E6=9C=89=E5=B9=B3=E8=A1=A1=E5=B2=97?= =?UTF-8?q?=E7=9A=84=E6=B5=81=E7=A8=8B=E5=9C=A8=E5=B9=B3=E8=A1=A1=E5=B2=97?= =?UTF-8?q?=E5=92=8C=E7=BB=BC=E5=90=88=E5=8A=9E=E8=B4=9F=E8=B4=A3=E4=BA=BA?= =?UTF-8?q?=E5=A4=84=E9=99=B7=E5=85=A5=E6=97=A0=E9=99=90=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=202.=E5=87=BA=E5=BA=93=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=A1=AB=E5=86=99=E9=A1=B5=E9=9D=A2=EF=BC=8C=E4=B8=8D=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E7=89=A9=E6=96=99=E6=95=B0=E9=87=8F=E4=B9=9F=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E6=8F=90=E4=BA=A4=E9=80=A0=E6=88=90=E5=90=8E=E5=8F=B0?= =?UTF-8?q?500=E9=94=99=E8=AF=AF=203.=E5=87=BA=E5=BA=93=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=90=8E,=E5=9B=A0Redis=E5=8E=9F=E5=9B=A0=E6=9F=90=E4=BA=9B?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=8A=B6=E6=80=81=E6=9C=AA=E6=9B=B4=E6=AD=A3?= =?UTF-8?q?=E4=B8=BA=E5=B7=B2=E5=AE=8C=E6=88=90=204.=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E5=87=BA=E5=BA=93(=E5=8E=9F=E5=9B=A0:1.?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=94=B3=E8=AF=B7=E7=9A=84=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=92=8C=E5=90=8E=E5=8F=B0=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=B8=AD=EF=BC=8C=E7=89=A9=E6=96=99=E7=BC=96=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E5=BA=93=E5=AD=98id,=E4=BB=93=E5=BA=93id=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E9=94=99=E8=AF=AF=E3=80=82=E5=A6=82=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E4=BA=86a=E4=BB=93=E5=BA=93=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=90=8E=E5=8D=B4=E5=8F=98=E4=B8=BAb=E4=BB=93?= =?UTF-8?q?=E5=BA=93=EF=BC=8Ca=E4=BB=93=E5=BA=93=E7=9A=84=E5=BA=93?= =?UTF-8?q?=E5=AD=98id=E8=A2=AB=E8=AE=BE=E7=BD=AE=E4=B8=BAb=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E7=9A=84=E5=BA=93=E5=AD=98id,2.=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=B5=81=E7=A8=8B=E6=89=80=E6=9C=89=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AD=98=E5=82=A8=E5=AE=8C=E5=85=A8=E4=BE=9D=E8=B5=96?= =?UTF-8?q?Redis=E7=BC=93=E5=AD=98=EF=BC=8C=E6=B2=A1=E6=9C=89=E5=81=9Aredi?= =?UTF-8?q?s=E5=92=8Cmysql=E7=9A=84=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5=20?= =?UTF-8?q?3.=E8=8E=B7=E5=8F=96=E5=88=B0=E7=9A=84=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=94=99=E8=AF=AF)=205.=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=A1=AB=E5=86=99=E9=A1=B5=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E4=B8=89=E7=A7=8D=E9=80=89=E6=8B=A9=E7=89=A9=E6=96=99=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E8=8E=B7=E5=8F=96=E7=9A=84=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E4=B8=8D=E5=90=8C=EF=BC=8C=E5=85=B6=E4=B8=AD?= =?UTF-8?q?=E5=8F=AA=E6=9C=89=E8=BE=93=E5=85=A5=E7=89=A9=E6=96=99=E7=BC=96?= =?UTF-8?q?=E7=A0=81=E8=8E=B7=E5=8F=96=E5=88=B0=E7=9A=84=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=98=AF=E6=AD=A3=E7=A1=AE=E7=9A=84=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E5=88=97=E8=A1=A8=E3=80=82=206.=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=80=89=E6=8B=A9=E4=BB=93=E5=BA=93=E6=97=B6?= =?UTF-8?q?=E5=BD=93=E4=B8=AD=E5=BF=83=E4=BB=93=E5=8A=9E=E5=85=AC=E7=94=A8?= =?UTF-8?q?=E5=93=81=E5=BA=93=E5=92=8C=E5=89=8D=E7=BD=AE=E4=BB=93=E5=8A=9E?= =?UTF-8?q?=E5=85=AC=E7=94=A8=E5=93=81=E5=BA=93=E9=83=BD=E6=9C=89=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E7=89=A9=E6=96=99=E6=97=B6,=E5=9D=87?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=BA=E5=8A=9E=E5=85=AC=E7=94=A8=E5=93=81?= =?UTF-8?q?=E5=BA=93,=E7=94=A8=E6=88=B7=E6=97=A0=E6=B3=95=E5=8C=BA?= =?UTF-8?q?=E5=88=86=207.=E6=9F=90=E4=BA=9B=E5=AE=A1=E6=89=B9=E4=BA=BA?= =?UTF-8?q?=E6=8E=A5=E6=94=B6=E4=B8=8D=E5=88=B0=E4=BC=81=E4=B8=9A=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E7=9A=84=E5=AE=A1=E6=89=B9=E9=80=9A=E7=9F=A5=208.?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=94=B3=E8=AF=B7=E6=8F=90=E4=BA=A4=E5=90=8E?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E8=A2=AB=E7=AF=A1=E6=94=B9bug=209.=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E5=87=BA=E7=8E=B0=E4=BA=86=E8=B4=9F=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8F=8D=E5=BA=94=E5=BA=93=E5=AD=98=E6=95=B0?= =?UTF-8?q?=E7=9B=AE=E5=92=8C=E5=AE=9E=E9=99=85=E6=95=B0=E7=9B=AE=E5=AF=B9?= =?UTF-8?q?=E4=B8=8D=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DepositoryRecordController.java | 82 ++- .../controller/MaterialController.java | 338 ++++++++- .../controller/PageController.java | 1 - .../controller/StockTakingController.java | 4 +- .../controller/UserController.java | 2 +- .../depository_mapper/QrCodeMapper.java | 7 + .../depository_mapper/QrCodeMapper.xml | 8 + .../RedisfifteenMinRecordMapper.java | 3 + .../RedisfifteenMinRecordMapper.xml | 8 + .../RedisfifteenUserMapper.java | 2 + .../RedisfifteenUserMapper.xml | 8 + .../depository_manage/entity/Depository.java | 9 +- .../entity/RedisfifteenUser.java | 9 + .../intercepter/UserInterceptor.java | 15 +- .../service/MaterialService.java | 2 + .../service/RedisfifteenMinRecordService.java | 3 + .../service/RedisfifteenUserService.java | 2 + .../impl/DepositoryRecordServiceImpl.java | 474 +++++++++++-- .../service/impl/MaterialServiceImpl.java | 27 + .../service/impl/QyWxOperationService.java | 22 +- .../RedisfifteenMinRecordServiceImpl.java | 6 + .../impl/RedisfifteenUserServiceImpl.java | 5 + .../service/impl/SplitUnitServiceImpl.java | 2 +- .../service/impl/StockTakingServiceImpl.java | 27 +- .../utils/RedisSynchronizeMysqlUtil.java | 136 ++-- src/main/resources/application-test.yml | 7 +- .../pages/application/application-in.html | 1 + .../pages/application/application-out.html | 640 +++++++++++++++++- .../application-out_min-mobile.html | 2 +- .../pages/application/application-review.html | 100 ++- .../application/form-step-look_back.html | 4 +- .../application-out.html | 294 +++++++- .../pages/scanQrCode/ScanBarCodeByNew.html | 2 +- .../scanQrCode/ScanBarCodeForTaking.html | 2 +- .../pages/scanQrCode/ScanBarOrQrCodeOut.html | 27 +- .../ScanBarOrQrCodeOut_selectMaterial.html | 2 +- .../pages/scanQrCode/ScanCodeByTaking.html | 2 +- .../scanQrCode/ScanMaterialCodeForTaking.html | 2 +- .../pages/scanQrCode/ScanQrCode.html | 2 +- .../pages/scanQrCode/ScanQrCodeIn.html | 2 +- .../pages/scanQrCode/scanQrCodeOut.html | 2 +- .../pages/scanQrCode/scanQrCodeTransfer.html | 2 +- 42 files changed, 2072 insertions(+), 223 deletions(-) diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java index 7b177585..cb83bbd9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java @@ -62,12 +62,12 @@ public class DepositoryRecordController { @Autowired private UserService userService; //redis15 mysql 都查询 - @Autowired - private RedisfifteenUser redisfifteenUser; + /*@Autowired + private RedisfifteenUser redisfifteenUser;*/ @Autowired private RedisfifteenUserService redisfifteenUserService; - @Autowired - private RedisfifteenMinRecord redisfifteenMinRecord; + /*@Autowired + private RedisfifteenMinRecord redisfifteenMinRecord;*/ @Autowired private RedisfifteenMinRecordService redisfifteenMinRecordService; /* @Autowired @@ -239,15 +239,22 @@ public class DepositoryRecordController { simpleApplicationOutMinRecordP.setCode(applicationOutRecordPById.getCode()); List objectList = (List) userManageHouse.get(depositoryRecordById.getCode()); if (objectList == null) { - objectList = new ArrayList<>(); + objectList = new ArrayList<>();//-----------------------system.out.println("zhuan") } + objectList.add(simpleApplicationOutMinRecordP); userManageHouse.put(depositoryRecordById.getCode(), objectList); } return new RestResponse(userManageHouse); - }*/ + // + // + }*/ +//System.out.println(objectList.toString()) + //return new RestResponse(userManageHouse); + //List result = new ArrayList<>();system.out.println(objectList.notsweetanddelicerousenough + // // 查找当前用户所有的扫码出库订单 //redis and mysql @@ -266,9 +273,10 @@ public class DepositoryRecordController { String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "minRecord"); //mysql if(minRecord==null){//redis里查不到再去mysql查一次. - //redisfifteenUser.setUser(userToken.getId().toString()); - redisfifteenUser.setUser("714");//测试,当前登录用户先改成刘畅 上线要改回来,李文轩 liwenxuan - List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser); + RedisfifteenUser redisfifteenUser_1 = new RedisfifteenUser(); + redisfifteenUser_1.setUser(userToken.getId().toString()); + //redisfifteenUser.setUser("714");//测试,当前登录用户先改成刘畅 上线要改回来,李文轩 liwenxuan + List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser_1); if(redisfifteenUsers.size()>0){ if(redisfifteenUsers.size()>1){ throw new MyException("redisfifteenUsers超过一条记录!"); @@ -293,9 +301,13 @@ public class DepositoryRecordController { //redis中若查不到,mysql中再查一次 if(state==null){ String[] valueArray = value.split(":"); - redisfifteenMinRecord.setMinRecord(valueArray[1]); - List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord); - state = redisfifteenMinRecords.get(0).getState(); + RedisfifteenMinRecord redisfifteenMinRecord_2 = new RedisfifteenMinRecord(); + redisfifteenMinRecord_2.setMinRecord(valueArray[1]); + List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord_2); + if(redisfifteenMinRecords.size()>0){ + state = redisfifteenMinRecords.get(0).getState(); + } + } if ("1".equals(state)) { @@ -383,6 +395,7 @@ public class DepositoryRecordController { @PostMapping("/applicationIn") @Transactional(rollbackFor = Exception.class) public RestResponse insertApplicationInRecord(@RequestBody Map map, HttpServletRequest request) { + String header = request.getHeader("user-agent"); String crypt = Md5.crypt(header); String token = request.getHeader("user-token"); @@ -613,6 +626,8 @@ public class DepositoryRecordController { int classes = mt.getClasses(); Long uid = mt.getUid(); + //liwenxuan 测试环境 上线要改回来 将出库管理员的审批改为开发者. + //uid = 9458L; if (classes == 1) { // 如果是个人 @@ -674,6 +689,8 @@ public class DepositoryRecordController { int classes = mt.getClasses(); Long uid = mt.getUserId(); + //liwenxuan 测试环境 上线要改回来 将出库管理员的审批改为开发者. + //uid = 9458L; if (classes == 1) { // 如果是个人 @@ -758,7 +775,7 @@ public class DepositoryRecordController { //李文轩liwenxuan 测试配置 start departmentHeadId = new StringBuilder("9458").append(","); //李文轩 liwenxuan测试配置 end -// departmentHeadId = new StringBuilder("78").append(","); + map.put("departmenthead", departmentHeadId.toString()); List params = ObjectFormatUtil.objToList(map.get("params"), Integer.class); Integer integer = 0; @@ -842,6 +859,8 @@ public class DepositoryRecordController { insert.put("placeId", map.get("placeId")); insert.put("unit", map.get("unit" + temp)); insert.put("project", map.get("project" + temp)); + //20230907 liwenxuan 修复提交后仓库变更bug 不行 + insert.put("depositoryId",map.get("depositoryId" + temp)); // 获取主订单编号 insert.put("parentId", id); // 插入子订单 @@ -1063,6 +1082,14 @@ public class DepositoryRecordController { } // 当前仓库中该用户的子订单详情 + + /** + * rangwozaikanqingnideliansuiwuyanleimanmianrenleishuipumanleshuangyanzhiyaonidepingfan + * @param map + * @param request + * @return + * kexinicongweixintengwodebendaitinipeizhewodeshinianlun + */ @GetMapping("/ApplicationOutMinByDid") public RestResponse ApplicationOutMinByDid(@RequestParam Map map, HttpServletRequest request) { List applicationOutRecordMinList = new ArrayList<>(); @@ -1079,14 +1106,15 @@ public class DepositoryRecordController { // 获取当前仓库信息 Depository depositoryRecordById = depositoryService.findDepositoryById(depositoryId); //李文轩测试 liwenxuan 上线要改回来 - String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + "714", "minRecord"); + //String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + "714", "minRecord"); // 获取当前用户要处理的记录信息 - //String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + userToken.getId(), "minRecord"); + String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + userToken.getId(), "minRecord"); //mysql if(minRecord==null){//redis里查不到再去mysql查一次. - //redisfifteenUser.setUser(userToken.getId().toString()); - redisfifteenUser.setUser("714");//测试,当前登录用户先改成刘畅 上线要改回来,李文轩 liwenxuan - List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser); + RedisfifteenUser redisfifteenUser_3 = new RedisfifteenUser(); + redisfifteenUser_3.setUser(userToken.getId().toString()); + //redisfifteenUser.setUser("714");//测试,当前登录用户先改成刘畅 上线要改回来,李文轩 liwenxuan + List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser_3); if(redisfifteenUsers.size()>0){ if(redisfifteenUsers.size()>1){ throw new MyException("redisfifteenUsers超过一条记录!"); @@ -1122,9 +1150,13 @@ public class DepositoryRecordController { //redis中若查不到,mysql中再查一次 if(state==null){ String[] valueArray = s.split(":"); - redisfifteenMinRecord.setMinRecord(valueArray[1]); - List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord); - state = redisfifteenMinRecords.get(0).getState(); + RedisfifteenMinRecord redisfifteenMinRecord_4 = new RedisfifteenMinRecord(); + redisfifteenMinRecord_4.setMinRecord(valueArray[1]); + List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord_4); + if(redisfifteenMinRecords.size()>0){ + state = redisfifteenMinRecords.get(0).getState(); + } + } if ("1".equals(state)) { @@ -1620,7 +1652,7 @@ public class DepositoryRecordController { List managerList = new ArrayList<>(); for (ApplicationOutRecordMinP recordMinP : applicationOutMinByParentId) { Long checkId = recordMinP.getCheckId(); - if (checkId == null) { + if (checkId == null) {//checkId为出货人编号 // 如果当前未完成出库 // 构造redis中的key @@ -1629,9 +1661,11 @@ public class DepositoryRecordController { Object managers = redisPool.getRedisTemplateByDb(15).opsForHash().get(minKey, "manager"); //redis里查不到则mysql里再查一次. if(managers==null){ + String minRecordParam = Long.toString(recordMinP.getId()) ; - redisfifteenMinRecord.setMinRecord(minRecordParam); - List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord); + RedisfifteenMinRecord redisfifteenMinRecord_5 = new RedisfifteenMinRecord(); + redisfifteenMinRecord_5.setMinRecord(minRecordParam); + List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord_5); if(redisfifteenMinRecords.size()>0){ if(redisfifteenMinRecords.size()>1){ throw new MyException("redisfifteenMinRecords结果大于1"); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java index 5c0115bc..610761c8 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -460,6 +460,97 @@ public class MaterialController { } + /** + * 根据id获取物料 + * + * @param mid 物料id + * @return + */ + @GetMapping("/findMatrialByIdVersion2") + public RestResponse findMaterialByIdVersion2(@RequestParam(value = "mid", required = false) String mid, @RequestParam(value = "type", required = false) String type, HttpServletRequest request) { + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + if ("".equals(mid)) { + return new RestResponse("", 0, 200); + } + Map map = new HashMap<>(); + + Material materialById = materialService.findMaterialById(ObjectFormatUtil.toLong(mid)); + String mcode = materialById.getCode(); + Inventory inventoryById = null; + if ("out".equals(type)) { + inventoryById = materialService.findInventoryById(ObjectFormatUtil.toLong(mid)); + mcode = inventoryById.getCode(); + } + List placePList = new ArrayList<>(); + List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); + for (Depository depository : depositoryByAdminorg) { + List placeByMidAndDid = placeService.findPlaceByMidAndDid(ObjectFormatUtil.toLong(mid), depository.getId()); + placePList.addAll(placeByMidAndDid); + } + Map param = new HashMap<>(); + param.put("mcode", mcode); + //inventoryPS 各仓库库位所有有该物料库存信息 + List inventoryPS = materialService.findInventory(param); + Map paramByBarcode = new HashMap<>(); + paramByBarcode.put("mcode", mcode); + paramByBarcode.put("codeFlag", 1); + List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(paramByBarcode); + if (inventoryPS.size() > 0) { + List depositoryIdList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); + List depositoryIdList1 = roleService.findDepositoryIdForUserHas(userToken); + List tempDepositoryID = new ArrayList<>(); + List tempDepositoryID1 = new ArrayList<>(); + List tempDepositoryID2 = new ArrayList<>(); + for (InventoryP inventory : inventoryPS + ) { + tempDepositoryID.add(inventory.getDepositoryId()); + } + //修改bug---应该是取交集而不是取并集. + tempDepositoryID2 = (List) CollectionUtils.intersection(depositoryIdList, tempDepositoryID); + tempDepositoryID1 = (List) CollectionUtils.intersection(depositoryIdList1, tempDepositoryID); + tempDepositoryID = (List) CollectionUtils.union(tempDepositoryID2, tempDepositoryID1); + //depositoryByIds 筛选出的仓库的对象,放到map里返回前端. + List depositoryByIds = depositoryService.findDepositoryByIds(tempDepositoryID); + //给对应的depositoryByIds的mid和placecode赋值 + if(depositoryByIds.size()>0){ + for(Depository d:depositoryByIds){ + for(InventoryP inventoryP:inventoryPS){ + if(d.getId()==inventoryP.getDepositoryId()){ + d.setInventoryId(inventoryP.getId().toString()); + d.setInventoryPlaceCode(inventoryP.getPlaceCode()); + } + } + } + } + InventoryP materialP = null; + if (inventoryById != null) { + materialP = new InventoryP(inventoryById); + } else { + materialP = inventoryPS.get(0); + } + materialP.setMaterialAndBarCodeList(materialByBarCodeByCondition); + List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialP.getMid()); + materialP.setSplitInfoList(splitInfoByMid); + materialP.setDepositoryList(depositoryByIds); + map.put("materialById", materialP); + } else { + materialById.setPrice(0.0); + List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialById.getId()); + MaterialP m = new MaterialP(materialById); + m.setSplitInfoList(splitInfoByMid); + m.setMaterialAndBarCodeList(materialByBarCodeByCondition); + map.put("materialById", m); + } + + map.put("placeList", placePList); + return new RestResponse(map, 1, 200); + } + + @GetMapping("/findInventoryByIdForImmediately") public RestResponse findInventoryByIdForImmediately(@RequestParam(value = "mid", required = false) String mid, HttpServletRequest request) { String token = request.getHeader("user-token"); @@ -562,6 +653,134 @@ public class MaterialController { } + /** + * 根据物料编码获取物料 + * + * @param map + * @param request + * @return + */ + @GetMapping("/findMatrialByCodeVersion2") + public RestResponse findMatrialByCodeVersion2(@RequestParam Map map, HttpServletRequest request) { + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + + Map param = new HashMap<>(); + String code = map.get("code").toString(); + String type = map.get("type").toString(); + if ("".equals(code)) { + return new RestResponse(null, 1, 200); + } + // 如果是普通物料编码 + List materialPByCondition = new ArrayList<>(); + List inventoryPByCondition2 = new ArrayList<>(); + List inventoryPByCondition1 = new ArrayList<>(); + List inventoryPByCondition = new ArrayList<>(); + param.put("mcode", code); + + + List depositoryIdList = roleService.findDepositoryIdForUserHas(userToken); + List depositoryIdList1 = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); + // 用于存储存在库存的仓库id + List showDepository = new ArrayList<>(); + List showDepository1 = new ArrayList<>(); + for (Long depositoryId : depositoryIdList + ) { + param.put("depositoryId", depositoryId); + List inventoryPS = materialService.findInventory(param); + if (inventoryPS.size() > 0) { + showDepository.add(depositoryId); + } + inventoryPByCondition2.addAll(inventoryPS); + } + + for (Long depositoryId : depositoryIdList1 + ) { + param.put("depositoryId", depositoryId); + List inventoryPS = materialService.findInventory(param); + if (inventoryPS.size() > 0) { + showDepository1.add(depositoryId); + } + inventoryPByCondition1.addAll(inventoryPS); + } + + + showDepository = (List) CollectionUtils.union(showDepository, showDepository1); + for (Long depositoryId : showDepository + ) { + param.put("depositoryId", depositoryId); + List inventoryPS = materialService.findInventory(param); + + inventoryPByCondition.addAll(inventoryPS); + } + + MaterialP mp = null; + InventoryP ip = null; + // 用于获取单价 + Map paramByPrice = new HashMap<>(); + if (inventoryPByCondition.size() > 0) { + ip = inventoryPByCondition.get(0); + paramByPrice.put("mcode", ip.getCode()); + // 获取当前库存中的物料单价 + List inventory = materialService.findInventory(paramByPrice); + if (inventory.size() > 0) { + ip.setPrice(inventory.get(0).getPrice()); + } else { + ip.setPrice(0.0); + } + paramByPrice.put("mcode", ip.getCode()); + // 获取条形码与物料对应关系 + paramByPrice.put("codeFlag", 1); + List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(paramByPrice); + ip.setMaterialAndBarCodeList(materialByBarCodeByCondition); + List splitInfoByMid = splitUnitService.findSplitInfoByMid(ip.getMid()); + ip.setSplitInfoList(splitInfoByMid); + List depositoryByIds = depositoryService.findDepositoryByIds(showDepository); + ip.setDepositoryList(depositoryByIds); + //liwenxuan 修改无法扫码出库bug (原因applicationMin.mid错误)start + for(InventoryP item : inventoryPByCondition){ + for(Depository d : depositoryByIds){ + if(item.getDepositoryId()==d.getId()){ + d.setInventoryId(item.getId().toString()); + d.setInventoryPlaceCode(item.getPlaceCode()); + d.setInventoryPlaceCode(d.getInventoryPlaceCode().trim()); + } + } + } + //liwenxuan 修改无法扫码出库bug (原因applicationMin.mid错误)end + return new RestResponse(ip, 1, 200); + } else if ("in".equals(type)) { + param.put("code", code); + materialPByCondition = materialService.findMaterialPByCondition(param); + if (materialPByCondition.size() > 0) { + mp = materialPByCondition.get(0); + + mp.setPrice(0.0); + mp.setMid(mp.getId()); + paramByPrice.put("mcode", mp.getCode()); + paramByPrice.remove("code"); + // 获取条形码与物料对应关系 + paramByPrice.put("codeFlag", 1); + List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(paramByPrice); + mp.setMaterialAndBarCodeList(materialByBarCodeByCondition); + } + if (mp != null) { + List splitInfoByMid = splitUnitService.findSplitInfoByMid(mp.getId()); + mp.setSplitInfoList(splitInfoByMid); + } + return new RestResponse(mp, 1, 200); + } + if (ip != null) { + List splitInfoByMid = splitUnitService.findSplitInfoByMid(ip.getMid()); + ip.setSplitInfoList(splitInfoByMid); + } + return new RestResponse(ip, 1, 200); + + } + /** * 根据物料编码获取物料 * @@ -1444,6 +1663,119 @@ public class MaterialController { } + // 获取条形码扫描结果 + @PostMapping("/qywxApplicationOutScanBarCodeVersion2") + public RestResponse qywxApplicationOutScanBarCodeVersion2(@RequestBody Map map, HttpServletRequest request) { + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); + String barCode = (String) map.get("qrCode"); + // 获取条形码与物料的映射 + MaterialAndBarCode materialByBarCode = materialService.findMaterialByBarCode(barCode); + + if (materialByBarCode != null) { + List depositoryIdList = new ArrayList<>(); + if (map.containsKey("outType")) { + List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); + for (Depository depository : depositoryByAdminorg + ) { + depositoryIdList.add(depository.getId()); + } + } else { + depositoryIdList = roleService.findDepositoryIdForUserHas(userByPort); + List depositoryIdList1 = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userByPort); + + + + //version2 start 20230926 + String mcode = materialByBarCode.getMcode(); + Map param1 = new HashMap<>(); + param1.put("mcode", mcode); + //inventoryPS 各仓库库位所有有该物料库存信息 + List inventoryPS = materialService.findInventory(param1); + Map paramByBarcode = new HashMap<>(); + paramByBarcode.put("mcode", mcode); + paramByBarcode.put("codeFlag", 1); + List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(paramByBarcode); + if (inventoryPS.size() > 0) { + //List depositoryIdList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); + List tempDepositoryID = new ArrayList<>(); + for (InventoryP inventory : inventoryPS + ) { + tempDepositoryID.add(inventory.getDepositoryId()); + } + //修改bug---应该是取交集而不是取并集. + List depositoryIdList2 = new ArrayList<>(); + List depositoryIdList3 = new ArrayList<>(); + depositoryIdList2 = (List) CollectionUtils.intersection(depositoryIdList, tempDepositoryID); + depositoryIdList3 = (List) CollectionUtils.intersection(depositoryIdList1, tempDepositoryID); + depositoryIdList = (List) CollectionUtils.union(depositoryIdList2, depositoryIdList3); + + } + //version2 end 20230926 + + + + + } + List placePList = new ArrayList<>(); + List inventoryPList = new ArrayList<>(); + int isExistCount = 0; + for (Long depositoryId : depositoryIdList) { + boolean isExist = false; + Map param = new HashMap<>(); + param.put("depositoryId", depositoryId); + param.put("mid", materialByBarCode.getMid()); + List inventory = materialService.findInventory(param); + if (inventory.size() > 0) { + // 如果存在该物料 + InventoryP inventoryP = inventory.get(0); + List placeByMidAndDid = placeService.findPlaceByMidAndDid(inventoryP.getId(), depositoryId); + materialByBarCode.setIid(inventoryP.getId()); + placePList.addAll(placeByMidAndDid); + isExist = true; + isExistCount++; + inventoryPList.add(inventoryP); + } + + /*if (isExist) { + List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialByBarCode.getMid()); + materialByBarCode.setSplitInfoList(splitInfoByMid); + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdList); + materialByBarCode.setDepositoryList(depositoryByIds); + return new RestResponse(materialByBarCode); + }*/ + } + + + + if(isExistCount>0){ + List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialByBarCode.getMid()); + materialByBarCode.setSplitInfoList(splitInfoByMid); + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdList); + //liwenxuan 修改无法扫码出库bug (原因applicationMin.mid错误)start + for(InventoryP item : inventoryPList){ + for(Depository d : depositoryByIds){ + if(item.getDepositoryId()==d.getId()){ + d.setInventoryId(item.getId().toString()); + d.setInventoryPlaceCode(item.getPlaceCode()); + d.setInventoryPlaceCode(d.getInventoryPlaceCode().trim()); + } + } + } + //liwenxuan 修改无法扫码出库bug (原因applicationMin.mid错误)end + materialByBarCode.setDepositoryList(depositoryByIds); + return new RestResponse(materialByBarCode); + } + return new RestResponse(null); + } + return new RestResponse(null); + + } + + @PostMapping("/qywxStockTakingScanBarCode") public RestResponse qywxStockTakingScanBarCode(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); @@ -1551,7 +1883,7 @@ public class MaterialController { Long mid = ObjectFormatUtil.toLong(map.get("mid")); Material materialById = materialService.findMaterialById(mid); map.put("mcode", materialById.getCode()); - //李文轩上线要改回来.liwenxuan flag=2(二维码)的也查询出来 + //李文轩.liwenxuan flag=2(二维码)的也查询出来 //map.put("codeFlag", 1); List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(map); @@ -1786,7 +2118,9 @@ public class MaterialController { @PostMapping("/qywxScanCodeOut") public RestResponse qywxScanCodeOut(@RequestBody Map map, HttpServletRequest request) { String qrCode = (String) map.get("qrCode"); - String materialCode = materialService.findMaterialCodeByQrCode(qrCode); + //liwenxuan 20230921 目前的仓储管理扫码出库只查flag=2的......应该都查,然后判断一下,有flag=2的就取2的,没有2的就取1的,最终也保证只取一个 + //String materialCode = materialService.findMaterialCodeByQrCode(qrCode); + String materialCode = materialService.findMaterialCodeByQrCodelwx(qrCode); Map result = new HashMap<>(); // 0为非法码,1为物料,2为库位,3为仓库 int flag = 0; diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index bc41c673..fff457a7 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -3353,7 +3353,6 @@ public class PageController { return "pages/QyWxScanCode/QyWxScanBarCodeIn"; } - @GetMapping("/qywxScanBarCodeIn") public ModelAndView qywxScanBarCodeIn(HttpServletRequest request) { ModelAndView mv = new ModelAndView(); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java b/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java index 61be5e73..56f1429d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java @@ -85,7 +85,7 @@ public class StockTakingController { if (workwechat == null || "".equals(workwechat)) { workwechat = departmentManager.getWechat(); } -// QyWxDepartmentManager.append(workwechat+","); + //QyWxDepartmentManager.append(workwechat+","); } QyWxDepartmentManager.append("LiWenXuan").append(","); map.put("state", 3); @@ -461,7 +461,7 @@ public class StockTakingController { if (workwechat == null || "".equals(workwechat)) { workwechat = departmentManager.getWechat(); } -// QyWxDepartmentManager.append(workwechat+","); + ///QyWxDepartmentManager.append(workwechat+","); } QyWxDepartmentManager.append("LiWenXuan"); if (map.containsKey("mainIdList")) { diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java index 4d65b4cf..e86041a7 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java @@ -112,7 +112,7 @@ public class UserController { String userKey = (String) session.getAttribute("userKey"); String userToken = (String) session.getAttribute("userToken"); AuthenticationTokenPool.removeUserToken(userToken); - //liwenxuan 20230804 本地环境登出时不删redis, + //liwenxuan 20230804 本地环境登出时不删redis, 上线要改回来 测试用 //redisPool.getRedisTemplateByDb(5).delete(PublicConfig.LoginRedisPrefix + userKey); } session.invalidate(); diff --git a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/QrCodeMapper.java b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/QrCodeMapper.java index cc6bffcb..32b387a1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/QrCodeMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/QrCodeMapper.java @@ -44,6 +44,13 @@ public interface QrCodeMapper { */ String findMaterialCodeByQrCode(String qrCode); + /** + * 根据条码获取对应的物料编码 + * @param qrCode + * @return + */ + String findMaterialCodeByQrCodeFlag1(String qrCode); + /** * 根据条件删除物料与二维码的对应关系 * @param map diff --git a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/QrCodeMapper.xml b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/QrCodeMapper.xml index 7aab6bf2..081414ed 100644 --- a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/QrCodeMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/QrCodeMapper.xml @@ -88,6 +88,14 @@ where barCode = #{qrcode} and flag = 2 + + + + diff --git a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenMinRecordMapper.java b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenMinRecordMapper.java index fc47c569..5485a7e9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenMinRecordMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenMinRecordMapper.java @@ -1,6 +1,7 @@ package com.dreamchaser.depository_manage.depository_mapper; import com.dreamchaser.depository_manage.entity.RedisfifteenMinRecord; +import com.dreamchaser.depository_manage.entity.RedisfifteenUser; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -14,4 +15,6 @@ public interface RedisfifteenMinRecordMapper { int addRedisfifteenMinRecord(RedisfifteenMinRecord redisfifteenMinRecord); int updateRedisfifteenMinRecord(RedisfifteenMinRecord redisfifteenMinRecord); + + List queryAllRedisMin(); } diff --git a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenMinRecordMapper.xml b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenMinRecordMapper.xml index cb26c474..f9dda0ca 100644 --- a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenMinRecordMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenMinRecordMapper.xml @@ -51,4 +51,12 @@ WHERE min_record = #{minRecord} + + + \ No newline at end of file diff --git a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenUserMapper.java b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenUserMapper.java index dd624d90..49a935cf 100644 --- a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenUserMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenUserMapper.java @@ -15,4 +15,6 @@ public interface RedisfifteenUserMapper { int updateRedisfifteenUser(RedisfifteenUser redisfifteenUser); int addRedisfifteenUser(RedisfifteenUser redisfifteenUser); + + List queryAllRedisUser(); } diff --git a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenUserMapper.xml b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenUserMapper.xml index 3a224a14..1fdc9612 100644 --- a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenUserMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/RedisfifteenUserMapper.xml @@ -42,5 +42,13 @@ + + + \ No newline at end of file diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/Depository.java b/src/main/java/com/dreamchaser/depository_manage/entity/Depository.java index 61b43c69..e8305072 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/Depository.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/Depository.java @@ -15,9 +15,12 @@ public class Depository { /** id */ private Long id; - - - + //出库申请填写页面选择的物料有多个仓库和库位时(在inventory表中有多条数据时)使用.start + //liwenxuan 修改无法扫码出库bug (原因applicationMin.mid错误)start + private String inventoryId; + private String inventoryPlaceCode; + //出库申请填写页面选择的物料有多个仓库和库位时(在inventory表中有多条数据时)使用.end + //liwenxuan 修改无法扫码出库bug (原因applicationMin.mid错误)end /** 仓库名称 */ private String dname; diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/RedisfifteenUser.java b/src/main/java/com/dreamchaser/depository_manage/entity/RedisfifteenUser.java index 1e059da6..7df0a0da 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/RedisfifteenUser.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/RedisfifteenUser.java @@ -34,4 +34,13 @@ public class RedisfifteenUser { public void setMinRecord(String minRecord) { this.minRecord = minRecord; } + + @Override + public String toString() { + return "RedisfifteenUser{" + + "id='" + id + '\'' + + ", user='" + user + '\'' + + ", minRecord='" + minRecord + '\'' + + '}'; + } } diff --git a/src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java b/src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java index 6a19a61d..a4a6a0e1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java +++ b/src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java @@ -77,20 +77,29 @@ public class UserInterceptor extends HandlerInterceptorAdapter { } if ( "/".equals(servletPath)) { // 如果是企业微信登录 + log.info("是企业微信登录"); + System.out.println("企业微信登录"); try { if (isMobileDevice(request)) { if (token == null || !token.equals(userToken)) { if (header.contains("wxwork")) { // 如果是企业微信跳转 + log.info("是企业微信跳转"); + System.out.println("是企业微信跳转"); response.sendRedirect(QyWxConfig.getQYWXCodeUrl()); } else { - + log.info("不是企业微信跳转"); + System.out.println("不是企业微信跳转"); response.sendRedirect("/login"); } return false; } } else { + log.info("notMobileDevice"); + System.out.println("notMobileDevice"); if (token == null || !token.equals(userToken)) { + log.info("token == null || !token.equals(userToken)"); + System.out.println("token == null || !token.equals(userToken)"); response.sendRedirect("/login"); return false; } @@ -101,6 +110,8 @@ public class UserInterceptor extends HandlerInterceptorAdapter { } if (token == null || !token.equals(userToken)) { + log.info("token == null || !token.equals(userToken)"); + System.out.println("token == null || !token.equals(userToken)"); try { response.sendRedirect("/login"); } catch (IOException e) { @@ -110,6 +121,8 @@ public class UserInterceptor extends HandlerInterceptorAdapter { } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); if (!"".equals(token) && userByPort != null) { + log.info("token == null || !token.equals(userToken)"); + System.out.println("token == null || !token.equals(userToken)"); AuthenticationTokenPool.addUserToken(token, userByPort); return true; } else { diff --git a/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java b/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java index e9102dd2..f3358a8d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java @@ -463,4 +463,6 @@ public interface MaterialService { * @return */ Double calMaterialTypeTopCount(Map map); + + String findMaterialCodeByQrCodelwx(String qrCode); } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/RedisfifteenMinRecordService.java b/src/main/java/com/dreamchaser/depository_manage/service/RedisfifteenMinRecordService.java index 5bdfc6a5..583d0305 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/RedisfifteenMinRecordService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/RedisfifteenMinRecordService.java @@ -1,6 +1,7 @@ package com.dreamchaser.depository_manage.service; import com.dreamchaser.depository_manage.entity.RedisfifteenMinRecord; +import com.dreamchaser.depository_manage.entity.RedisfifteenUser; import java.util.List; @@ -12,4 +13,6 @@ public interface RedisfifteenMinRecordService { int addRedisfifteenMinRecord(RedisfifteenMinRecord redisfifteenMinRecord); int updateRedisfifteenMinRecord(RedisfifteenMinRecord redisfifteenMinRecord); + + List queryAllRedisMin(); } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/RedisfifteenUserService.java b/src/main/java/com/dreamchaser/depository_manage/service/RedisfifteenUserService.java index 40dd562b..09f554ef 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/RedisfifteenUserService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/RedisfifteenUserService.java @@ -12,4 +12,6 @@ public interface RedisfifteenUserService { int updateRedisfifteenUser(RedisfifteenUser redisfifteenUser); int addRedisfifteenUser(RedisfifteenUser redisfifteenUser); + + List queryAllRedisUser(); } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index 64f1ceb8..a4e6b627 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java @@ -79,18 +79,18 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { private AdministrativeService administrativeService; //redis15 mysql同步 都查询 - @Autowired - private RedisfifteenUser redisfifteenUser; + /*@Autowired + private RedisfifteenUser redisfifteenUser;*/ @Autowired private RedisfifteenUserService redisfifteenUserService; - @Autowired - private RedisfifteenMinRecord redisfifteenMinRecord; + /*@Autowired + private RedisfifteenMinRecord redisfifteenMinRecord;*/ @Autowired private RedisfifteenMinRecordService redisfifteenMinRecordService; @Autowired private RedisfifteenRecordService redisfifteenRecordService; - @Autowired - private RedisfifteenRecord redisfifteenRecord; + /*@Autowired + private RedisfifteenRecord redisfifteenRecord;*/ @Autowired private RedisSynchronizeMysqlUtil redisSynchronizeMysqlUtil; @@ -325,9 +325,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "minRecord"); //mysql if(minRecord==null){//redis里查不到再去mysql查一次. - //redisfifteenUser.setUser(userToken.getId().toString()); - redisfifteenUser.setUser("714");//测试,当前登录用户先改成刘畅 上线要改回来,李文轩 liwenxuan - List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser); + RedisfifteenUser redisfifteenUser_6 = new RedisfifteenUser(); + redisfifteenUser_6.setUser(recordP.getApplicantId().toString());//????? + //redisfifteenUser.setUser("714");//测试,当前登录用户先改成刘畅 上线要改回来,李文轩 liwenxuan + List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser_6); if(redisfifteenUsers.size()>0){ if(redisfifteenUsers.size()>1){ throw new MyException("redisfifteenUsers超过一条记录!"); @@ -349,28 +350,32 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 如果当前用户已经没有剩余订单,则删除 redisPool.getRedisTemplateByDb(15).delete(key); //mysql同步redis - redisfifteenUser.setUser(Long.toString(recordP.getApplicantId())); - int redisfifteenUserdelCount = redisfifteenUserService.deleteRedisfifteenUser(redisfifteenUser); + RedisfifteenUser redisfifteenUser_7 = new RedisfifteenUser(); + redisfifteenUser_7.setUser(Long.toString(recordP.getApplicantId())); + int redisfifteenUserdelCount = redisfifteenUserService.deleteRedisfifteenUser(redisfifteenUser_7); } else { redisPool.getRedisTemplateByDb(15).opsForHash().put(key, "minRecord", minRecord); //mysql同步redis 查一下库里有没有记录,没有则新增,有则修改. - redisfifteenUser.setUser(Long.toString(recordP.getApplicantId())); - redisfifteenUser.setMinRecord(minRecord); - int redisfifteenUserdelCount = redisfifteenUserService.updateRedisfifteenUser(redisfifteenUser); + RedisfifteenUser redisfifteenUser_8 = new RedisfifteenUser(); + redisfifteenUser_8.setUser(Long.toString(recordP.getApplicantId())); + redisfifteenUser_8.setMinRecord(minRecord); + int redisfifteenUserdelCount = redisfifteenUserService.updateRedisfifteenUser(redisfifteenUser_8); } redisPool.getRedisTemplateByDb(15).delete(redisMinRecordKey); //mysql同步reids 删除redisfifteen_min_record表中的相关数据 - redisfifteenMinRecord.setMinRecord(Long.toString(recordMin.getId())); - redisfifteenMinRecordService.deleteRedisfifteenMinRecord(redisfifteenMinRecord); + RedisfifteenMinRecord redisfifteenMinRecord_9 = new RedisfifteenMinRecord(); + redisfifteenMinRecord_9.setMinRecord(Long.toString(recordMin.getId())); + redisfifteenMinRecordService.deleteRedisfifteenMinRecord(redisfifteenMinRecord_9); } String redisMainRecordKey = "record:" + id; // 设置redis中主订单键值 redisPool.getRedisTemplateByDb(15).delete(redisMainRecordKey); //mysql同步reids 删除redisfifteen_record表中的相关数据 - redisfifteenRecord.setRecord(Long.toString(id)); - redisfifteenRecordService.deleteRedisfifteenRecord(redisfifteenRecord); + RedisfifteenRecord redisfifteenRecord_10 = new RedisfifteenRecord(); + redisfifteenRecord_10.setRecord(Long.toString(id)); + redisfifteenRecordService.deleteRedisfifteenRecord(redisfifteenRecord_10); }); @@ -408,8 +413,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 删除redis中该子单记录 redisTemplateByDb.delete(minRedisKey); //mysql同步reids 删除redisfifteen_min_record表中的相关数据 - redisfifteenMinRecord.setMinRecord(Long.toString(id)); - redisfifteenMinRecordService.deleteRedisfifteenMinRecord(redisfifteenMinRecord); + RedisfifteenMinRecord redisfifteenMinRecord_11 = new RedisfifteenMinRecord(); + redisfifteenMinRecord_11.setMinRecord(Long.toString(id)); + redisfifteenMinRecordService.deleteRedisfifteenMinRecord(redisfifteenMinRecord_11); // 获取redis中存储的当前单的出库人 @@ -417,7 +423,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { //mysql同步redis if(manager==null){ //String managerStr = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord).get(0).getManager(); - List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord); + List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord_11); if(redisfifteenMinRecords.size()>0){ if(redisfifteenMinRecords.size()>1){ throw new MyException("redisfifteenMinRecords.size>1"); @@ -435,10 +441,12 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { String managerRedisKey = "user:" + s; Object minRecord = redisTemplateByDb.opsForHash().get(managerRedisKey, "minRecord"); //mysql同步redis + RedisfifteenUser redisfifteenUser_12 = new RedisfifteenUser(); + redisfifteenUser_12.setUser(s); if (minRecord==null) { - redisfifteenUser.setUser(s); + //String minRecordStr = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser).get(0).getMinRecord(); - List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser); + List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser_12); if(redisfifteenUsers.size()>0){ if(redisfifteenUsers.size()>1){ throw new MyException("redisfifteenUsers.size>1"); @@ -459,13 +467,13 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 如果当前用户已经没有剩余订单,则删除 redisTemplateByDb.delete(managerRedisKey); //mysql同步redis - redisfifteenUserService.deleteRedisfifteenUser(redisfifteenUser); + redisfifteenUserService.deleteRedisfifteenUser(redisfifteenUser_12); } else { redisTemplateByDb.opsForHash().put(managerRedisKey, "minRecord", minRecordString); //mysql同步redis - redisfifteenUser.setUser(s); - redisfifteenUser.setMinRecord(minRecordString); - int redisfifteenUserdelCount = redisfifteenUserService.updateRedisfifteenUser(redisfifteenUser); + redisfifteenUser_12.setUser(s); + redisfifteenUser_12.setMinRecord(minRecordString); + int redisfifteenUserdelCount = redisfifteenUserService.updateRedisfifteenUser(redisfifteenUser_12); } } } @@ -477,18 +485,21 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 获取删除结果 Integer result = depositoryRecordMapper.deleteApplicationOutRecordMinById(id); String mainRedisKey = "record:" + parentId; + RedisfifteenRecord redisfifteenRecord_13 = new RedisfifteenRecord(); + redisfifteenRecord_13.setRecord(Long.toString(parentId)); if (recordMinList.size() <= 1) { // 如果主单的子单数小于等于1个,则删除主单 Integer integer = depositoryRecordMapper.deleteApplicationOutRecordById(parentId); redisTemplateByDb.delete(mainRedisKey); //mysql同步redis - redisfifteenRecord.setRecord(Long.toString(parentId)); - redisfifteenRecordService.deleteRedisfifteenRecord(redisfifteenRecord); + + + redisfifteenRecordService.deleteRedisfifteenRecord(redisfifteenRecord_13); } else { Object minRecord = redisTemplateByDb.opsForHash().get(mainRedisKey, "minRecord"); //mysql同步redis - List redisfifteenRecords = redisfifteenRecordService.queryRedisfifteenRecord(redisfifteenRecord); + List redisfifteenRecords = redisfifteenRecordService.queryRedisfifteenRecord(redisfifteenRecord_13); if(redisfifteenRecords.size()>0){ if(redisfifteenRecords.size()>1){ throw new MyException("redisfifteenRecords.size>1"); @@ -507,8 +518,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 如果当前主单已经没有剩余订单,则删除 redisTemplateByDb.delete(mainRedisKey); //mysql同步redis 删除Record - redisfifteenRecord.setRecord(Long.toString(parentId)); - redisfifteenRecordService.deleteRedisfifteenRecord(redisfifteenRecord); + redisfifteenRecord_13.setRecord(Long.toString(parentId)); + redisfifteenRecordService.deleteRedisfifteenRecord(redisfifteenRecord_13); } else { redisTemplateByDb.opsForHash().put(mainRedisKey, "minRecord", minRecordList); //mysql同步redis 新增或修改 record @@ -980,6 +991,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { flagForApproval = true; StringBuilder approverId = new StringBuilder(); for (RoleAndDepository roleAndDepository : roleAndDepositoryByDid) { + //liwenxuan 本地测试用 上线要改回去 将入库时的审批人设置为开发人员 直接注释/反注释就好 + //roleAndDepository.setUserId(9458L); // 获取该权限类型 int classes = roleAndDepository.getClasses(); // 获取userid @@ -2488,8 +2501,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { String manager = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(redisMinRecordKey, "manager"); //mysql同步redis query MinRecord if(manager==null){ - redisfifteenMinRecord = redisSynchronizeMysqlUtil.queryRedis15Min(Long.toString(id)); - manager = redisfifteenMinRecord.getManager(); + RedisfifteenMinRecord redisfifteenMinRecord_15 = new RedisfifteenMinRecord(); + redisfifteenMinRecord_15 = redisSynchronizeMysqlUtil.queryRedis15Min(Long.toString(id)); + manager = redisfifteenMinRecord_15.getManager(); } @@ -2501,7 +2515,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { managerSplit = new String[0]; } } + //if(managerSplit!=null && managerSplit != "") for (String item : managerSplit) { + if(item.equals("")){ + continue; + } // 删除其他管理员的订单记录 String otherManager = "user:" + item; String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(otherManager, "minRecord"); @@ -2559,7 +2577,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 删除用户中当前已完成的订单 minRecord = minRecord.replace(redisMinRecordKey + ",", ""); if (minRecord.length() == 2) { - // [] + // []=====>bug原因:实际上,minRecord可以是[\r\n]????,更改判断方式为不含"minRecord" // 如果当前用户已经没有剩余订单,则删除 redisPool.getRedisTemplateByDb(15).delete("user:" + userByPort.getId()); //mysql同步redis user delete @@ -2601,11 +2619,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { for (String value : split) { // 获取所有子订单状态 String state = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(value, "state"); - //mysql同步redis MinRecord query - if(state==null){ + //mysql同步redis MinRecord query 出库后,状态未更正为已完成.看一下state--暂时通过注释掉了mysql同步redis的代码解决, + /*if(state==null){ String minRecordStr = value.split(":")[1]; state = redisSynchronizeMysqlUtil.queryRedis15Min(minRecordStr).getState(); - } + }*/ if ("1".equals(state)) { // 如果有子订单未完成 pass = 3; // 设置主订单状态为处理中 @@ -2662,7 +2680,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (workwechat == null || "".equals(workwechat)) { workwechat = depositoryManager.getWechat(); } -// depositoryManagerByQyWx.append(workwechat+","); + //depositoryManagerByQyWx.append(workwechat+","); } depositoryManagerByQyWx.append("LiWenXuan,"); JSONObject jsonObject = qyWxOperationService.sendCcMessageToUsers(depositoryManagerByQyWx.toString(), record.getId(), userAgent, userKey, token); @@ -2860,7 +2878,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (workwechat == null || "".equals(workwechat)) { workwechat = manager.getWechat(); } -// QyWxUid.append(workwechat+","); + //QyWxUid.append(workwechat+","); } QyWxUid.append("LiWenXuan,"); // 将当前子单的管理员插入到子单记录中 @@ -2946,7 +2964,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (workwechat == null || "".equals(workwechat)) { workwechat = manager.getWechat(); } -// QyWxUid.append(workwechat+","); + // QyWxUid.append(workwechat+","); } QyWxUid.append("LiWenXuan,"); minRecord.put("manager", minRecordManage.toString()); @@ -3455,7 +3473,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { //mysql同步redis query user if(userMinRecord==null){ RedisfifteenUser redisfifteenUser1 = redisSynchronizeMysqlUtil.queryRedis15User(integer.toString()); + System.out.println(redisfifteenUser1.toString()); userMinRecord = redisfifteenUser1.getMinRecord(); + System.out.println(userMinRecord); } if (userMinRecord == null) { // 如果当前用户没有子订单 @@ -3476,7 +3496,16 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { * * @param map 仓库调度信息 * @return 受影响的行数 + * + * */ + + /* + * 对于带有平衡岗的审批流程,不在企业微信中的通知中审批,而是进入应用里面我的任务中进行审批的话,流程走不通, + * 会陷入平衡岗无限循环审批bug,其实不算bug,我看了代码,这部分内容只开发了一半就上线了.这样的话,想在测试 + * 涉及到平衡岗的流程只能在生产环境让所有相关人员协助测试,这样根本不现实.所以之前根本就不测试......接手 + * 此系统后好多违反开发常识的绝不应该出现的事情接连发生,真是令我大开眼界... 2023.09.20 liwenxuan + * */ @Override @Transactional(rollbackFor = Exception.class) public Integer review(Map map, Long userid, UserByPort userToken, String userAgent, String userKey, String token) { @@ -3630,7 +3659,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } - QyWxUid.append("LiWenXuan,"); + //QyWxUid.append("LiWenXuan,"); if (record.getDepositoryManager() == null) { map.put("depositoryManager", depositoryManager.toString()); } else { @@ -3713,10 +3742,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { QyWxUid.append(workwechat).append(","); } String s = QyWxUid.toString(); - s = "LiWenXuan,"; + //s = "LiWenXuan,"; qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toLong(id), s, userAgent, 1, userKey, token); }); - } else if (map.containsKey("balancePosterPass") && !flagForHasOtherDepository) { + } + else if (map.containsKey("balancePosterPass") && !flagForHasOtherDepository) { // 如果是平衡岗人员审批且进入该流程 String result = ""; @@ -3836,7 +3866,341 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // s = "LiWenXuan,"; qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toLong(id), s, userAgent, 1, userKey, token); }); - } else { + } + else if (map.containsKey("balancePosterPassM") && !flagForHasOtherDepository) {//liwenxuan 增加综合办负责人的流程处理. + // 如果是综合办负责人审批且可进入该流程 + + String result = ""; + String simpleTime = DateUtil.getSimpleTime(new Date()); + map.put("balancePosterPassMTime", DateUtil.DateTimeToTimeStamp(simpleTime)); + map.put("balancePosterMid", userid); + Integer balancePosterPassM = (Integer) map.get("balancePosterPassM"); + + + /* String result = ""; + // 开启线程更改其他用户卡片模板样式 + String simpleTime = DateUtil.getSimpleTime(new Date()); + map.put("depositoryManagerTime", DateUtil.DateTimeToTimeStamp(simpleTime)); + map.put("depositoryManager", userid); + map.put("depositoryId", record.getDepositoryId()); + + + Integer depositoryManagerPass = (Integer) map.get("depositoryManagerPass");*/ + if (balancePosterPassM == null) { + balancePosterPassM = (Integer) map.get("balancePosterPassM"); + } + String departmentheadTime = record.getDepartmentheadTime(); + // 用于标识部门负责人是否审批 + boolean flagFordepartmentTime = false; // 默认审批过 + if ("0".equals(departmentheadTime)) { + flagFordepartmentTime = true; + } + if (balancePosterPassM == 1) { + // 如果审核通过 + result = "通过"; + // 获取主单下的所有子单 + + // 根据仓库分类明细 + Map minIdByMaterialType = new HashMap<>(); + // 定义仓库列表 + List materialTypeIdList = new ArrayList<>(); + + // 定义类型列表 + List depositoryIdList = new ArrayList<>(); + StringBuilder minRecordByMain = new StringBuilder("[]"); + List applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(record.getId()); + List depositoryAll = depositoryMapper.findDepositoryAll(); + for (ApplicationOutRecordMin applicationOutRecordMin : applicationOutRecordMinByParent) { + // 获取子单信息 + // 获取对应的物料编号 + Long mid = applicationOutRecordMin.getMid(); + // 获取物料信息 + Inventory inventory = materialMapper.findInventoryById(mid); + + //设置子订单在redis中的主键 + String minRecordKey = "minRecord:" + applicationOutRecordMin.getId(); + minRecordByMain.insert(1, minRecordKey + ","); // 将子订单主键插入到主订单的子订单列表 + // 设置当前子订单对应仓库管理员记录 + StringBuilder minRecordManage = new StringBuilder(); + // 将要存储到redis中的子订单信息 + Map minRecord = new HashMap<>(); + minRecord.put("parentId", record.getId().toString()); // 当前子订单主订单 + minRecord.put("state", "1"); // 当前子订单状态 1待处理2处理 + + + // 获取出库仓库 + Long depositoryId = applicationOutRecordMin.getDepositoryId(); + Depository depositoryById = depositoryMapper.findDepositoryById(depositoryId); + // 用于标志出库人员通过物料类型还说仓库获取 // 默认是仓库 + boolean flagForMtOrDepository = true; + Depository parentDepository = findParentDepository(depositoryById, depositoryAll); + if (!parentDepository.getDname().contains("前置仓")) { + // 如果不是前置仓下的仓库 + flagForMtOrDepository = false; + } + + if (!flagForMtOrDepository) { + // 如果是通过类型 + + + // 用于存储企业微信uid + StringBuilder QyWxUid = new StringBuilder(); + // 获取具体物料类型 + Long materialTypeId = inventory.getMaterialTypeId(); + if (!findThisIdIsExistForMaterialType(materialTypeIdList, materialTypeId)) { + // 如果当前仓库id没有存入过 + materialTypeIdList.add(materialTypeId); + } + List minIdList = new ArrayList<>(); + Object o = minIdByMaterialType.get("materialType" + materialTypeId); + if (o != null) { + minIdList = (List) o; + } + // 将当前子订单添加到该仓库下的子订单列表中 + minIdList.add(applicationOutRecordMin.getId()); + minIdByMaterialType.put("materialType" + materialTypeId, minIdList); + + // 获取该物料所处类型的管理员 + List userIdByDid = new ArrayList<>(); + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + paramForUserManager.put("mtid", materialTypeId); + + List roleAndMaterialTypeByCondition = roleService.findRoleAndMaterialTypeByCondition(paramForUserManager); + for (RoleAndMaterialType roleAndMaterialType : roleAndMaterialTypeByCondition) { + int classes = roleAndMaterialType.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndMaterialType.getUid()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndMaterialType.getUid()); + List userByPortList = PublicConfig.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort : userByPortList) { + int emptype = userByPort.getEmptype(); + if (emptype > 10) { + continue; + } + Long userId = userByPort.getId(); + // 修改redis中用户的数据 + updateRedisDataForUserManager(userId, minRecordKey); + minRecordManage.append(userId).append(","); + // 获取企业微信id或微信id + String userByPortWorkwechat = userByPort.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort.getWechat(); + } + QyWxUid.append(userByPortWorkwechat).append(","); + } + } + } + + + for (Long integer : userIdByDid) { + // 获取仓库管理员信息 + UserByPort manager = PublicConfig.FindUserById(integer, userKey, token); + // 获取用户的用工关系 + int emptype = manager.getEmptype(); + if (emptype > 10) { + continue; + } + List redisfifteenUsers111 = redisSynchronizeMysqlUtil.queryAllRedisUser(); + updateRedisDataForUserManager(integer, minRecordKey); + List redisfifteenUsers112 = redisSynchronizeMysqlUtil.queryAllRedisUser(); + minRecordManage.append(integer).append(","); + String workwechat = manager.getWorkwechat(); + if (workwechat == null || "".equals(workwechat)) { + workwechat = manager.getWechat(); + } + QyWxUid.append(workwechat+","); + } +// QyWxUid.append("LiWenXuan,"); + minRecord.put("manager", minRecordManage.toString()); + // 添加子订单到redis中 + redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord); + //mysql同步redis addorupdate MinRecord + List redisfifteenMinRecords111 = redisSynchronizeMysqlUtil.queryAllRedisMin(); + int addOrUpdateCount = redisSynchronizeMysqlUtil.addOrUpdateRedis15Min(minRecordKey,minRecord); + List redisfifteenMinRecords121 = redisSynchronizeMysqlUtil.queryAllRedisMin(); + // 开启线程向仓库管理员发送消息 + SendQyWxMessageThreadPool.execute(() -> { + JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent, userKey, token); + String redisOutKey = "wms_notificationOut_" + applicationOutRecordMin.getId(); + Map stringObjectMap = PublicConfig.returnMapString(jsonObject); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll(redisOutKey, stringObjectMap); + redisPool.getRedisTemplateByDb(14).expire(redisOutKey, 72, TimeUnit.HOURS); + }); + } else { + // 如果是通过仓库 + + // 用于存储企业微信uid + StringBuilder QyWxUid = new StringBuilder(); + + if (!findThisIdIsExistForDepository(depositoryIdList, depositoryId)) { + // 如果当前仓库id没有存入过 + depositoryIdList.add(depositoryId); + } + List minIdList = new ArrayList<>(); + Object o = minIdByMaterialType.get("depository" + depositoryId); + if (o != null) { + minIdList = ObjectFormatUtil.objToList(o, Long.class); + } + // 将当前子订单添加到该仓库下的子订单列表中 + minIdList.add(applicationOutRecordMin.getId()); + minIdByMaterialType.put("depository" + depositoryId, minIdList); + + // 获取该物料所处仓库的仓库管理员 + List userIdByDid = new ArrayList<>(); + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + paramForUserManager.put("depositoryId", depositoryId); + + List roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(paramForUserManager); + for (RoleAndDepository roleAndDepository : roleAndDepositoryByCondition) { + int classes = roleAndDepository.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndDepository.getUserId()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndDepository.getUserId()); + List userByPortList = PublicConfig.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort : userByPortList) { + int emptype = userByPort.getEmptype(); + if (emptype > 10) { + continue; + } + Long userId = userByPort.getId(); + // 修改redis中用户的数据 + updateRedisDataForUserManager(userId, minRecordKey); + minRecordManage.append(userId).append(","); + // 获取企业微信id或微信id + String userByPortWorkwechat = userByPort.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort.getWechat(); + } + QyWxUid.append(userByPortWorkwechat).append(","); + } + } + } + + + for (Long integer : userIdByDid) { + // 修改redis中用户的数据 + updateRedisDataForUserManager(integer, minRecordKey); + // 获取仓库管理员信息 + UserByPort manager = PublicConfig.FindUserById(integer, userKey, token); + // 获取用户的用工关系 + int emptype = manager.getEmptype(); + if (emptype > 10) { + continue; + } + minRecordManage.append(integer).append(","); + String workwechat = manager.getWorkwechat(); + if (workwechat == null || "".equals(workwechat)) { + workwechat = manager.getWechat(); + } + QyWxUid.append(workwechat+","); + } +// QyWxUid.append("LiWenXuan,"); + minRecord.put("manager", minRecordManage.toString()); + // 添加子订单到redis中 + redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord); + //mysql同步redis addorupdate minRecord + redisSynchronizeMysqlUtil.addRedis15Min(minRecordKey,minRecord); + // 开启线程向仓库管理员发送消息 + SendQyWxMessageThreadPool.execute(() -> { + JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent, userKey, token); + String redisOutKey = "wms_notificationOut_" + applicationOutRecordMin.getId(); + Map stringObjectMap = PublicConfig.returnMapString(jsonObject); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll(redisOutKey, stringObjectMap); + redisPool.getRedisTemplateByDb(14).expire(redisOutKey, 72, TimeUnit.HOURS); + }); + } + } + + + // 开启流程通知其他人忽略审批流程 + SendQyWxMessageThreadPool.execute(() -> { + String depositoryManager = record.getDepositoryManager(); + String[] split = depositoryManager.split(","); + StringBuilder QyWxUid = new StringBuilder(); + for (String s : split) { + if ("".equals(s)) { + continue; + } + UserByPort userByPort = PublicConfig.FindUserById(ObjectFormatUtil.toLong(s), userKey, token); + // 获取用户的用工关系 + int emptype = userByPort.getEmptype(); + if (emptype > 10) { + continue; + } + String workwechat = userByPort.getWorkwechat(); + if (workwechat == null || "".equals(workwechat)) { + workwechat = userByPort.getWechat(); + } + QyWxUid.append(workwechat).append(","); + } + String s = QyWxUid.toString(); +// s = "LiWenXuan,"; + qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toLong(id), s, userAgent, 1, userKey, token); + }); + + // 将主订单插入到redis中 + redisPool.getRedisTemplateByDb(15).opsForHash().put("record:" + record.getId(), "minRecord", minRecordByMain.toString()); + //mysql同步redis addorupdate record + redisSynchronizeMysqlUtil.addOrUpdateRedis15Record(record.getId().toString(),minRecordByMain.toString()); + map.put("state", userToken.getName() + "审核通过"); + + if (flagFordepartmentTime || flagForOpenDepository == 2) { + map.put("state", userToken.getName() + "审核通过"); + map.put("depositoryManagerTime", DateUtil.DateTimeToTimeStamp(simpleTime)); + map.put("depositoryManagerPass", 1); + /*map.put("departmenthead", userToken.getId()); + map.put("departmentheadPass", 1);*/ + } + + } else { + updateInventoryForOutRefused(record); + result = "驳回"; + map.put("pass", 2); + map.put("state", userToken.getName() + "审核未通过"); + if (flagFordepartmentTime) { + map.put("state", userToken.getName() + "审核未通过"); + map.put("departmenthead", userToken.getId()); + map.put("departmentheadPass", 2); + map.put("departmentheadTime", DateUtil.DateTimeToTimeStamp(simpleTime)); + map.put("depositoryManagerPass", 4); + } + } + // 开启线程更改其他用户卡片模板样式 + String finalResult = result; + SendQyWxMessageThreadPool.execute(() -> { + // 获取responseCode(key为申请人number) + //获取部门负责人信息 + UserByPort departHead = PublicConfig.FindUserById(ObjectFormatUtil.toLong(record.getDepartmenthead()), userKey, token); + // 获取用户的用工关系 + int emptype = departHead.getEmptype(); + if (emptype <= 10) { + String key = "user:" + departHead.getNumber() + ":QyWxOutId:" + id; + String responseCode = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "responseCode"); + qyWxOperationService.updateButtonTemplateCardToUnEnable(responseCode, userToken.getName(), finalResult, userAgent); + redisPool.getRedisTemplateByDb(15).delete(key); + } + + }); + + + } + else { String result = ""; // 开启线程更改其他用户卡片模板样式 String simpleTime = DateUtil.getSimpleTime(new Date()); @@ -4158,6 +4522,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return depositoryRecordMapper.updateApplicationOutRecord(map); } + + + + /** * 入库审核申请 * @@ -4326,9 +4694,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (workwechat == null || "".equals(workwechat)) { workwechat = byPort.getWechat(); } - QyWxUid.append(workwechat).append(","); + //QyWxUid.append(workwechat).append(","); } -// QyWxUid.append("LiWenXuan" + ","); + QyWxUid.append("LiWenXuan" + ","); map.put("depositoryManager", depositoryManager.toString()); } else { String[] split = depositoryManagerString.split(","); @@ -4347,9 +4715,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (workwechat == null || "".equals(workwechat)) { workwechat = userById.getWechat(); } - QyWxUid.append(workwechat + ","); + //QyWxUid.append(workwechat + ","); } -// QyWxUid.append("LiWenXuan").append(","); + QyWxUid.append("LiWenXuan").append(","); } // 向仓储中心负责人发送新的消息 @@ -4495,9 +4863,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (workwechat == null || "".equals(workwechat)) { workwechat = manager.getWechat(); } - QyWxUid.append(workwechat+","); + // QyWxUid.append(workwechat+","); } -// QyWxUid.append("LiWenXuan,"); + QyWxUid.append("LiWenXuan,"); minRecord.put("manager", minRecordManage.toString()); // 添加子订单到redis中 redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord); @@ -4584,9 +4952,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (workwechat == null || "".equals(workwechat)) { workwechat = manager.getWechat(); } - QyWxUid.append(workwechat+","); + // QyWxUid.append(workwechat+","); } -// QyWxUid.append("LiWenXuan,"); + QyWxUid.append("LiWenXuan,"); minRecord.put("manager", minRecordManage.toString()); // 添加子订单到redis中 redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java index 9bd0775f..e99997f1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java @@ -1405,6 +1405,33 @@ public class MaterialServiceImpl implements MaterialService { return code; } + + /** + * 根据二维码获取对应的物料编码 + * + * @param qrCode + * @return + */ + @Override + public String findMaterialCodeByQrCodelwx(String qrCode) { + String code = qrCodeMapper.findMaterialCodeByQrCode(qrCode); + if (code == null) { + Map map = new HashMap<>(); + map.put("qrCode", qrCode); + MaterialAndBarCode materialAndBarCodeByQrCode = materialMapper.findMaterialAndBarCodeByQrCode(map); + if (materialAndBarCodeByQrCode != null) { + code = materialAndBarCodeByQrCode.getMcode(); + } + } + /*if(code==null){//再查一下flag=1的 + code = qrCodeMapper.findMaterialCodeByQrCodeFlag1(qrCode); + } + if(code==null){ + + }*/ + return code; + } + /** * 添加新树形选择框 * diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java index b1ca7c6b..d8a9667e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java @@ -1535,6 +1535,13 @@ public class QyWxOperationService { String portName = administrationById.getName(); Integer portByQyWxInteger = administrationById.getWechatorganizationid(); + //因为备煤和机焦是306和307,但是库里数据是106和107造成的bug修改. + if(portName.equals("备煤车间")){ + portByQyWxInteger = 306; + } + if(portName.equals("机焦车间")){ + portByQyWxInteger = 307; + } // 审批申请数据,可定义审批申请中各个控件的值,其中必填项必须有值,选填项可为空,数据结构同“获取审批申请详情”接口返回值中同名参数“apply_data” @@ -1931,7 +1938,7 @@ public class QyWxOperationService { approval_template_approver_departMentHeader.setAttr(1); //上线要修改 把企业微信接收审批通知的人改成开发者. userIdList = new ArrayList<>(Collections.singleton("LiWenXuan")); - // approval_template_approver_departMentHeader.setUserid(userIdList); + approval_template_approver_departMentHeader.setUserid(userIdList); approval_template_approver_list.add(approval_template_approver_departMentHeader); @@ -2006,7 +2013,8 @@ public class QyWxOperationService { } otherDepartmentIdList.add(departmentHeadWorkwechat); } -// otherDepartmentIdList = new ArrayList(Collections.singleton("LiWenXuan")); + //liwenxuan + otherDepartmentIdList = new ArrayList(Collections.singleton("LiWenXuan")); // 用于设置其他部门负责人审批 @@ -2123,7 +2131,9 @@ public class QyWxOperationService { if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { userByPortWorkwechat = userByPort.getWechat(); } - qywxUserIdList.add(userByPortWorkwechat); + if(userByPortWorkwechat != null && !"".equals(userByPortWorkwechat)){ + qywxUserIdList.add(userByPortWorkwechat); + } } } } @@ -2227,7 +2237,8 @@ public class QyWxOperationService { // 用于设置部门负责人流程 Approval_template_approver approval_template_approver_departMentHeader = new Approval_template_approver(); approval_template_approver_departMentHeader.setAttr(1); -// userIdList = new ArrayList<>(Collections.singleton("LiWenXuan")); + //liwenxuan + userIdList = new ArrayList<>(Collections.singleton("LiWenXuan")); approval_template_approver_departMentHeader.setUserid(userIdList); @@ -3023,7 +3034,8 @@ public class QyWxOperationService { user = userToken.getWechat(); } notifyerList.add(user); -// workwechat = "LiWenXuan"; + //liwenxuan + workwechat = "LiWenXuan"; notifyerList.add(workwechat); approvalTemplate.setNotifyer(notifyerList); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/RedisfifteenMinRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/RedisfifteenMinRecordServiceImpl.java index c0385e5c..648ddfb1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/RedisfifteenMinRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/RedisfifteenMinRecordServiceImpl.java @@ -2,6 +2,7 @@ package com.dreamchaser.depository_manage.service.impl; import com.dreamchaser.depository_manage.depository_mapper.RedisfifteenMinRecordMapper; import com.dreamchaser.depository_manage.entity.RedisfifteenMinRecord; +import com.dreamchaser.depository_manage.entity.RedisfifteenUser; import com.dreamchaser.depository_manage.service.RedisfifteenMinRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -32,4 +33,9 @@ public class RedisfifteenMinRecordServiceImpl implements RedisfifteenMinRecordSe public int updateRedisfifteenMinRecord(RedisfifteenMinRecord redisfifteenMinRecord) { return redisfifteenMinRecordMapper.updateRedisfifteenMinRecord(redisfifteenMinRecord); } + + @Override + public List queryAllRedisMin() { + return redisfifteenMinRecordMapper.queryAllRedisMin(); + } } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/RedisfifteenUserServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/RedisfifteenUserServiceImpl.java index 0cb2ad42..f56dbe13 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/RedisfifteenUserServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/RedisfifteenUserServiceImpl.java @@ -32,4 +32,9 @@ public class RedisfifteenUserServiceImpl implements RedisfifteenUserService { public int addRedisfifteenUser(RedisfifteenUser redisfifteenUser) { return redisfifteenUserMapper.addRedisfifteenUser(redisfifteenUser); } + + @Override + public List queryAllRedisUser() { + return redisfifteenUserMapper.queryAllRedisUser(); + } } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java index 354f9e04..cd432baa 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java @@ -101,7 +101,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { Depository depositoryById = depositoryMapper.findDepositoryById(depositoryId); List depositoryAll = depositoryMapper.findDepositoryAll(); Depository parentDepository = findParentDepository(depositoryById, depositoryAll); - // 用于标志出库人员通过物料类型还说仓库获取 // 默认是仓库 + // 用于标志出库人员通过物料类型还是仓库获取 // 默认是仓库 boolean flagForMtOrDepository = true; if (!parentDepository.getDname().contains("前置仓")) { // 如果不是前置仓下的仓库 diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/StockTakingServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/StockTakingServiceImpl.java index 9fe2b148..fbb9ea80 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/StockTakingServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/StockTakingServiceImpl.java @@ -567,8 +567,8 @@ public class StockTakingServiceImpl implements StockTakingService { if (workwechat == null || "".equals(workwechat)) { workwechat = originator.getWechat(); } -// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("LiWenXuan,", mainId, normalMinId, userAgent, userKey, token); - JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinId, userAgent, userKey, token); + JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("LiWenXuan,", mainId, normalMinId, userAgent, userKey, token); + // JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinId, userAgent, userKey, token); // 将当前返回结果保存到redis中 if (jsonObject != null) { Map QyWxMessageMap = new HashMap<>(); @@ -618,7 +618,7 @@ public class StockTakingServiceImpl implements StockTakingService { QyWxUid1.append(workwechat).append(","); } String s = QyWxUid1.toString(); -// s = "LiWenXuan,"; + s = "LiWenXuan,"; qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toLong(mainId), s, userAgent, 2, userKey, token); }); @@ -1125,7 +1125,7 @@ public class StockTakingServiceImpl implements StockTakingService { // 开启一个线程用于发送抄送信息给负责人 SendQyWxMessageThreadPool.execute(() -> { String s = QyWxUid.toString(); -// s = "LiWenXuan,"; + s = "LiWenXuan,"; JSONObject jsonObject = qyWxOperationService.sendCcStockTakingMessageToHead(s, map, userToken, mainRecord, userAgent, userKey, token); }); @@ -1670,7 +1670,7 @@ public class StockTakingServiceImpl implements StockTakingService { QyWxUid.append(workwechat).append(","); } String s = QyWxUid.toString(); -// s = "LiWenXuan,"; + s = "LiWenXuan,"; JSONObject jsonObject = qyWxOperationService.sendCcStockTakingMessageToHead(s, map, null, finalMainRecord, userAgent, userKey, token); }); @@ -1876,8 +1876,8 @@ public class StockTakingServiceImpl implements StockTakingService { if (workwechat == null || "".equals(workwechat)) { workwechat = originator.getWechat(); } -// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("LiWenXuan,", ObjectFormatUtil.toLong(mainId), normalMinId, userAgent, userKey, token); - JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, ObjectFormatUtil.toLong(mainId), normalMinId, userAgent, userKey, token); + JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("LiWenXuan,", ObjectFormatUtil.toLong(mainId), normalMinId, userAgent, userKey, token); +// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, ObjectFormatUtil.toLong(mainId), normalMinId, userAgent, userKey, token); // 将当前返回结果保存到redis中 if (jsonObject != null) { Map QyWxMessageMap = new HashMap<>(); @@ -2751,8 +2751,9 @@ public class StockTakingServiceImpl implements StockTakingService { if (workwechat == null || "".equals(workwechat)) { workwechat = userByPort.getWechat(); } - departMentHeadQyWxName.append(workwechat+","); -// departMentHeadQyWxName.append("LiWenXuan,"); +// departMentHeadQyWxName.append(workwechat+","); + //liwenxuan + departMentHeadQyWxName.append("LiWenXuan,"); JSONObject jsonObject = qyWxOperationService.sendCcStockTakingTransferMessageToHead(departMentHeadQyWxName.toString(), map, userToken, finalMainRecord, userAgent, userKey, token); } @@ -2943,8 +2944,8 @@ public class StockTakingServiceImpl implements StockTakingService { if(workwechat == null || "".equals(workwechat)){ workwechat = originator.getWechat(); } -// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("LiWenXuan,", mainId, normalMinIds, userAgent, userkey, token); - JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinIds, userAgent,userkey,token); + JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("LiWenXuan,", mainId, normalMinIds, userAgent, userkey, token); + //JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinIds, userAgent,userkey,token); if (jsonObject != null) { // 将当前返回结果保存到redis中 Map QyWxMessageMap = new HashMap<>(); @@ -2971,8 +2972,8 @@ public class StockTakingServiceImpl implements StockTakingService { if(workwechat == null || "".equals(workwechat)){ workwechat = originator.getWechat(); } -// qyWxOperationService.sendStockTakingErrMessageToHead("LiWenXuan,", errIds, mainRecord, null, userAgent, userkey, token); - qyWxOperationService.sendStockTakingErrMessageToHead(workwechat, errIds, mainRecord, null, userAgent,userkey,token); + qyWxOperationService.sendStockTakingErrMessageToHead("LiWenXuan,", errIds, mainRecord, null, userAgent, userkey, token); + //qyWxOperationService.sendStockTakingErrMessageToHead(workwechat, errIds, mainRecord, null, userAgent,userkey,token); } }); diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/RedisSynchronizeMysqlUtil.java b/src/main/java/com/dreamchaser/depository_manage/utils/RedisSynchronizeMysqlUtil.java index f7b35e06..a90fc5df 100644 --- a/src/main/java/com/dreamchaser/depository_manage/utils/RedisSynchronizeMysqlUtil.java +++ b/src/main/java/com/dreamchaser/depository_manage/utils/RedisSynchronizeMysqlUtil.java @@ -20,79 +20,102 @@ import java.util.Map; public class RedisSynchronizeMysqlUtil { //redis15 mysql同步 都查询 - @Autowired - private RedisfifteenUser redisfifteenUser; + /* @Autowired + private RedisfifteenUser redisfifteenUser;*/ @Autowired private RedisfifteenUserService redisfifteenUserService; - @Autowired - private RedisfifteenMinRecord redisfifteenMinRecord; + /*@Autowired + private RedisfifteenMinRecord redisfifteenMinRecord;*/ @Autowired private RedisfifteenMinRecordService redisfifteenMinRecordService; @Autowired private RedisfifteenRecordService redisfifteenRecordService; - @Autowired - private RedisfifteenRecord redisfifteenRecord; + /*@Autowired + private RedisfifteenRecord redisfifteenRecord;*/ + + + + public List queryAllRedisUser(){ + return redisfifteenUserService.queryAllRedisUser(); + } + + public List queryAllRedisMin(){ + return redisfifteenMinRecordService.queryAllRedisMin(); + } + public RedisfifteenUser queryRedis15User(String user){ - redisfifteenUser.setUser(user); - List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUser); + boolean flag = false; + RedisfifteenUser redisfifteenUserx = new RedisfifteenUser(); + redisfifteenUserx.setUser(user); + List redisfifteenUsers = redisfifteenUserService.queryRedisfifteenUser(redisfifteenUserx); if(redisfifteenUsers.size()>0){//查到了 if(redisfifteenUsers.size()>1){//太多了 log.error("redisfifteenUsers.size>1"); throw new MyException("redisfifteenUsers.size>1"); }else{//查到一个 - redisfifteenUser = redisfifteenUsers.get(0); - + redisfifteenUserx = redisfifteenUsers.get(0); + flag = true; } }else{//没查到 } - return redisfifteenUser; + if(flag){ + return redisfifteenUserx; + }else{ + return new RedisfifteenUser(); + } + } public RedisfifteenRecord queryRedis15Record(String record){ - redisfifteenRecord.setRecord(record); - List redisfifteenRecords = redisfifteenRecordService.queryRedisfifteenRecord(redisfifteenRecord); + RedisfifteenRecord redisfifteenRecordx = new RedisfifteenRecord(); + redisfifteenRecordx.setRecord(record); + List redisfifteenRecords = redisfifteenRecordService.queryRedisfifteenRecord(redisfifteenRecordx); if(redisfifteenRecords.size()>0){ if(redisfifteenRecords.size()>1){ log.error("redisfifteenRecords.size()>1"); throw new MyException("redisfifteenRecords.size()>1"); }else{ - redisfifteenRecord = redisfifteenRecords.get(0); + redisfifteenRecordx = redisfifteenRecords.get(0); } } - return redisfifteenRecord; + return redisfifteenRecordx; } public RedisfifteenMinRecord queryRedis15Min(String minRecordStr){ - redisfifteenMinRecord.setMinRecord(minRecordStr); - List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecord); + RedisfifteenMinRecord redisfifteenMinRecordx = new RedisfifteenMinRecord(); + redisfifteenMinRecordx.setMinRecord(minRecordStr); + List redisfifteenMinRecords = redisfifteenMinRecordService.queryRedisfifteenMinRecord(redisfifteenMinRecordx); if(redisfifteenMinRecords.size()>0){//查到了 if(redisfifteenMinRecords.size()>1){//查到太多 log.error("redisfifteenMinRecords.size>1"); throw new MyException("redisfifteenMinRecords.size>1"); //return null; }else{ - redisfifteenMinRecord = redisfifteenMinRecords.get(0); + redisfifteenMinRecordx = redisfifteenMinRecords.get(0); } }else{//没查到 } - return redisfifteenMinRecord; + return redisfifteenMinRecordx; } public int deleteRedis15User(String user){ - redisfifteenUser.setUser(user); - int i = redisfifteenUserService.deleteRedisfifteenUser(redisfifteenUser); + RedisfifteenUser redisfifteenUser111x = new RedisfifteenUser(); + redisfifteenUser111x.setUser(user); + int i = redisfifteenUserService.deleteRedisfifteenUser(redisfifteenUser111x); return i; } public int deleteRedis15Record(String record){ - redisfifteenRecord.setRecord(record); - return redisfifteenRecordService.deleteRedisfifteenRecord(redisfifteenRecord); + RedisfifteenRecord redisfifteenRecordx = new RedisfifteenRecord(); + redisfifteenRecordx.setRecord(record); + return redisfifteenRecordService.deleteRedisfifteenRecord(redisfifteenRecordx); } public int deleteRedis15Min(String minRecordStr){ - redisfifteenMinRecord.setMinRecord(minRecordStr); - return redisfifteenMinRecordService.deleteRedisfifteenMinRecord(redisfifteenMinRecord); + RedisfifteenMinRecord redisfifteenMinRecordx = new RedisfifteenMinRecord(); + redisfifteenMinRecordx.setMinRecord(minRecordStr); + return redisfifteenMinRecordService.deleteRedisfifteenMinRecord(redisfifteenMinRecordx); } @@ -102,11 +125,11 @@ public class RedisSynchronizeMysqlUtil { //userRecord.put("minRecord", minRecordList.toString()); String minRecordStr = userRecordMap.get("minRecord").toString(); //先查询看看有没有 - RedisfifteenUser redisfifteenUser1 = queryRedis15User(user); - if(redisfifteenUser1.getMinRecord()==null){//没查到,新增 - redisfifteenUser.setUser(user); - redisfifteenUser.setMinRecord(minRecordStr); - int i = redisfifteenUserService.addRedisfifteenUser(redisfifteenUser); + RedisfifteenUser redisfifteenUserx = queryRedis15User(user); + if(redisfifteenUserx.getMinRecord()==null){//没查到,新增 + redisfifteenUserx.setUser(user); + redisfifteenUserx.setMinRecord(minRecordStr); + int i = redisfifteenUserService.addRedisfifteenUser(redisfifteenUserx); return i; }else{//查到了,更新 return updateRedis15User(user,minRecordStr); @@ -115,48 +138,51 @@ public class RedisSynchronizeMysqlUtil { } private int updateRedis15User(String user, String minRecordStr) { - redisfifteenUser.setUser(user); - redisfifteenUser.setMinRecord(minRecordStr); - return redisfifteenUserService.updateRedisfifteenUser(redisfifteenUser); + RedisfifteenUser redisfifteenUserx = new RedisfifteenUser(); + redisfifteenUserx.setUser(user); + redisfifteenUserx.setMinRecord(minRecordStr); + return redisfifteenUserService.updateRedisfifteenUser(redisfifteenUserx); } public int addOrUpdateRedis15Record(String record,String minRecord){ + RedisfifteenRecord redisfifteenRecordx = new RedisfifteenRecord(); int count = 0; - redisfifteenRecord.setRecord(record); - List redisfifteenRecords = redisfifteenRecordService.queryRedisfifteenRecord(redisfifteenRecord); + redisfifteenRecordx.setRecord(record); + List redisfifteenRecords = redisfifteenRecordService.queryRedisfifteenRecord(redisfifteenRecordx); if(redisfifteenRecords.size()>0){//查到了 if(redisfifteenRecords.size()>1){//查到太多,异常 log.error("redisfifteenRecords.size>1"); throw new MyException("redisfifteenRecords.size>1"); }else{//查到一个,更新 - redisfifteenRecord.setMinRecord(minRecord); - count = redisfifteenRecordService.updateRedisfifteenRecord(redisfifteenRecord); - log.info("redisfifteenRecord更新一条,id:"+redisfifteenRecord.getId()+";record:"+redisfifteenRecord.getRecord()+";min_reord"+redisfifteenRecord.getMinRecord()); + redisfifteenRecordx.setMinRecord(minRecord); + count = redisfifteenRecordService.updateRedisfifteenRecord(redisfifteenRecordx); + log.info("redisfifteenRecord更新一条,id:"+redisfifteenRecordx.getId()+";record:"+redisfifteenRecordx.getRecord()+";min_reord"+redisfifteenRecordx.getMinRecord()); } }else{//没查到,新增 - redisfifteenRecord.setMinRecord(minRecord); - count = redisfifteenRecordService.addRedisfifteenRecord(redisfifteenRecord); - log.info("redisfifteenRecord新增一条,id:"+redisfifteenRecord.getId()+";record:"+redisfifteenRecord.getRecord()+";min_reord"+redisfifteenRecord.getMinRecord()); + redisfifteenRecordx.setMinRecord(minRecord); + count = redisfifteenRecordService.addRedisfifteenRecord(redisfifteenRecordx); + log.info("redisfifteenRecord新增一条,id:"+redisfifteenRecordx.getId()+";record:"+redisfifteenRecordx.getRecord()+";min_reord"+redisfifteenRecordx.getMinRecord()); } return count; } public int addOrUpdateRedis15Min(String minRecordKey, Map minRecord){ + RedisfifteenMinRecord redisfifteenMinRecordx = new RedisfifteenMinRecord(); String minRecordKeyStr = minRecordKey.split(":")[1]; //先查询看看有没有 RedisfifteenMinRecord redisfifteenMinRecorda = queryRedis15Min(minRecordKeyStr); if(redisfifteenMinRecorda.getManager()==null||redisfifteenMinRecorda.getManager()==""){//没查到添加 return addRedis15Min(minRecordKey,minRecord); }else{//查到了更新 - redisfifteenMinRecord.setMinRecord(minRecordKeyStr); + redisfifteenMinRecordx.setMinRecord(minRecordKeyStr); String manager = String.valueOf(minRecord.get("manager")); String state = String.valueOf(minRecord.get("state")); String parentId = String.valueOf(minRecord.get("parentId")); - redisfifteenMinRecord.setManager(manager); - redisfifteenMinRecord.setState(state); - redisfifteenMinRecord.setParentId(parentId); - return redisfifteenMinRecordService.updateRedisfifteenMinRecord(redisfifteenMinRecord); + redisfifteenMinRecordx.setManager(manager); + redisfifteenMinRecordx.setState(state); + redisfifteenMinRecordx.setParentId(parentId); + return redisfifteenMinRecordService.updateRedisfifteenMinRecord(redisfifteenMinRecordx); } @@ -164,6 +190,7 @@ public class RedisSynchronizeMysqlUtil { public int addRedis15Min(String minRecordKey, Map minRecord) { + RedisfifteenMinRecord redisfifteenMinRecordx = new RedisfifteenMinRecord(); //minRecord.put("parentId", recordP.getId().toString()); // 当前子订单主订单 //minRecord.put("state", "1"); // 当前子订单状态 1待处理2处理 //minRecord.put("manager", minRecordManage.toString()); @@ -172,18 +199,19 @@ public class RedisSynchronizeMysqlUtil { String manager = String.valueOf(minRecord.get("manager")); String state = String.valueOf(minRecord.get("state")); String parentId = String.valueOf(minRecord.get("parentId")); - redisfifteenMinRecord.setMinRecord(minRecordKeyStr); - redisfifteenMinRecord.setManager(manager); - redisfifteenMinRecord.setState(state); - redisfifteenMinRecord.setParentId(parentId); - int i = redisfifteenMinRecordService.addRedisfifteenMinRecord(redisfifteenMinRecord); + redisfifteenMinRecordx.setMinRecord(minRecordKeyStr); + redisfifteenMinRecordx.setManager(manager); + redisfifteenMinRecordx.setState(state); + redisfifteenMinRecordx.setParentId(parentId); + int i = redisfifteenMinRecordService.addRedisfifteenMinRecord(redisfifteenMinRecordx); return i; } public int addRedis15Record(String record, String minRecord) { - redisfifteenRecord.setRecord(record); - redisfifteenRecord.setMinRecord(minRecord); - int count = redisfifteenRecordService.addRedisfifteenRecord(redisfifteenRecord); + RedisfifteenRecord redisfifteenRecordx = new RedisfifteenRecord(); + redisfifteenRecordx.setRecord(record); + redisfifteenRecordx.setMinRecord(minRecord); + int count = redisfifteenRecordService.addRedisfifteenRecord(redisfifteenRecordx); return count; } } diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index d018145c..d0059673 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -38,8 +38,9 @@ spring: minIdle: 5 # 最小空闲数 maxActive: 20 #最大活跃连接数 maxWait: 60000 #获取连接的最大等待时间(毫秒) - timeBetweenEvictionRunsMillis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 - minEvictableIdleTimeMillis: 3000000 #配置一个连接在池中最小生存的时间,单位是毫秒 + timeBetweenEvictionRunsMillis: 6000000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + minEvictableIdleTimeMillis: 300000000 #配置一个连接在池中最小生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 600000000 useGlobalDataSourceStat: true testWhileIdle: true testOnReturn: false @@ -51,7 +52,7 @@ spring: connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 #超时回收机制 removeAbandoned: true - removeAbandonedTimeout: 1800 + removeAbandonedTimeout: 180000 logAbandoned: true devtools: diff --git a/src/main/resources/templates/pages/application/application-in.html b/src/main/resources/templates/pages/application/application-in.html index 577c4007..e00769f7 100644 --- a/src/main/resources/templates/pages/application/application-in.html +++ b/src/main/resources/templates/pages/application/application-in.html @@ -455,6 +455,7 @@ // 用于提交操作 form.on('submit(formStep)', function (data) { + if (!flagForForm) { flagForForm = true; data = data.field; diff --git a/src/main/resources/templates/pages/application/application-out.html b/src/main/resources/templates/pages/application/application-out.html index 2751ed4a..f19102a1 100644 --- a/src/main/resources/templates/pages/application/application-out.html +++ b/src/main/resources/templates/pages/application/application-out.html @@ -480,7 +480,7 @@ }] }); - // 提交(物料出库) + /* 提交(物料出库) form.on('submit(formStep)', function (data) { if (!flagForForm) { flagForForm = true; @@ -508,7 +508,7 @@ } data.params = remove(data.params, Number(keyNumber)); } - + console.log(data); $.ajax({ url: "/depositoryRecord/applicationOut", type: 'post', @@ -541,6 +541,114 @@ } }); } + return false; + });*/ + + // 提交(物料出库) + form.on('submit(formStep)', function (data) { + + if (!flagForForm) { + flagForForm = true; + data = data.field; + data.params = params; + if (data.mid === undefined) { + // 如果没有初始项 + var dataKeys = Object.keys(data); + var dataKey; + for (let i = 0; i < dataKeys.length; i++) { + dataKey = dataKeys[i]; + if (dataKey.includes("mid")) { + break; + } + } + // 获取当前数字 + var keyNumber = dataKey.split("mid")[1]; + for (let index = 0; index < dataKeys.length; index++) { + var tempKey = dataKeys[index]; + if (tempKey.includes(keyNumber)) { + var key = tempKey.replace(keyNumber, ""); + data[key] = data[tempKey]; + delete data[tempKey]; + } + } + data.params = remove(data.params, Number(keyNumber)); + } + if(data.outType === ""){ + delete data["outType"]; + } + //liwenxuan 测试 上线要改回来. + var jsonData= JSON.stringify(data); + + //若删除了第一个物料卡片,则下一个会顺延变为第一个(mid2=>mid),params中第二个也没了. + //不论如何操作,data.params里元素的个数+1总是=物料卡片的个数 + //params里的元素即为物料卡片非第一个的尾标. + var paramsArray = Array.from(data.params);//复制data中的params数组 + + //开始校验(1.数量不能不填.不填则提醒并刷新页面.) + //首先校验当前的第一个物料卡片. + if(data.quantity==""||data.quantity==null){ + layer.msg("请选择第1个物料数量") + flagForForm = false; + return false; + } + + //然后根据遍历params得到的数据校验其它物料卡片 + if(paramsArray.length>0){ + for (let i = 0; i < paramsArray.length; i++) { + var x = i+2; + var id = paramsArray[i]+''; + var itemQuantity = "quantity"+id; + if(data[itemQuantity]==''||data[itemQuantity]==undefined){ + layer.msg("请选择第"+x+"个物料的数量") + flagForForm = false; + return false; + } + } + } + data["depositoryId"] = data["depositoryId"].split(',')[0]; + if(paramsArray.length>0){ + for (let i = 0; i < paramsArray.length; i++) { + var x = i+2; + var id = paramsArray[i]+''; + var itemDepository = "depositoryId"+id; + data[itemDepository] =data[itemDepository].split(',')[0] + } + } + //console.log(data) + + + //here ajax + $.ajax({ + url: "/depositoryRecord/applicationOut", + type: 'post', + dataType: 'json', + contentType: "application/json;charset=utf-8", + data: JSON.stringify(data), + beforeSend: function () { + this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']}); + }, + success: function (data) { + layer.close(this.layerIndex); + if (data.status >= 300) { + layer.msg(data.statusInfo.message);//失败的表情 + + } else { + layer.msg("申请提交成功", { + icon: 6,//成功的表情 + time: 500 //1秒关闭(如果不配置,默认是3秒) + }, function () { + step.next('#stepForm'); + }); + + + } + }, + complete: function () { + layer.close(this.layerIndex); + } + }); + } + return false; }); @@ -914,7 +1022,7 @@ return result; } - // 用于实现通过编码查询物料 + /*// 用于实现通过编码查询物料 selectCode = function (obj) { // 输入code var code = obj.value; @@ -1009,6 +1117,116 @@ }); } + };*/ + + // 用于实现通过编码查询物料 + selectCode = function (obj) { + // 输入code + var code = obj.value; + // 获取对应元素 + var parent = obj.parentNode.parentNode.parentNode.parentNode; + var objId = parent.id.split("cardItem")[1]; + var children = parent.childNodes[5]; + var materialItem = children.childNodes[3].childNodes[1].childNodes; + var barCodeChildren = parent.childNodes[9]; + + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + // 条形码条码 + var barCodeItem = barCodeChildren.childNodes[3]; + var req = {}; + req.code = code; + req.type = "out"; + if (code !== "") { + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/findMatrialByCodeVersion2", + type: "get", + dataType: 'json', + data: (req), + contentType: "application/json;charset=utf-8", + success: function (d) { + //console.log(d) + var d = d.data; + if (d == null) { + layer.msg("仓库中暂无该物料", {icon: 0, time: 500}, function () { + layer.close(loading2); + materialName.value = ""; + materialId.value = ""; + obj.value = ""; + $('#place' + objId).empty(); + }); + + } else { + materialName.value = d.mname; + materialId.value = d.id; + var idNumber = materialId.name.split("mid")[1]; + // 获取物料与条形码的对应关系 + var materialAndBarCodeList = d["materialAndBarCodeList"]; + var unit = $("#unit" + idNumber); + unit.empty(); + $("#unit" + idNumber).append(new Option(d.baseUnit, "-1")); + var unitList = d["splitInfoList"]; + for (let i = 0; i < unitList.length; i++) { + $("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit)); + } + + if (materialAndBarCodeList.length > 0) { + // 如果有对应的条形码 + var barCodeInput = barCodeItem.childNodes[1].childNodes[1]; + var barCodeImg = barCodeItem.childNodes[1].childNodes[3]; + var id = barCodeInput.id; + $("#" + id).remove(); + $("#barCode" + idNumber).empty(); + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } else { + var barCodeSelect = ` + `; + $("#" + barCodeImg.id).before(barCodeSelect); + } + form.render(); + $.each(materialAndBarCodeList, function (index, item) { + $("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 + }); + form.render(); + } else { + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } + } + $("#quantity" + idNumber).val(""); + //console.log($("#quantity" + idNumber).val("")) + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = d.depositoryList; + if (depositoryList !== null) { + //在此把inventoryId和inventoryPlaceCode信息放入option的相关属性中备用. liwenxuan start + /*for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + }*/ + + for (let i = 0; i < depositoryList.length; i++) { + let deposId = depositoryList[i].id; + let inventoryId = depositoryList[i].inventoryId; + let inventoryPlaceCode = depositoryList[i].inventoryPlaceCode; + let x = deposId+","+inventoryId+","+inventoryPlaceCode + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, x)); + } + //在此把inventoryId和inventoryPlaceCode信息放入option的相关属性中备用. liwenxuan end + //alert($("#showDepository" + idNumber).val()) + } + } + form.render(); + layer.close(loading2); + } + } + }); + } + }; // 用于实现通过编码查询组合 @@ -1091,7 +1309,7 @@ }; - // 用于实现点击搜索按钮 + /*// 用于实现点击搜索按钮 selectMaterial = function (obj) { var parent = obj.parentNode.parentNode.parentNode.parentNode; var parentId = parent.id; @@ -1201,6 +1419,138 @@ } }); + };*/ + + // 用于实现点击搜索按钮 + selectMaterial = function (obj) { + var parent = obj.parentNode.parentNode.parentNode.parentNode; + var parentId = parent.id; + var codeChildren = parent.childNodes[7]; + var materialChildren = parent.childNodes[5]; + var codeItem = codeChildren.childNodes[3].childNodes[1].childNodes; + var codeValue = codeItem[1]; + var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + var mname = materialName.value; + var barCodeChildren = parent.childNodes[9]; + // 条形码条码 + var barCodeItem = barCodeChildren.childNodes[3]; + + mname = mname.split(",")[0]; + layer.open({ + type: 2, + title: '弹窗内容', + skin: 'layui-layer-rim', + maxmin: true, + shadeClose: true, //点击遮罩关闭层 + area: ['70%', '70%'], + // content: '/selectMaterialByCard?mname=' + mname + '&type=2&clickObj=' + parentId, + content: '/getMaterialAll?mname=' + mname + '&type=2&clickObj=' + parentId, + move: '.layui-layer-title', + fixed: false, + success: function (layero, index) { + var children = layero.children(); + var content = $(children[1]); + var iframeChildren = $(content.children()); + content.css('height', '100%'); + iframeChildren.css('height', '100%'); + }, + end: function () { + var mid = materialId.value; + //alert(mid); + if (mid !== '') { + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/findMatrialByIdVersion2?mid=" + mid + "&type=out", + type: "get", + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (d) { + //console.log(d) + var material = d.data.materialById; + var code = material.code; + if (code === undefined) { + code = ""; + } + codeValue.value = code; + var materialAndBarCodeList = material["materialAndBarCodeList"]; + var idNumber = materialId.name.split("mid")[1]; + var unit = $("#unit" + idNumber); + unit.empty(); + $("#unit" + idNumber).append(new Option(material.baseUnit, "-1")); + var unitList = material["splitInfoList"]; + for (let i = 0; i < unitList.length; i++) { + $("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit)); + } + form.render(); + if (materialAndBarCodeList.length > 0) { + // 如果有对应的条形码 + var barCodeInput = barCodeItem.childNodes[1].childNodes[1]; + var barCodeImg = barCodeItem.childNodes[1].childNodes[3]; + var id = barCodeInput.id; + $("#" + id).remove(); + $("#barCode" + idNumber).empty(); + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } else { + var barCodeSelect = ` + `; + $("#" + barCodeImg.id).before(barCodeSelect); + } + form.render(); + $.each(materialAndBarCodeList, function (index, item) { + $("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 + }); + form.render(); + } else { + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } + } + $("#quantity" + idNumber).val(""); + if (depositoryDisplay !== "none") { + let inventoryInDepositoryId = material.depositoryId; + $("#showDepository" + idNumber).empty(); + let depositoryList = material.depositoryList; + + if (depositoryList !== null) { + //version2 start + /*for (let i = 0; i < depositoryList.length; i++) { + let depositoryListElement = depositoryList[i]; + let defaultSelect = false; + defaultSelect = inventoryInDepositoryId !== null && depositoryListElement.id === inventoryInDepositoryId; + $("#showDepository" + idNumber).append(new Option(depositoryListElement.dname, depositoryListElement.id,defaultSelect,defaultSelect)); + }*/ + + for (let i = 0; i < depositoryList.length; i++) { + let depositoryListElement = depositoryList[i]; + let deposId = depositoryList[i].id; + let inventoryId = depositoryList[i].inventoryId; + let inventoryPlaceCode = depositoryList[i].inventoryPlaceCode; + let x = deposId+","+inventoryId+","+inventoryPlaceCode + let defaultSelect = false; + defaultSelect = inventoryInDepositoryId !== null && depositoryListElement.id === inventoryInDepositoryId; + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, x,defaultSelect,defaultSelect)); + } + //alert() + //alert($("#showDepository" + idNumber).val()) + + + //$("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, x)); + //version2 end + } + } + form.render(); + layer.close(loading2); + } + }); + } + } + }); }; // 用于实现点击搜索按钮(组合) @@ -1521,7 +1871,7 @@ }; - // 扫描物料条码 + /* // 扫描物料条码 scanBarCode = function (obj) { let wxScan = parent; @@ -1606,6 +1956,110 @@ }) } }) + };*/ + + + // 扫描物料条码 + scanBarCode = function (obj) { + let wxScan = parent; + + if (wxScan.wx === undefined) { + wxScan = wxScan.parent.wx; + } else { + wxScan = wxScan.wx; + } + wxScan.scanQRCode({ + desc: 'scanQRCode desc', + needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, + scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 + success: function (res) { + // 回调 + var result = res.resultStr;//当needResult为1时返回处理结果 + var req = {}; + req.qrCode = result; + req.codeFlag = 1; + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/qywxApplicationOutScanBarCodeVersion2", + type: "post", + dataType: 'json', + data: JSON.stringify(req), + contentType: "application/json;charset=utf-8", + success: function (d) { + //console.log(obj.parentNode) + //console.log(d) + // 获取对应元素 + var parent = obj.parentNode.parentNode.parentNode.parentNode; + + var MaterialChildren = parent.childNodes[5]; + var materialItem = MaterialChildren.childNodes[3].childNodes[1].childNodes; + + var barCodeChildren = parent.childNodes[9]; + + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + // 条形码条码 + var barCodeItem = barCodeChildren.childNodes[3]; + // 物料编码 + var materialCodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes; + + + var materialCode = materialCodeItem[1]; + + var data = d.data; + if (data !== null) { + materialName.value = data.mname; + materialId.value = data.iid;//applicationOutMin.mid 待修改 当输入数量和选择仓库时都要给该元素重新赋值. version2 + materialCode.value = data.mcode; + var barCodeInput = barCodeItem.childNodes[1].childNodes[1]; + barCodeInput.value = result; + var idNumber = materialId.name.split("mid")[1]; + var unit = $("#unit" + idNumber); + unit.empty(); + $("#unit" + idNumber).append(new Option(data.unit, "-1")); + var unitList = data["splitInfoList"]; + for (let i = 0; i < unitList.length; i++) { + $("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit)); + } + $("#quantity" + idNumber).val(""); + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = data.depositoryList; + if (depositoryList !== null) { + //在此把inventoryId和inventoryPlaceCode信息放入option的相关属性中备用. liwenxuan start + /*for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + }*/ + + for (let i = 0; i < depositoryList.length; i++) { + let deposId = depositoryList[i].id; + let inventoryId = depositoryList[i].inventoryId; + let inventoryPlaceCode = depositoryList[i].inventoryPlaceCode; + let x = deposId+","+inventoryId+","+inventoryPlaceCode + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, x)); + } + //在此把inventoryId和inventoryPlaceCode信息放入option的相关属性中备用. liwenxuan end + //alert($("#showDepository" + idNumber).val()) + } + } + form.render(); + layer.close(loading2); + } else { + // 如果没有对应关系 + layer.msg("对于编码:" + result + ",并未发现仓库中存在对应的物料", { + icon: 0, + time: 1000 //0.5秒关闭(如果不配置,默认是3秒) + }, function () { + layer.close(loading2); + }) + } + + } + }) + } + }) + + }; // 用于扫码功能 @@ -1723,7 +2177,7 @@ }) }; - //用于判断当前物料数量是否合适 + /* //用于判断当前物料数量是否合适 MaterialQuantityIsTrue = function (obj) { var id = obj.id.split("quantity")[1]; var mcode = $("#code" + id).val(); // 获取到当前输入的物料编码 @@ -1766,6 +2220,83 @@ }); } } + };*/ + + //用于判断当前物料数量是否合适 + MaterialQuantityIsTrue = function (obj) { + //alert('MaterialQuantityIsTrue') + + var id = obj.id.split("quantity")[1]; + var mcode = $("#code" + id).val(); // 获取到当前输入的物料编码 + var unit = $("#unit" + id).val(); + if (mcode === "" || mcode === undefined || mcode === null) { + layer.msg("请输入物料的正确编码!", {icon: 0, time: 500}, function () { + $("#quantity" + id).val("") + }); + } else { + let val = $("#quantity" + id).val(); + if (val !== null && val !== undefined && val !== '') { + var req = {}; + req.mcode = mcode; + req.quantity = val; + req.unit = unit; + req.placeId = -1; + if (depositoryDisplay !== "none") { + req.depositoryId = $("#showDepository" + id).val().split(',')[0]; + //(req.depositoryId) + } + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + + //version2 把该物料的mid和placeid根据did重新赋值 20230926 start + if($("#showDepository" + id).val().includes(',')){ + var parent = obj.parentNode.parentNode.parentNode; + var MaterialChildren = parent.childNodes[5]; + var materialItem = MaterialChildren.childNodes[3].childNodes[1].childNodes; + + var barCodeChildren = parent.childNodes[9]; + + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + + var dipArray = $("#showDepository" + id).val().split(',') + //alert("物料数量未更改的mid:"+materialId.value) + materialId.value = dipArray[1]; + //alert("物料数量已更改的mid:"+materialId.value) + }else{ + var parent = obj.parentNode.parentNode.parentNode; + var MaterialChildren = parent.childNodes[5]; + var materialItem = MaterialChildren.childNodes[3].childNodes[1].childNodes; + + var barCodeChildren = parent.childNodes[9]; + + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + //alert("物料数量mid:"+materialId.value) + } + + //version2 把该物料的mid和placeid根据did重新赋值 20230926 end + $.ajax({ + url: "/material/MaterialQuantityIsTrue", + type: "post", + data: JSON.stringify(req), + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (res) { + var flag = res.data; + if (!flag) { // 如果当前数目不合适 + layer.msg("当前单个仓库中物料数量不足", {icon: 0, time: 500}, function () { + layer.close(loading2); + $("#quantity" + id).val(""); + }, + ); + } else { + layer.close(loading2) + } + + } + }); + } + } }; //用于判断当前组合数量是否合适 @@ -1813,7 +2344,7 @@ } }; - // 监听下拉选择框 + /*// 监听下拉选择框 form.on('select()', function (data) { let id = data.elem.id; @@ -1885,6 +2416,101 @@ } + });*/ + + // 监听下拉选择框 + form.on('select()', function (data) { + //alert(1) + + let id = data.elem.id; + if(id.indexOf('outType') === -1){ + let idNum = id.split("unit")[1]; + let unit = ""; + let mcode = ""; + let depositoryId = "-1"; + // 用于标志是否为物料出库(默认为物料) + let flag = true; + if (id.indexOf('unit') !== -1) { + unit = data.value; + if (depositoryDisplay !== "none") { + depositoryId = $("#showDepository" + idNum).val(); + } + } + else if (id.indexOf('ForGroup') === -1) { + // 获取当前选中的仓库id是在物料出库下 + depositoryId = data.value; + idNum = id.split('showDepository')[1]; + unit = $("#unit" + idNum).val(); + } + else if (id.indexOf("ForGroup") !== -1) { + depositoryId = data.value; + idNum = id.split('showDepositoryForGroup')[1]; + flag = false; + } + if (flag) { + mcode = $("#code" + idNum).val(); + if (mcode === "" || mcode === undefined || mcode === null) { + layer.msg("请输入物料的正确编码!", {icon: 0, time: 1000}, function () { + $("#quantity" + idNum).val("") + }); + } else { + let val = $("#quantity" + idNum).val(); + if (val !== null && val !== undefined && val !== '') { + var req = {}; + req.mcode = mcode; + req.quantity = val; + req.unit = unit; + req.placeId = -1; + if (depositoryId !== "-1") { + //alert("选择仓库mid:"+depositoryId) + //liwenxuan 修改mid错误bug 在此处的ajax判断当前选中的物料在当前选中的仓库中是否有足够数量. start + let depositoryParams = depositoryId.split(',') + if(depositoryId.includes(',')){ + req.depositoryId = depositoryParams[0]; + var midx = 'mid'+idNum; + //alert("选择仓库未更改的mid:"+$("input[name = "+midx+"]").val()) + $("input[name = "+midx+"]").val(depositoryParams[1]); + //alert("选择仓库已更改的mid:"+$("input[name = "+midx+"]").val()) + }else{ + req.depositoryId = depositoryId; + } + + //liwenxuan 修改mid错误bug 在此处的ajax判断当前选中的物料在当前选中的仓库中是否有足够数量. end + + } + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/MaterialQuantityIsTrue", + type: "post", + data: JSON.stringify(req), + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (res) { + var flag = res.data; + if (!flag) { // 如果当前数目不合适 + layer.msg("当前单个仓库中物料数量不足", {icon: 0, time: 500}, function () { + layer.close(loading2); + $("#quantity" + idNum).val(""); + }, + ); + } else { + layer.close(loading2) + } + + } + }); + } + } + } + else { + let elem = {}; + elem.id = "quantityForGroup" + idNum; + groupQuantityIsTrue(elem) + } + } + + + }); // 用于选择代领用户 diff --git a/src/main/resources/templates/pages/application/application-out_min-mobile.html b/src/main/resources/templates/pages/application/application-out_min-mobile.html index 9b9a0cb9..3c7d9f62 100644 --- a/src/main/resources/templates/pages/application/application-out_min-mobile.html +++ b/src/main/resources/templates/pages/application/application-out_min-mobile.html @@ -122,7 +122,7 @@ openDetail1 = function (id) { var index = layer.open({ type: 2, - title: '扫码', + title: '扫码application-out_min-mobile', skin: 'layui-layer-rim', maxmin: true, shadeClose: true, //点击遮罩关闭层 diff --git a/src/main/resources/templates/pages/application/application-review.html b/src/main/resources/templates/pages/application/application-review.html index 2f34e26b..8cb2b985 100644 --- a/src/main/resources/templates/pages/application/application-review.html +++ b/src/main/resources/templates/pages/application/application-review.html @@ -106,7 +106,7 @@ -