From 13b0bad30ef1df53492cbab1c1b99dfc02dee63f Mon Sep 17 00:00:00 2001 From: haoyahui <2032914783@qq.com> Date: 星期二, 21 十一月 2023 17:51:16 +0800 Subject: [PATCH] 台账管理,盘点任务开发 --- consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java | 279 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 170 insertions(+), 109 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java index f23846e..df1ea64 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java @@ -2,25 +2,30 @@ import com.consum.base.core.CodeGeneratorEnum; import com.consum.base.core.CodeGeneratorService; -import com.consum.base.core.tools.MapRowMapper; -import com.consum.base.pojo.LWhFormInventoryDto; -import com.consum.base.pojo.LWhFormInventoryParam; -import com.consum.base.util.IdUtil; -import com.consum.model.po.*; -import com.iplatform.model.po.S_user_core; +import com.consum.base.core.utils.IdUtil; +import com.consum.base.core.utils.MapRowMapper; +import com.consum.base.core.utils.MapUtils; +import com.consum.base.core.utils.MapperUtil; +import com.consum.base.pojo.request.FormInventoryParam; +import com.consum.base.pojo.request.LWhFormInventoryParam; +import com.consum.base.pojo.response.FormInventoryGoodsVO; +import com.consum.base.pojo.response.FormInventoryVO; +import com.consum.model.po.BaseWarehouse; +import com.consum.model.po.FinSysTenantUser; +import com.consum.model.po.LWhFormInventory; import com.walker.db.page.GenericPager; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.StringUtils; import com.walker.jdbc.service.BaseServiceImpl; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; /** * @Description 鐩樼偣 @@ -39,47 +44,41 @@ private FinSysTenantUserServiceImpl finSysTenantUserService; @Autowired private LWhFormInventoryGoodsServiceImpl inventoryGoodsService; + @Autowired + private BaseGoodsTemplateServiceImpl baseGoodsTemplateService; + @Autowired + private LWhGoodsService lWhGoodsService; private static final String QUERY_LIST = "select * from l_wh_form_inventory where 1=1 "; - private static final String QUERY_PD_List = "SELECT bgt.GOODS_NAME goodsName,model.MODEL_NAME modelName,bgt.CLASSIFICATION,model.UNIT,\n" + - " record.endCount,bgt.ID goodsTemplateId,model.ID modelsId\n" + - "FROM BASE_GOODS_MODELS model\n" + - " LEFT JOIN (SELECT COUNT(1) endCount, BASE_GOODS_MODELS_ID\n" + - " FROM L_WH_GOODS\n" + - " WHERE WAREHOUSE_TYPE = 0\n" + - " AND WAREHOUSE_ID = 1\n" + - " AND STATES = ?\n" + - " GROUP BY BASE_GOODS_MODELS_ID) record ON record.BASE_GOODS_MODELS_ID = model.id\n" + - "left join base_goods_template bgt on bgt.ID = model.GOODS_TEMPLATES_ID; "; + private static final String QUERY_PD_List = "SELECT bgt.GOODS_NAME goodsName,model.MODEL_NAME modelName,bgt.CLASSIFICATION,model.UNIT,\n" + + " record.endCount,bgt.ID goodsTemplateId,model.ID modelsId\n" + "FROM BASE_GOODS_MODELS model\n" + + " LEFT JOIN (SELECT COUNT(1) endCount, BASE_GOODS_MODELS_ID\n" + " FROM L_WH_GOODS\n" + + " WHERE WAREHOUSE_TYPE = 0\n" + " AND WAREHOUSE_ID = 1\n" + " AND STATES = ?\n" + + " GROUP BY BASE_GOODS_MODELS_ID) record ON record.BASE_GOODS_MODELS_ID = model.id\n" + + "left join base_goods_template bgt on bgt.ID = model.GOODS_TEMPLATES_ID; "; - private static final String QUERY_PD_DETAIL_LIST = "select lwfi.WAREHOUSE_NAME,lwfig.GOODS_TEMPLATE_NAME,\n" + - " lwfig.BASE_GOODS_MODELS_NAME,\n" + - " lwfig.INVENTORY_RESULT,\n" + - " lwfig.INIT_COUNTS,\n" + - " lwfig.INVENTORY_COUNTS,\n" + - " lwfig.ERROR_COUNTS,\n" + - " lwfi.AGENCY_NAME,\n" + - " lwfi.OPERATOR_NAME,\n" + - " lwfi.STOP_TIME\n" + - "from l_wh_form_inventory lwfi\n" + - " inner join l_wh_form_inventory_goods lwfig on lwfi.ID = lwfig.WH_FORM_INVENTORY_ID "; + private static final String QUERY_PD_DETAIL_LIST = + "select lwfi.WAREHOUSE_NAME,lwfig.GOODS_TEMPLATE_NAME,\n" + " lwfig.BASE_GOODS_MODELS_NAME,\n" + " lwfig.INVENTORY_RESULT,\n" + + " lwfig.INIT_COUNTS,\n" + " lwfig.INVENTORY_COUNTS,\n" + " lwfig.ERROR_COUNTS,\n" + " lwfi.AGENCY_NAME,\n" + + " lwfi.OPERATOR_NAME,\n" + " lwfi.STOP_TIME\n" + "from l_wh_form_inventory lwfi\n" + + " inner join l_wh_form_inventory_goods lwfig on lwfi.ID = lwfig.WH_FORM_INVENTORY_ID "; /** + * @param param + * @param currentUser 褰撳墠鐧诲綍鐢ㄦ埛 + * @param operatorUser 鐩樼偣浜� + * @param monitorUser 鐩戠洏浜� + * @return * @Description 鏂板 * @Author 鍗㈠簡闃� * @Date 2023/10/31 - * @param param - * @param currentUser 褰撳墠鐧诲綍鐢ㄦ埛 - * @param operatorUser 鐩樼偣浜� - * @param operatorUser2 鐩戠洏浜� - * @return */ - public int add(LWhFormInventoryParam param, FinSysTenantUser currentUser, S_user_core operatorUser, S_user_core operatorUser2) { + public int add(FormInventoryParam param, FinSysTenantUser currentUser, FinSysTenantUser operatorUser, FinSysTenantUser monitorUser) { //鏂板鐩樼偣鍗� LWhFormInventory lWhFormInventory = new LWhFormInventory(); - BeanUtils.copyProperties(param,lWhFormInventory); + BeanUtils.copyProperties(param, lWhFormInventory); lWhFormInventory.setId(IdUtil.generateId()); //鐩樼偣鍗曠紪鐮� String businessFormCode = codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Inventory); @@ -89,15 +88,22 @@ if (baseWarehouse != null) { lWhFormInventory.setWarehouseName(baseWarehouse.getWarehouseName()); } - lWhFormInventory.setOperatorName(operatorUser.getUser_name()); - lWhFormInventory.setOperatorName2(operatorUser2.getUser_name()); + if (operatorUser != null) { + lWhFormInventory.setOperatorId(operatorUser.getId()); + lWhFormInventory.setOperatorName(operatorUser.getUserName()); + } + if (monitorUser != null) { + lWhFormInventory.setOperatorId2(monitorUser.getId()); + lWhFormInventory.setOperatorName2(monitorUser.getUserName()); + } + lWhFormInventory.setStates(0); lWhFormInventory.setAgencyId(Long.valueOf(currentUser.getTenantId())); lWhFormInventory.setAgencyName(currentUser.getTenantName()); lWhFormInventory.setCreatorId(currentUser.getSysUserId()); lWhFormInventory.setCreatorName(currentUser.getUserName()); lWhFormInventory.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); - + lWhFormInventory.setBeiz1(param.getRemark()); return this.insert(lWhFormInventory); } @@ -106,47 +112,47 @@ * @Author 鍗㈠簡闃� * @Date 2023/10/31 */ - public GenericPager<LWhFormInventory> queryList(LWhFormInventoryParam param, FinSysTenantUser sysInfo) { + public GenericPager<LWhFormInventory> queryList(com.consum.base.pojo.LWhFormInventoryParam param, FinSysTenantUser sysInfo) { StringBuilder sql = new StringBuilder(QUERY_LIST); HashMap<String, Object> paramts = new HashMap<>(); //鐩樼偣鍗曞彿 if (!StringUtils.isEmpty(param.getBusinessFormCode())) { - sql.append(" and BUSINESS_FORM_CODE like:BUSINESS_FORM_CODE "); - paramts.put("BUSINESS_FORM_CODE", StringUtils.CHAR_PERCENT + param.getBusinessFormCode() + StringUtils.CHAR_PERCENT); + sql.append("and BUSINESS_FORM_CODE =:BUSINESS_FORM_CODE "); + paramts.put("BUSINESS_FORM_CODE", param.getBusinessFormCode()); } //鐩樼偣鍗曞悕绉� if (!StringUtils.isEmpty(param.getBusinessFormName())) { - sql.append(" and BUSINESS_FORM_NAME =:BUSINESS_FORM_NAME "); + sql.append("and BUSINESS_FORM_NAME like :BUSINESS_FORM_NAME "); paramts.put("BUSINESS_FORM_NAME", StringUtils.CHAR_PERCENT + param.getBusinessFormName() + StringUtils.CHAR_PERCENT); } //浠撳簱缂栧彿 if (param.getWarehouseId() != null) { - sql.append(" and WAREHOUSE_ID =:WAREHOUSE_ID "); + sql.append("and WAREHOUSE_ID =:WAREHOUSE_ID "); paramts.put("WAREHOUSE_ID", param.getWarehouseId()); } //鐩樼偣鏃堕棿 - if (param.getInventoryDateStart() != null) { - sql.append(" and INVENTORY_DATE >=:inventoryDateStart "); - paramts.put("inventoryDateStart", param.getInventoryDateStart() * 1000000); + if (param.getStartTime() != null) { + sql.append("and INVENTORY_DATE >=:inventoryDateStart "); + paramts.put("inventoryDateStart", param.getStartTime() * 1000000); } - if (param.getInventoryDateEnd() != null) { - sql.append(" and INVENTORY_DATE <:inventoryDateEnd "); - paramts.put("inventoryDateEnd", param.getInventoryDateEnd() * 1000000 + 240000); + if (param.getEndTime() != null) { + sql.append("and INVENTORY_DATE <:inventoryDateEnd "); + paramts.put("inventoryDateEnd", param.getEndTime() * 1000000 + 240000); } //鏈烘瀯 - sql.append(" and AGENCY_ID =:AGENCY_ID "); + sql.append("and AGENCY_ID =:AGENCY_ID "); paramts.put("AGENCY_ID", sysInfo.getTenantId()); - sql.append(" ORDER BY CREATE_TIME DESC "); + sql.append("ORDER BY CREATE_TIME DESC "); return selectSplit(sql.toString(), paramts, new LWhFormInventory()); } /** + * @param id 鐩樼偣鍗昳d * @Description 鐩樼偣 * @Author 鍗㈠簡闃� * @Date 2023/10/31 - * @param id 鐩樼偣鍗昳d */ public List queryPdList(Long id) { //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� @@ -161,40 +167,45 @@ return null; } //3.鏂板鐩樼偣鍗曠墿鍝佽褰� - int flag = inventoryGoodsService.add(list, lWhFormInventory.getWarehouseId()); - if (flag != list.size()) { - log.error("鏂板鐩樼偣鍗曡褰�"); - return null; - } +// int flag = inventoryGoodsService.add(list, lWhFormInventory.getWarehouseId()); +// if (flag != list.size()) { +// log.error("鏂板鐩樼偣鍗曡褰�"); +// return null; +// } //4.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗曠墿鍝� return inventoryGoodsService.getByInventoryId(id); } /** * 鏆傚瓨 + * * @author 鍗㈠簡闃� * @date 2023/10/31 */ - public int temporaryStorage(LWhFormInventoryDto dto) { + public int temporaryStorage(LWhFormInventoryParam dto, Integer state) { //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId())); if (lWhFormInventory == null) { - log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� 澶辫触"); + log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗曞け璐�"); return 0; } //2.淇敼鐩樼偣鍗� - lWhFormInventory.setStates(1); + lWhFormInventory.setStates(state); lWhFormInventory.setInventoryDate(DateUtils.getDateTimeNumber(System.currentTimeMillis())); int flag1 = this.update(lWhFormInventory); if (flag1 == 0) { - log.error("淇敼鐩樼偣鍗� 澶辫触"); + log.error("淇敼鐩樼偣鍗曞け璐�"); return 0; } - //3.鏇存柊鐩樼偣鍗曠墿鍝� - List<LWhFormInventoryGoods> inventoryGoodsList = dto.getInventoryGoodsList(); - int flag2 = inventoryGoodsService.update(inventoryGoodsList); + //3.娣诲姞鐩樼偣鍗曠墿鍝� + List<FormInventoryGoodsVO> inventoryGoodsList = dto.getInventoryGoodsList(); + if (CollectionUtils.isEmpty(inventoryGoodsList)) { + log.error("鐩樼偣鍗曠墿鍝佷负绌�"); + return 0; + } + int flag2 = inventoryGoodsService.add(inventoryGoodsList, lWhFormInventory.getWarehouseId()); if (flag2 != inventoryGoodsList.size()) { - log.error("鏇存柊鐩樼偣鍗曠墿鍝� 澶辫触"); + log.error("鏇存柊鐩樼偣鍗曠墿鍝佸け璐�"); return 0; } return 1; @@ -202,56 +213,57 @@ /** * 瀹屾垚鐩樼偣 + * * @author 鍗㈠簡闃� * @date 2023/10/31 */ - public int finishPd(LWhFormInventoryDto dto) { - //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� - LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId())); - if (lWhFormInventory == null) { - log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� 澶辫触"); - return 0; - } - //2.淇敼鐩樼偣鍗� - lWhFormInventory.setStates(2); - lWhFormInventory.setStopTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); - int flag1 = this.update(lWhFormInventory); - if (flag1 == 0) { - log.error("淇敼鐩樼偣鍗� 澶辫触"); - return 0; - } - //3.鏇存柊鐩樼偣鍗曠墿鍝� - List<LWhFormInventoryGoods> inventoryGoodsList = dto.getInventoryGoodsList(); - if (CollectionUtils.isEmpty(inventoryGoodsList)) { - log.error("鐩樼偣鍗曠墿鍝� 涓虹┖"); - return 0; - } - for (LWhFormInventoryGoods inventoryGoods : inventoryGoodsList) { - int errorCounts = inventoryGoods.getInitCounts() - inventoryGoods.getInventoryCounts(); - if (errorCounts >0 ) { - inventoryGoods.setInventoryResult(3); - } else if (errorCounts <0){ - inventoryGoods.setInventoryResult(2); - } else { - inventoryGoods.setInventoryResult(1); - } - inventoryGoods.setErrorCounts(Math.abs(errorCounts)); - } - int flag2 = inventoryGoodsService.update(inventoryGoodsList); - if (flag2 != inventoryGoodsList.size()) { - log.error("鏇存柊鐩樼偣鍗曠墿鍝� 澶辫触"); - return 0; - } - return 1; - } +// public int finishPd(LWhFormInventoryParam dto) { +// //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� +// LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId())); +// if (lWhFormInventory == null) { +// log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� 澶辫触"); +// return 0; +// } +// //2.淇敼鐩樼偣鍗� +// lWhFormInventory.setStates(2); +// lWhFormInventory.setStopTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); +// int flag1 = this.update(lWhFormInventory); +// if (flag1 == 0) { +// log.error("淇敼鐩樼偣鍗� 澶辫触"); +// return 0; +// } +// //3.鏇存柊鐩樼偣鍗曠墿鍝� +// List<LWhFormInventoryGoods> inventoryGoodsList = dto.getInventoryGoodsList(); +// if (CollectionUtils.isEmpty(inventoryGoodsList)) { +// log.error("鐩樼偣鍗曠墿鍝� 涓虹┖"); +// return 0; +// } +// for (LWhFormInventoryGoods inventoryGoods : inventoryGoodsList) { +// int errorCounts = inventoryGoods.getInitCounts() - inventoryGoods.getInventoryCounts(); +// if (errorCounts > 0) { +// inventoryGoods.setInventoryResult(3); +// } else if (errorCounts < 0) { +// inventoryGoods.setInventoryResult(2); +// } else { +// inventoryGoods.setInventoryResult(1); +// } +// inventoryGoods.setErrorCounts(Math.abs(errorCounts)); +// } +// int flag2 = inventoryGoodsService.update(inventoryGoodsList); +// if (flag2 != inventoryGoodsList.size()) { +// log.error("鏇存柊鐩樼偣鍗曠墿鍝� 澶辫触"); +// return 0; +// } +// return 1; +// } /** + * @return * @Description 寮傚父鏄庣粏鍒楄〃鏌ヨ * @Author 鍗㈠簡闃� * @Date 2023/11/1 - * @return */ - public GenericPager<Map<String, Object>> queryPdDetailList(LWhFormInventoryParam param, FinSysTenantUser sysInfo) { + public GenericPager<Map<String, Object>> queryPdDetailList(com.consum.base.pojo.LWhFormInventoryParam param, FinSysTenantUser sysInfo) { StringBuilder sql = new StringBuilder(QUERY_PD_DETAIL_LIST); HashMap<String, Object> paramts = new HashMap<>(); @@ -313,4 +325,53 @@ return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapRowMapper()); } + public List<FormInventoryGoodsVO> selectDetailById(Long id) { + + String sql = "select fig.id, fig.BASE_GOODS_TEMPLATE_ID,fig.GOODS_TEMPLATE_NAME,fig.BASE_GOODS_MODELS_NAME," + + "fig.INIT_COUNTS total,fig.INVENTORY_COUNTS,fig.INVENTORY_RESULT status from " + + "l_wh_form_inventory_goods fig where fig.WH_FORM_INVENTORY_ID = :id"; + HashMap<String, Object> param = new HashMap<>(); + param.put("id", id); + List<Map<String, Object>> select = select(sql, param, new MapperUtil()); + List<FormInventoryGoodsVO> result = Lists.newArrayList(); + select.forEach(item -> { + FormInventoryGoodsVO formInventoryGoodsVO = MapUtils.convertMapToObj(item, FormInventoryGoodsVO.class); + result.add(formInventoryGoodsVO); + }); + return result; + } + + public FormInventoryVO queryInventBaseGoodTemplate(Long id) { + FormInventoryVO formInventoryVO = new FormInventoryVO(); + + LWhFormInventory lWhFormInventory = new LWhFormInventory(); + lWhFormInventory.setId(id); + LWhFormInventory inventory = this.get(lWhFormInventory); + if (inventory == null) { + return null; + } + Long warehouseId = inventory.getWarehouseId(); + Integer warehouseType = inventory.getWarehouseType(); + + formInventoryVO.setBusinessFormCode(inventory.getBusinessFormCode()); + formInventoryVO.setBusinessFormName(inventory.getBusinessFormName()); + formInventoryVO.setWarehouseId(warehouseId); + formInventoryVO.setWarehouseName(inventory.getWarehouseName()); + + String sql = + "select bgm.id,bgt.id baseGoodsTemplateId,bgt.GOODS_NAME goodsTemplateName,bgm.MODEL_NAME baseGoodsModelsName,bgt.CLASSIFICATION type,bgm.UNIT from base_goods_models bgm left join base_goods_template bgt on bgm.GOODS_TEMPLATES_ID = bgt.id " + + "where bgt.AGENCY_ID = :agencyId"; + HashMap<String, Object> param = new HashMap<>(); + param.put("agencyId", inventory.getAgencyId()); + List<Map<String, Object>> result = this.select(sql, param, new MapperUtil()); + List<FormInventoryGoodsVO> goodsVOList = Lists.newArrayList(); + result.forEach(item -> { + FormInventoryGoodsVO baseGoodsModels = MapUtils.convertMapToObj(item, FormInventoryGoodsVO.class); + int inventoryCount = this.lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModels.getId(), 1, null); + baseGoodsModels.setInventoryCount(inventoryCount); + goodsVOList.add(baseGoodsModels); + }); + formInventoryVO.setFormInventoryGoodsList(goodsVOList); + return formInventoryVO; + } } -- Gitblit v1.9.1