diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java b/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java index e77c7b89..9a6c4e41 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java @@ -123,7 +123,7 @@ public class GroupController { // 获取详细信息 // 获取该物料的库存 - List inventoryByMidAndDepository = materialService.findInventoryByMidAndDepository(groupInfo, depositoryIdList); + List inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); // 用于标志当前物料库存是否符合要求 boolean flagForQuantity = false; for (Integer quantity : inventoryByMidAndDepository) { @@ -393,7 +393,7 @@ public class GroupController { // 获取详细信息 // 获取该物料的库存 - List inventoryByMidAndDepository = materialService.findInventoryByMidAndDepository(groupInfo, depositoryIdList); + List inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); // 用于标志当前物料库存是否符合要求 boolean flagForQuantity = false; for (Integer quantity : inventoryByMidAndDepository) { @@ -842,7 +842,7 @@ public class GroupController { boolean flagForInventory = false; // 获取该物料在各仓库的库存 - List inventoryByMidAndDepository = materialService.findInventoryByMidAndDepository(groupInfo, depositoryIdList); + List inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); for (Integer integer : inventoryByMidAndDepository) { if (integer >= totalQuantity) { flagForInventory = true; 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 b760a777..07ecb22d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -18,7 +18,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.*; -import java.util.concurrent.TimeUnit; /** * @author Dreamchaser @@ -77,16 +76,13 @@ public class MaterialController { if (Integer.compare(depositoryId, -1) == 0) { return new RestResponse(null); } else { - map.put("userTokenId",userToken.getId()); + map.put("userTokenId", userToken.getId()); List inventoryForStockTaking = materialService.findInventoryForStockTaking(map); - return new RestResponse(inventoryForStockTaking,placeService.findPlaceAndMaterialCountByCondition(map),200); + return new RestResponse(inventoryForStockTaking, placeService.findPlaceAndMaterialCountByCondition(map), 200); } } - - - /** * 用于查询当前组合中物料的数量 * @@ -1861,6 +1857,43 @@ public class MaterialController { } + @GetMapping("/findMaterialByConditionForStockTaking") + public RestResponse findMaterialByConditionForStockTaking(@RequestParam Map map, HttpServletRequest request) { + if (map.containsKey("mid")) { + String mid = (String) map.get("mid"); + if("".equals(mid)){ + return new RestResponse(null); + } + UserByPort userToken = (UserByPort) request.getAttribute("userToken"); + // 获取当前部门所拥有的仓库 + List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); + // 查询当前用户管理的仓库 + List depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId()); + + // 获取用户可见的仓库 + List depositoryIdList = new ArrayList<>(); + for (Depository depository : depositoryByAdminorg + ) { + depositoryIdList.add(depository.getId()); + } + for (RoleAndDepository rad : depositoryAndRole + ) { + if (!depositoryIdList.contains(rad.getDepositoryId())) { + depositoryIdList.add(rad.getDepositoryId()); + } + } + map.put("userTokenId",userToken.getId()); + List materialAndPlaceForViews = materialService.findInventoryByMidAndDepository(map, depositoryIdList); + Integer count = placeService.findPlaceAndMaterialCountByDidsAndMid(depositoryIdList, map); + return new RestResponse(materialAndPlaceForViews,count,200); + }else{ + return new RestResponse(null); + } + + + } + + /** * 用于修改对应的码值类型 * 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 1c3379ed..8e749476 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java @@ -49,12 +49,11 @@ public class StockTakingController { QyWxOperationService qyWxOperationService; @Autowired - private RedisTemplate redisTemplateForHash; + private RedisTemplate redisTemplateForHash; // 用于添加盘点记录 @PostMapping("/addStockTakingRecord") - public RestResponse addStockTakingRecord(@RequestBody Map map, HttpServletRequest request) - { + public RestResponse addStockTakingRecord(@RequestBody Map map, HttpServletRequest request) { UserByPort userToken = (UserByPort) request.getAttribute("userToken"); @@ -64,8 +63,8 @@ public class StockTakingController { List params = (ArrayList) map.get("params"); String departmentManagerId = (String) map.get("departmentManagerId"); - map.put("departmentManager",departmentManagerId); - map.put("temp",0); + map.put("departmentManager", departmentManagerId); + map.put("temp", 0); // 用于设置企业微信接收人 StringBuilder QyWxDepartmentManager = new StringBuilder(); String[] split = departmentManagerId.split(","); @@ -77,22 +76,22 @@ public class StockTakingController { // QyWxDepartmentManager.append(departmentManager.getWorkwechat()+","); } QyWxDepartmentManager.append("PangFuZhen").append(","); - map.put("state",3); - map.put("departmentManagerState",3); + map.put("state", 3); + map.put("departmentManagerState", 3); map.remove("departmentManagerId"); - map.put("originator",userToken.getId()); + map.put("originator", userToken.getId()); String mcode = (String) map.get("code"); map.remove("code"); Integer success = 0; - if(params.size() > 0){ + if (params.size() > 0) { // 如果有多个表 - Map param = new HashMap<>(); - param.put("depositoryId",map.get("depositoryId")); - param.put("placeId",map.get("placeId")); - param.put("departmentManager",map.get("departmentManager")); - param.put("state",3); - param.put("departmentManagerState",3); - param.put("originator",userToken.getId()); + Map param = new HashMap<>(); + param.put("depositoryId", map.get("depositoryId")); + param.put("placeId", map.get("placeId")); + param.put("departmentManager", map.get("departmentManager")); + param.put("state", 3); + param.put("departmentManagerState", 3); + param.put("originator", userToken.getId()); for (Object o : params) { Integer temp = ObjectFormatUtil.toInteger(o); map.remove("code"); @@ -103,20 +102,20 @@ public class StockTakingController { param.put("takingResult", map.get("takingResult" + temp)); param.put("inventory", map.get("inventory" + temp)); param.put("producedDate", map.get("producedDate" + temp)); - param.put("unit",map.get("unit"+temp)); + param.put("unit", map.get("unit" + temp)); param.put("temp", temp); success += stockTakingService.insertStockTaking(param); param.remove("id"); } - param.put("temp",map.get("temp")); - param.put("mid",map.get("mid")); - param.put("barCode",map.get("barCode")); - param.put("oldInventory",map.get("oldInventory")); - param.put("newInventory",map.get("newInventory")); - param.put("takingResult",map.get("takingResult")); - param.put("inventory",map.get("inventory")); - param.put("producedDate",map.get("producedDate")); - param.put("unit",map.get("unit")); + param.put("temp", map.get("temp")); + param.put("mid", map.get("mid")); + param.put("barCode", map.get("barCode")); + param.put("oldInventory", map.get("oldInventory")); + param.put("newInventory", map.get("newInventory")); + param.put("takingResult", map.get("takingResult")); + param.put("inventory", map.get("inventory")); + param.put("producedDate", map.get("producedDate")); + param.put("unit", map.get("unit")); success += stockTakingService.insertStockTaking(param); Object mainId = param.get("mainId"); @@ -150,12 +149,11 @@ public class StockTakingController { QyWxApprovalMap.put("mainId", mainId.toString()); redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap); // 设置过期时间为7天 - redisTemplateForHash.expire(sp_no,7,TimeUnit.DAYS); + redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS); } }).start(); - } - else{ + } else { // 如果只有一个表 success += stockTakingService.insertStockTaking(map); Object mainId = map.get("mainId"); @@ -187,42 +185,41 @@ public class StockTakingController { QyWxApprovalMap.put("mainId", mainId.toString()); redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap); // 设置过期时间为7天 - redisTemplateForHash.expire(sp_no,7,TimeUnit.DAYS); + redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS); } }).start(); } - if(params.size() > 0 ){ - return CrudUtil.postHandle(success,params.size() + 1); - } - else{ - return CrudUtil.postHandle(success,1); + if (params.size() > 0) { + return CrudUtil.postHandle(success, params.size() + 1); + } else { + return CrudUtil.postHandle(success, 1); } } // 用于查询需要用户审核的盘点 @GetMapping("/myTask") - public RestResponse myTask(@RequestParam Map map,HttpServletRequest request) { - UserByPort userToken= (UserByPort) request.getAttribute("userToken"); - map.put("departmentHead",userToken.getNumber()); + public RestResponse myTask(@RequestParam Map map, HttpServletRequest request) { + UserByPort userToken = (UserByPort) request.getAttribute("userToken"); + map.put("departmentHead", userToken.getNumber()); List myTask = stockTakingService.findMyTask(map, request); - return new RestResponse(myTask,stockTakingService.findMyTaskCount(map),200); + return new RestResponse(myTask, stockTakingService.findMyTaskCount(map), 200); } // 用于审核 @PostMapping("/review") - public RestResponse review(@RequestBody Map map,HttpServletRequest request){ + public RestResponse review(@RequestBody Map map, HttpServletRequest request) { String header = request.getHeader("user-agent"); String crypt = Md5.crypt(header); - UserByPort userToken= (UserByPort) request.getAttribute("userToken"); - Map review = stockTakingService.review(map, userToken,crypt); + UserByPort userToken = (UserByPort) request.getAttribute("userToken"); + Map review = stockTakingService.review(map, userToken, crypt); - if(review.containsKey("errMsg")){ + if (review.containsKey("errMsg")) { // 如果有出错情况 - return new RestResponse(review,666,new StatusInfo("有错误","发现错误")); - }else { + return new RestResponse(review, 666, new StatusInfo("有错误", "发现错误")); + } else { return CrudUtil.postHandle(1, 1); } } @@ -230,33 +227,33 @@ public class StockTakingController { // 用于完成订单 @PostMapping("/complete") - public RestResponse complete(@RequestBody Map map,HttpServletRequest request){ - UserByPort userToken= (UserByPort) request.getAttribute("userToken"); + public RestResponse complete(@RequestBody Map map, HttpServletRequest request) { + UserByPort userToken = (UserByPort) request.getAttribute("userToken"); String header = request.getHeader("user-agent"); String crypt = Md5.crypt(header); - Map complete = stockTakingService.completeStockTaking(map, userToken,crypt); - if(complete.containsKey("errMsg")){ + Map complete = stockTakingService.completeStockTaking(map, userToken, crypt); + if (complete.containsKey("errMsg")) { // 如果有出错情况 - return new RestResponse(complete,666,new StatusInfo("有错误","发现错误")); - }else { + return new RestResponse(complete, 666, new StatusInfo("有错误", "发现错误")); + } else { return CrudUtil.postHandle(1, 1); } } // 用于查询用户提交的盘点 @GetMapping("/myApply") - public RestResponse myApply(@RequestParam Map map,HttpServletRequest request) { - UserByPort userToken= (UserByPort) request.getAttribute("userToken"); - map.put("userId",userToken.getId()); + public RestResponse myApply(@RequestParam Map map, HttpServletRequest request) { + UserByPort userToken = (UserByPort) request.getAttribute("userToken"); + map.put("userId", userToken.getId()); List myTask = stockTakingService.findMyApply(map, request); - return new RestResponse(myTask,stockTakingService.findMyApplyCount(map),200); + return new RestResponse(myTask, stockTakingService.findMyApplyCount(map), 200); } // 用于查询转入位置的容量 @PostMapping("/findInventoryByLocation") - public RestResponse findInventoryByLocation(@RequestBody Map map,HttpServletRequest request) { - UserByPort userToken= (UserByPort) request.getAttribute("userToken"); + public RestResponse findInventoryByLocation(@RequestBody Map map, HttpServletRequest request) { + UserByPort userToken = (UserByPort) request.getAttribute("userToken"); String depositoryId = (String) map.get("depositoryId"); String placeId = (String) map.get("placeId"); // 获取当前库位 @@ -269,7 +266,7 @@ public class StockTakingController { // 用于进行盘点库存转移 @PostMapping("/stockTransfer") - public RestResponse stockTransfer(@RequestBody Map map,HttpServletRequest request) { + public RestResponse stockTransfer(@RequestBody Map map, HttpServletRequest request) { UserByPort userToken = (UserByPort) request.getAttribute("userToken"); String header = request.getHeader("user-agent"); @@ -284,86 +281,94 @@ public class StockTakingController { minIdList.add(ObjectFormatUtil.toInteger(s)); } - map.put("minIds",minIdList); + map.put("minIds", minIdList); - Integer transfer = stockTakingService.stockTakingTransfer(map, userToken,crypt); - return CrudUtil.postHandle(transfer,minIdList.size()); + Integer transfer = stockTakingService.stockTakingTransfer(map, userToken, crypt); + return CrudUtil.postHandle(transfer, minIdList.size()); } @PostMapping("/temporaryStorageForTakingResult") - public void temporaryStorageForTakingResult(@RequestBody Map map,HttpServletRequest request){ + public void temporaryStorageForTakingResult(@RequestBody Map map, HttpServletRequest request) { // 获取当前盘点人 UserByPort userToken = (UserByPort) request.getAttribute("userToken"); // 获取当前暂存的结果id - String key = "wms_stockTaking_" + userToken.getId() + "_"+ DateUtil.getNowTime()+"_"+map.get("id"); - map.put("flagForSubmit","false"); - redisTemplateForHash.opsForHash().putAll(key,map); + String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + map.get("id"); + map.put("flagForSubmit", "false"); + redisTemplateForHash.opsForHash().putAll(key, map); // 存储到今天的12点 - redisTemplateForHash.expire(key,DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); + redisTemplateForHash.expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); } @PostMapping("/submitStockTaking") - public RestResponse submitStockTaking(@RequestBody Map map,HttpServletRequest request){ + public RestResponse submitStockTaking(@RequestBody Map map, HttpServletRequest request) { UserByPort userToken = (UserByPort) request.getAttribute("userToken"); String header = request.getHeader("user-agent"); String crypt = Md5.crypt(header); // 获取所有有关当前key的键 - String keyPatten = "wms_stockTaking_"+userToken.getId()+"_"+DateUtil.getNowTime()+"*"; + String keyPatten = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "*"; Set keys = redisTemplateForHash.keys(keyPatten); int success = 0; int size = 0; if (keys != null && keys.size() > 0) { size = keys.size(); // 定义用于插入的盘点记录 - Map param = new HashMap<>(); - // 如果存在 - for (String key : keys) { - Boolean flagForSubmit = ObjectFormatUtil.toBoolean(redisTemplateForHash.opsForHash().get(key, "flagForSubmit")); - if(flagForSubmit != null && !flagForSubmit){ - // 如果是第一次提交 - - // 获取盘点时的物料与库位的对应关系id - Integer id = ObjectFormatUtil.toInteger(redisTemplateForHash.opsForHash().get(key, "id")); - // 获取物料与库位的对应关系 - MaterialAndPlace placeAndMaterial = placeService.findPlaceAndMaterialById(id); - - Object unit = redisTemplateForHash.opsForHash().get(key, "unit"); - String takingResult = (String) redisTemplateForHash.opsForHash().get(key, "takingResult"); - Object number = redisTemplateForHash.opsForHash().get(key, "number"); - Object oldInventory = redisTemplateForHash.opsForHash().get(key, "oldInventory"); - Integer newInventory = ObjectFormatUtil.toInteger(oldInventory); - if ("Inventory_down".equals(takingResult)) { - // 如果盘亏 - newInventory -= ObjectFormatUtil.toInteger(number); - - }else if("Inventory_up".equals(takingResult)){ - // 如果盘盈 - newInventory += ObjectFormatUtil.toInteger(number); - } - param.put("newInventory", newInventory); - param.put("depositoryId",map.get("depositoryId")); - param.put("placeId",placeAndMaterial.getPid().toString()); - param.put("departmentManager",map.get("departmentManager")); - param.put("state",3); - param.put("departmentManagerState",3); - param.put("originator",userToken.getId()); - - param.put("mid", placeAndMaterial.getMid()); - param.put("oldInventory", oldInventory); - - param.put("takingResult", takingResult); - param.put("inventory", number); - param.put("unit",unit); - success += stockTakingService.insertStockTaking(param); - param.remove("id"); + Map param = new HashMap<>(); + // 如果是指定位置 + if (map.containsKey("depositoryId")) { + // 如果存在 + for (String key : keys) { + Boolean flagForSubmit = ObjectFormatUtil.toBoolean(redisTemplateForHash.opsForHash().get(key, "flagForSubmit")); + if (flagForSubmit != null && !flagForSubmit) { + // 如果是第一次提交 + + // 获取盘点时的物料与库位的对应关系id + Integer id = ObjectFormatUtil.toInteger(redisTemplateForHash.opsForHash().get(key, "id")); + // 获取物料与库位的对应关系 + MaterialAndPlace placeAndMaterial = placeService.findPlaceAndMaterialById(id); + + Object unit = redisTemplateForHash.opsForHash().get(key, "unit"); + String takingResult = (String) redisTemplateForHash.opsForHash().get(key, "takingResult"); + Object number = redisTemplateForHash.opsForHash().get(key, "number"); + Object oldInventory = redisTemplateForHash.opsForHash().get(key, "oldInventory"); + Integer newInventory = ObjectFormatUtil.toInteger(oldInventory); + if ("Inventory_down".equals(takingResult)) { + // 如果盘亏 + newInventory -= ObjectFormatUtil.toInteger(number); + + } else if ("Inventory_up".equals(takingResult)) { + // 如果盘盈 + newInventory += ObjectFormatUtil.toInteger(number); + } + param.put("newInventory", newInventory); + param.put("depositoryId", map.get("depositoryId")); + param.put("placeId", placeAndMaterial.getPid().toString()); + param.put("departmentManager", map.get("departmentManager")); + param.put("state", 3); + param.put("departmentManagerState", 3); + param.put("originator", userToken.getId()); + + param.put("mid", placeAndMaterial.getMid()); + param.put("oldInventory", oldInventory); + + param.put("takingResult", takingResult); + param.put("inventory", number); + param.put("unit", unit); + success += stockTakingService.insertStockTaking(param); + param.remove("id"); + } + redisTemplateForHash.opsForHash().put(key, "flagForSubmit", "true"); } - redisTemplateForHash.opsForHash().put(key,"flagForSubmit","true"); + } + else{ + // 如果是非指定位置 + success = stockTakingService.insertStockTakingByMaterial(map, keys, userToken); + } } - return CrudUtil.putHandle(success,size); + return CrudUtil.putHandle(success, size); } } diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java index a2719a02..20b66e36 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java @@ -160,6 +160,14 @@ public interface MaterialMapper { */ Inventory findInventoryByMidAndDid(Map map); + + /** + * 根据物料id与仓库id列表查询库存信息 + * @param map 查询条件 + * @return + */ + List findInventoryByMidAndDids(Map map); + /** * 根据id查询库存信息 * @param id 库存id diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml index d25ba785..eb6cf945 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml @@ -674,6 +674,18 @@ and depositoryId = #{did} + + SELECT - + FROM place p where p.state != 3 SELECT - + FROM place p WHERE 1 = 1 - and p.code = #{code} + and p.code = #{code} - and p.did = #{did} + and p.did = #{did} and p.state != 3 @@ -105,7 +105,7 @@ + + + + + + + + select count(*) - FROM materialandplaceinfo WHERE 1 = 1 + FROM materialandplaceinfo WHERE 1 = 1 and depository_id = #{depositoryId} @@ -160,7 +199,7 @@ SELECT - + FROM place p WHERE 1 = 1 AND p.did = #{did} @@ -247,15 +286,15 @@ SELECT - + FROM place p WHERE p.id = #{id} diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.java index 9956b2a1..c9907ba9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.java @@ -97,6 +97,15 @@ public interface SplitUnitMapper { SplitInventory findSplitInventoryByIidAndSid(Map map); + + /** + * 通过物料库存id与拆单id列表获取拆单库存操作记录 + * @param map 查询条件 + * @return + */ + List findSplitInventoryByIidAndSids(Map map); + + /** * 根据条件查询对应拆单详细信息 * @param map 查询条件 diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml index 0d09b54d..60dcb69e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml @@ -103,6 +103,20 @@ + + - + - - + + + +
+ +
+
+ + + +
@@ -177,7 +196,6 @@ } - // 用于存储当前选择的盘点位置 let depositoryId; let placeId; @@ -230,54 +248,12 @@ } }); - // 用于打开仓库树形菜单 - $('#openSonByDepository').on('click', function () { - layer.open({ - type: 2, - title: '弹窗内容', - skin: 'layui-layer-rim', - maxmin: true, - shadeClose: true, //点击遮罩关闭层 - area: ['70%', '70%'], - move: '.layui-layer-title', - fixed: false, - content: '/selectDepository?type=2', - 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 nowDepositoryId = $("#depositoryId").val(); - var nowPlaceId = $("#placeId").val(); - if (nowDepositoryId !== depositoryId || nowPlaceId !== placeId) { - // 如果重新选择盘点位置 - var nowDepositoryName = $("#openSonByDepository").val(); - $("#form1")[0].reset(); - $("#depositoryId").val(nowDepositoryId); - $("#placeId").val(nowPlaceId); - $("#openSonByDepository").val(nowDepositoryName); - form.render(); - } - if (nowDepositoryId !== null && nowDepositoryId !== "") { - depositoryId = nowDepositoryId; - placeId = nowPlaceId; - updateTableShow(); - } - - } - }); - }); - updateTableShow = function () { let req = {}; - req.depositoryId = depositoryId; - req.placeId = placeId; + req.mid = $("#mid").val(); table.reload('currentTableId', { - url: '/material/findInventoryForStockTaking', + url: '/material/findMaterialByConditionForStockTaking', page: { curr: 1 }, @@ -287,7 +263,7 @@ table.render({ elem: "#currentTableId", - url: '/material/findInventoryForStockTaking', + url: '/material/findMaterialByConditionForStockTaking', parseData: function (res) { //res 即为原始返回的数据 return { "status": res.status, //解析接口状态 @@ -313,10 +289,11 @@ height: 'full-255',//固定高度-即固定表头固定第一行首行 cols: [ [ - {field: 'mcode', width: 150, title: '存货编码', fixed: 'left'}, + {field: 'mcode', width: 100, title: '存货编码', fixed: 'left'}, {field: 'mname', width: 150, title: '物料名称'}, - {field: 'typeName', width: 100, title: '物料种类'}, {field: 'version', width: 150, title: '规格型号',}, + {field: 'tname', width: 120, title: '物料种类'}, + {field: 'dname', width: 150, title: '所处仓库'}, {field: 'pcode', width: 150, title: '所处库位',}, {title: '计量单位', width: 200, templet: '#changeUnit', align: "center"}, {field: 'inventory', width: 100, title: '库存数'}, @@ -334,8 +311,8 @@ let takingUnit = j["takingUnit"]; if (takingUnit !== null) { let parentItem = $("[lay-id='currentTableId'] tr:eq(" + (i + 1) + ")"); - let unitHandleItem = parentItem.children()[5]; - let quantityHandleItem = parentItem.children()[6]; + let unitHandleItem = parentItem.children()[6]; + let quantityHandleItem = parentItem.children()[7]; unitHandleItem.childNodes[0].childNodes[1].childNodes[0].data = takingUnit; quantityHandleItem.childNodes[0].innerText = j["splitInventory"][takingUnit]; } @@ -416,64 +393,6 @@ }); - // 扫码盘点位置 - scanCode = function () { - parent.wx.scanQRCode({ - desc: 'scanQRCode desc', - needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, - scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 - success: function (res) { - // 回调 - var result = res.resultStr;//当needResult为1时返回处理结果 - var req = {}; - req.qrCode = result; - req.codeFlag = 2; - $.ajax({ - url: "/place/qywxApplicationInScanQrCode", - type: "post", - dataType: 'json', - data: JSON.stringify(req), - contentType: "application/json;charset=utf-8", - success: function (d) { - var data = d.data; - var flag = data["flag"]; - if (flag === 0) { - // 如果没有获取到位置 - layer.msg("并未查询到对应位置,请重新扫描", { - icon: 0, - time: 1000 - }, function () { - depositoryId = -1; - placeId = -1; - - }); - } else if (flag === 1) { - // 如果获取到的是库位 - var place = data["place"]; - $("#placeId").val(place.id); - $("#openSonByDepository").val(place.depositoryName); - $("#depositoryId").val(place.did); - - depositoryId = place.did; - placeId = place.id; - } else if (flag === 2) { - // 如果获取到的是仓库 - var depository = data["depository"]; - $("#placeId").val("0"); - $("#openSonByDepository").val(depository.dname); - $("#depositoryId").val(depository.id); - - depositoryId = depository.id; - placeId = "0"; - - } - updateTableShow(); - } - }) - } - }) - }; - table.on('edit(currentTableFilter)', function (obj) { obj.update({stockTakingQuantity: obj.value});//修改当前行数据 calculate(obj); @@ -500,7 +419,7 @@ , data: dropDownDataList , click: function (unit) { this.elem[0].childNodes[0].data = unit.title; - obj.tr[0].childNodes[6].childNodes[0].innerText = obj.data.splitInventory[unit.title]; + obj.tr[0].childNodes[7].childNodes[0].innerText = obj.data.splitInventory[unit.title]; } , align: 'right' //右对齐弹出(v2.6.8 新增) , style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式 @@ -513,7 +432,7 @@ // 用于计算盘点结果 calculate = function (obj) { - let oldInventory = Number(obj.tr[0].childNodes[6].childNodes[0].innerText); + let oldInventory = Number(obj.tr[0].childNodes[7].childNodes[0].innerText); let nowInventory = Number(obj.value); let number = 0; let takingResult = ''; @@ -531,15 +450,15 @@ takingResult = "Inventory_normal"; takingResultString = "正常"; } - obj.tr[0].childNodes[8].childNodes[0].innerText = takingResultString; - obj.tr[0].childNodes[9].childNodes[0].innerText = number; + obj.tr[0].childNodes[9].childNodes[0].innerText = takingResultString; + obj.tr[0].childNodes[10].childNodes[0].innerText = number; obj.update({takingResult: takingResult}); obj.update({takingInventory: number}); req.number = number + ""; req.takingResult = takingResult; req.takingResultString = takingResultString; req.id = obj.data.id + ""; - req.unit = obj.tr[0].childNodes[5].childNodes[0].innerText; + req.unit = obj.tr[0].childNodes[6].childNodes[0].innerText; req.oldInventory = oldInventory+""; $.ajax({ url: "/stockTaking/temporaryStorageForTakingResult", @@ -549,6 +468,89 @@ contentType: "application/json;charset=utf-8" }); }; + + // 用于通过物料名称获取物料 + selectMaterialByName = function (obj) { + // 输入code + var data = obj.value; + var req = {}; + data = data.split(",")[0]; + if(data !== ""){ + req.mname = data; + $.ajax({ + url: "/material/findMaterialByCondition", + type: "post", + dataType: 'json', + data: JSON.stringify(req), + contentType: "application/json;charset=utf-8", + success: function (d) { + if (d.count > 1) { + layer.msg("请点击右侧搜索确定物品"); + $("#openSonByMaterial").val(""); + $("#mid").val(""); + $("#code").val(""); + return false; + } else if (d.count === 0) { + layer.msg("没有该物品,请确认输入是否正确"); + $("#openSonByMaterial").val(""); + $("#mid").val(""); + $("#code").val(""); + return false; + } else { + var material = d.data[0]; + $("#openSonByMaterial").val(material.mname); + $("#mid").val(material.mid); + $("#code").val(material.code); + form.render(); + updateTableShow(); + } + } + }); + } + + }; + + + // 用于实现通过编码查询物料 + selectCode = function (obj) { + // 输入code + var code = obj.value; + var req = {}; + req.code = code; + req.type = "out"; + if(code !== ""){ + $.ajax({ + url: "/material/findMatrialByCode", + type: "get", + dataType: 'json', + data: (req), + contentType: "application/json;charset=utf-8", + success: function (d) { + var d = d.data; + if (d == null) { + layer.msg("仓库中暂无该物料",{ + icon:0, + time:1000 + },function () { + $("#openSonByMaterial").val(""); + $("#mid").val(""); + $("#code").val(""); + updateTableShow(); + }); + + } else { + $("#openSonByMaterial").val(d.mname); + $("#mid").val(d.mid); + form.render(); + updateTableShow(); + + } + } + }); + } + + }; + }); diff --git a/src/main/resources/templates/pages/stockTaking/stockTakingForTable.html b/src/main/resources/templates/pages/stockTaking/stockTakingForTable.html new file mode 100644 index 00000000..106c5e6d --- /dev/null +++ b/src/main/resources/templates/pages/stockTaking/stockTakingForTable.html @@ -0,0 +1,556 @@ + + + + + 仓库盘点 + + + + + + + + + + + +
+
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml b/target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml index d25ba785..eb6cf945 100644 --- a/target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml +++ b/target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml @@ -674,6 +674,18 @@ and depositoryId = #{did} + + SELECT - + FROM place p where p.state != 3 SELECT - + FROM place p WHERE 1 = 1 - and p.code = #{code} + and p.code = #{code} - and p.did = #{did} + and p.did = #{did} and p.state != 3 @@ -105,7 +105,7 @@ + + + + + + + + select count(*) - FROM materialandplaceinfo WHERE 1 = 1 + FROM materialandplaceinfo WHERE 1 = 1 and depository_id = #{depositoryId} @@ -160,7 +199,7 @@ SELECT - + FROM place p WHERE 1 = 1 AND p.did = #{did} @@ -247,15 +286,15 @@ SELECT - + FROM place p WHERE p.id = #{id} diff --git a/target/classes/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml b/target/classes/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml index 0d09b54d..60dcb69e 100644 --- a/target/classes/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml +++ b/target/classes/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml @@ -103,6 +103,20 @@ + + - +
- - + + + +
+ +
+
+ + + +
@@ -177,7 +196,6 @@ } - // 用于存储当前选择的盘点位置 let depositoryId; let placeId; @@ -230,54 +248,12 @@ } }); - // 用于打开仓库树形菜单 - $('#openSonByDepository').on('click', function () { - layer.open({ - type: 2, - title: '弹窗内容', - skin: 'layui-layer-rim', - maxmin: true, - shadeClose: true, //点击遮罩关闭层 - area: ['70%', '70%'], - move: '.layui-layer-title', - fixed: false, - content: '/selectDepository?type=2', - 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 nowDepositoryId = $("#depositoryId").val(); - var nowPlaceId = $("#placeId").val(); - if (nowDepositoryId !== depositoryId || nowPlaceId !== placeId) { - // 如果重新选择盘点位置 - var nowDepositoryName = $("#openSonByDepository").val(); - $("#form1")[0].reset(); - $("#depositoryId").val(nowDepositoryId); - $("#placeId").val(nowPlaceId); - $("#openSonByDepository").val(nowDepositoryName); - form.render(); - } - if (nowDepositoryId !== null && nowDepositoryId !== "") { - depositoryId = nowDepositoryId; - placeId = nowPlaceId; - updateTableShow(); - } - - } - }); - }); - updateTableShow = function () { let req = {}; - req.depositoryId = depositoryId; - req.placeId = placeId; + req.mid = $("#mid").val(); table.reload('currentTableId', { - url: '/material/findInventoryForStockTaking', + url: '/material/findMaterialByConditionForStockTaking', page: { curr: 1 }, @@ -287,7 +263,7 @@ table.render({ elem: "#currentTableId", - url: '/material/findInventoryForStockTaking', + url: '/material/findMaterialByConditionForStockTaking', parseData: function (res) { //res 即为原始返回的数据 return { "status": res.status, //解析接口状态 @@ -313,10 +289,11 @@ height: 'full-255',//固定高度-即固定表头固定第一行首行 cols: [ [ - {field: 'mcode', width: 150, title: '存货编码', fixed: 'left'}, + {field: 'mcode', width: 100, title: '存货编码', fixed: 'left'}, {field: 'mname', width: 150, title: '物料名称'}, - {field: 'typeName', width: 100, title: '物料种类'}, {field: 'version', width: 150, title: '规格型号',}, + {field: 'tname', width: 120, title: '物料种类'}, + {field: 'dname', width: 150, title: '所处仓库'}, {field: 'pcode', width: 150, title: '所处库位',}, {title: '计量单位', width: 200, templet: '#changeUnit', align: "center"}, {field: 'inventory', width: 100, title: '库存数'}, @@ -334,8 +311,8 @@ let takingUnit = j["takingUnit"]; if (takingUnit !== null) { let parentItem = $("[lay-id='currentTableId'] tr:eq(" + (i + 1) + ")"); - let unitHandleItem = parentItem.children()[5]; - let quantityHandleItem = parentItem.children()[6]; + let unitHandleItem = parentItem.children()[6]; + let quantityHandleItem = parentItem.children()[7]; unitHandleItem.childNodes[0].childNodes[1].childNodes[0].data = takingUnit; quantityHandleItem.childNodes[0].innerText = j["splitInventory"][takingUnit]; } @@ -416,64 +393,6 @@ }); - // 扫码盘点位置 - scanCode = function () { - parent.wx.scanQRCode({ - desc: 'scanQRCode desc', - needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, - scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 - success: function (res) { - // 回调 - var result = res.resultStr;//当needResult为1时返回处理结果 - var req = {}; - req.qrCode = result; - req.codeFlag = 2; - $.ajax({ - url: "/place/qywxApplicationInScanQrCode", - type: "post", - dataType: 'json', - data: JSON.stringify(req), - contentType: "application/json;charset=utf-8", - success: function (d) { - var data = d.data; - var flag = data["flag"]; - if (flag === 0) { - // 如果没有获取到位置 - layer.msg("并未查询到对应位置,请重新扫描", { - icon: 0, - time: 1000 - }, function () { - depositoryId = -1; - placeId = -1; - - }); - } else if (flag === 1) { - // 如果获取到的是库位 - var place = data["place"]; - $("#placeId").val(place.id); - $("#openSonByDepository").val(place.depositoryName); - $("#depositoryId").val(place.did); - - depositoryId = place.did; - placeId = place.id; - } else if (flag === 2) { - // 如果获取到的是仓库 - var depository = data["depository"]; - $("#placeId").val("0"); - $("#openSonByDepository").val(depository.dname); - $("#depositoryId").val(depository.id); - - depositoryId = depository.id; - placeId = "0"; - - } - updateTableShow(); - } - }) - } - }) - }; - table.on('edit(currentTableFilter)', function (obj) { obj.update({stockTakingQuantity: obj.value});//修改当前行数据 calculate(obj); @@ -500,7 +419,7 @@ , data: dropDownDataList , click: function (unit) { this.elem[0].childNodes[0].data = unit.title; - obj.tr[0].childNodes[6].childNodes[0].innerText = obj.data.splitInventory[unit.title]; + obj.tr[0].childNodes[7].childNodes[0].innerText = obj.data.splitInventory[unit.title]; } , align: 'right' //右对齐弹出(v2.6.8 新增) , style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式 @@ -513,7 +432,7 @@ // 用于计算盘点结果 calculate = function (obj) { - let oldInventory = Number(obj.tr[0].childNodes[6].childNodes[0].innerText); + let oldInventory = Number(obj.tr[0].childNodes[7].childNodes[0].innerText); let nowInventory = Number(obj.value); let number = 0; let takingResult = ''; @@ -531,15 +450,15 @@ takingResult = "Inventory_normal"; takingResultString = "正常"; } - obj.tr[0].childNodes[8].childNodes[0].innerText = takingResultString; - obj.tr[0].childNodes[9].childNodes[0].innerText = number; + obj.tr[0].childNodes[9].childNodes[0].innerText = takingResultString; + obj.tr[0].childNodes[10].childNodes[0].innerText = number; obj.update({takingResult: takingResult}); obj.update({takingInventory: number}); req.number = number + ""; req.takingResult = takingResult; req.takingResultString = takingResultString; req.id = obj.data.id + ""; - req.unit = obj.tr[0].childNodes[5].childNodes[0].innerText; + req.unit = obj.tr[0].childNodes[6].childNodes[0].innerText; req.oldInventory = oldInventory+""; $.ajax({ url: "/stockTaking/temporaryStorageForTakingResult", @@ -549,6 +468,89 @@ contentType: "application/json;charset=utf-8" }); }; + + // 用于通过物料名称获取物料 + selectMaterialByName = function (obj) { + // 输入code + var data = obj.value; + var req = {}; + data = data.split(",")[0]; + if(data !== ""){ + req.mname = data; + $.ajax({ + url: "/material/findMaterialByCondition", + type: "post", + dataType: 'json', + data: JSON.stringify(req), + contentType: "application/json;charset=utf-8", + success: function (d) { + if (d.count > 1) { + layer.msg("请点击右侧搜索确定物品"); + $("#openSonByMaterial").val(""); + $("#mid").val(""); + $("#code").val(""); + return false; + } else if (d.count === 0) { + layer.msg("没有该物品,请确认输入是否正确"); + $("#openSonByMaterial").val(""); + $("#mid").val(""); + $("#code").val(""); + return false; + } else { + var material = d.data[0]; + $("#openSonByMaterial").val(material.mname); + $("#mid").val(material.mid); + $("#code").val(material.code); + form.render(); + updateTableShow(); + } + } + }); + } + + }; + + + // 用于实现通过编码查询物料 + selectCode = function (obj) { + // 输入code + var code = obj.value; + var req = {}; + req.code = code; + req.type = "out"; + if(code !== ""){ + $.ajax({ + url: "/material/findMatrialByCode", + type: "get", + dataType: 'json', + data: (req), + contentType: "application/json;charset=utf-8", + success: function (d) { + var d = d.data; + if (d == null) { + layer.msg("仓库中暂无该物料",{ + icon:0, + time:1000 + },function () { + $("#openSonByMaterial").val(""); + $("#mid").val(""); + $("#code").val(""); + updateTableShow(); + }); + + } else { + $("#openSonByMaterial").val(d.mname); + $("#mid").val(d.mid); + form.render(); + updateTableShow(); + + } + } + }); + } + + }; + });