File was renamed from consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java |
| | |
| | | package com.consum.base.service; |
| | | package com.consum.base.service.impl; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | | import java.util.stream.Collectors; |
| | | |
| | | 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.transaction.interceptor.TransactionAspectSupport; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import com.consum.base.core.CodeGeneratorEnum; |
| | | import com.consum.base.core.CodeGeneratorService; |
| | |
| | | import com.consum.base.pojo.response.FormScrappedGoodsDetailVO; |
| | | import com.consum.base.pojo.response.FormScrappedGoodsVO; |
| | | import com.consum.base.pojo.response.GoodsModelVO; |
| | | import com.consum.base.pojo.response.GoodsTemplateCountVO; |
| | | import com.consum.base.pojo.response.LWhFormScrappedExtendVO; |
| | | import com.consum.base.service.BaseGoodsModelsService; |
| | | import com.consum.base.service.BaseGoodsTemplateService; |
| | | import com.consum.base.service.BaseWarehouseService; |
| | | import com.consum.base.service.FinSysTenantDepartmentService; |
| | | import com.consum.base.service.LWhFormScrappedCoreService; |
| | | import com.consum.base.service.LWhFormScrappedGoodsService; |
| | | import com.consum.base.service.LWhFormScrappedService; |
| | | import com.consum.base.service.LWhGoodsService; |
| | | import com.consum.base.service.SDictDataServiceImpl; |
| | | import com.consum.model.po.BaseGoodsModels; |
| | | import com.consum.model.po.BaseGoodsTemplate; |
| | | import com.consum.model.po.BaseWarehouse; |
| | |
| | | import com.walker.db.page.GenericPager; |
| | | import com.walker.infrastructure.utils.StringUtils; |
| | | import com.walker.jdbc.service.BaseServiceImpl; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | | import java.util.stream.Collectors; |
| | | 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.transaction.interceptor.TransactionAspectSupport; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | /** |
| | | * @Description 报废单 |
| | |
| | | * @Date 2023/11/1 |
| | | */ |
| | | @Service |
| | | public class LWhFormScrappedServiceImpl extends BaseServiceImpl { |
| | | public class LWhFormScrappedServiceImpl extends BaseServiceImpl implements LWhFormScrappedService { |
| | | |
| | | @Autowired |
| | | private CodeGeneratorService codeGeneratorService; |
| | |
| | | @Autowired |
| | | private LWhFormScrappedCoreService lWhFormScrappedCoreService; |
| | | |
| | | private static String QUERY_LIST = "SELECT DISTINCT fs.* FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID WHERE 1 = 1 "; |
| | | private static String QUERY_LIST = |
| | | "SELECT DISTINCT fs.* FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID WHERE 1 = 1 "; |
| | | |
| | | private static final String QUERY_BF_DETAIL_LIST = "select fs.id,fs.BUSINESS_FORM_CODE,fsg.GOODS_TEMPLATE_NAME,fsg.BASE_GOODS_MODELS_NAME,fsg.COUNTS," |
| | | + "fs.AGENCY_NAME,OPERATOR_NAME,DEAL_TIME from l_wh_form_scrapped fs " |
| | | + "inner join l_wh_form_scrapped_goods fsg on fs.ID = fsg.FORM_SCRAPPED_ID where 1=1 "; |
| | | private static final String QUERY_BF_DETAIL_LIST = |
| | | "select fs.id,fs.BUSINESS_FORM_CODE,fsg.GOODS_TEMPLATE_NAME,fsg.BASE_GOODS_MODELS_NAME,fsg.COUNTS," |
| | | + "fs.AGENCY_NAME,OPERATOR_NAME,DEAL_TIME from l_wh_form_scrapped fs " |
| | | + "inner join l_wh_form_scrapped_goods fsg on fs.ID = fsg.FORM_SCRAPPED_ID where 1=1 "; |
| | | |
| | | /** |
| | | * 新增 |
| | | * |
| | | * @param param |
| | | * @param currentUser 当前登录用户 |
| | | * @param sysInfo 当前登录用户 |
| | | * @return 1.新增报废单 2.新增报废单物品 |
| | | * @param sysInfo 当前登录用户 |
| | | * @return 1.新增报废单 2.新增报废单物品 |
| | | */ |
| | | |
| | | @Override |
| | | public int add(LWhFormScrappedParam param, S_user_core currentUser, FinSysTenantUser sysInfo) { |
| | | //1.新增报废单记录 |
| | | // 1.新增报废单记录 |
| | | LWhFormScrapped lWhFormScrapped = new LWhFormScrapped(); |
| | | //报废单id |
| | | // 报废单id |
| | | long lWhFormScrappedId = IdUtil.generateId(); |
| | | lWhFormScrapped.setId(lWhFormScrappedId); |
| | | lWhFormScrapped.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Scrapped)); |
| | |
| | | |
| | | // 公用 |
| | | Long warehouseId = null; |
| | | //仓库名称 |
| | | // 仓库名称 |
| | | String wareHouseName = null; |
| | | warehouseId = param.getWarehouseId(); |
| | | //根据仓库id查询仓库 |
| | | // 根据仓库id查询仓库 |
| | | BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId); |
| | | if (warehouse == null) { |
| | | log.error("仓库不存在"); |
| | |
| | | lWhFormScrapped.setDealTime(param.getDealTime()); |
| | | lWhFormScrapped.setStates(0); |
| | | lWhFormScrapped.setUploadFiles(param.getUploadFiles()); |
| | | //根据部门id查询部门 |
| | | // 根据部门id查询部门 |
| | | FinSysTenantDepartment department = this.departmentService.getById(sysInfo.getSysDeptId()); |
| | | if (department != null) { |
| | | lWhFormScrapped.setDepartmentId(sysInfo.getSysDeptId()); |
| | |
| | | log.error("新增报废单失败"); |
| | | return 0; |
| | | } |
| | | //2.新增报废单物品记录 |
| | | //根据物品id查询物品 |
| | | // 2.新增报废单物品记录 |
| | | // 根据物品id查询物品 |
| | | for (LWhFormScrappedGoodsInfoParam goodsInfo : param.getScrappedGoodsInfo()) { |
| | | BaseGoodsTemplate goodsTemplate = this.baseGoodsTemplateService.get(new BaseGoodsTemplate(goodsInfo.getBaseGoodsTemplateId())); |
| | | BaseGoodsTemplate goodsTemplate = |
| | | this.baseGoodsTemplateService.get(new BaseGoodsTemplate(goodsInfo.getBaseGoodsTemplateId())); |
| | | if (goodsTemplate == null) { |
| | | log.error("该物品模板不存在"); |
| | | return 0; |
| | |
| | | log.error("新增报废单物品记录失败"); |
| | | return 0; |
| | | } |
| | | //获取规格型号id |
| | | List<Long> baseGoodsModelsIdList = scrappedGoodsParamList.stream().map(params -> params.getBaseGoodsModelsId()).collect(Collectors.toList()); |
| | | //根据规格型号id查询规格型号 |
| | | // 获取规格型号id |
| | | List<Long> baseGoodsModelsIdList = scrappedGoodsParamList.stream() |
| | | .map(params -> params.getBaseGoodsModelsId()).collect(Collectors.toList()); |
| | | // 根据规格型号id查询规格型号 |
| | | List<BaseGoodsModels> models = this.baseGoodsModelsService.selectByModelsIdList(baseGoodsModelsIdList); |
| | | if (CollectionUtils.isEmpty(models)) { |
| | | log.error("该型号商品不存在"); |
| | | return 0; |
| | | } |
| | | Map<Long, BaseGoodsModels> modelMap = models.stream().collect(Collectors.toMap(model -> model.getId(), model -> model)); |
| | | //获取报废原因code |
| | | List<String> scrappedCodeList = scrappedGoodsParamList.stream().map(params -> params.getScrappedCode()).collect(Collectors.toList()); |
| | | //根据报废原因code查询数据字典 |
| | | Map<Long, BaseGoodsModels> modelMap = |
| | | models.stream().collect(Collectors.toMap(model -> model.getId(), model -> model)); |
| | | // 获取报废原因code |
| | | List<String> scrappedCodeList = |
| | | scrappedGoodsParamList.stream().map(params -> params.getScrappedCode()).collect(Collectors.toList()); |
| | | // 根据报废原因code查询数据字典 |
| | | List<SDictData> SDictDataList = this.sDictDataService.selectByScrappedCodeList(scrappedCodeList); |
| | | Map<Long, String> scrappedNameMap = SDictDataList.stream().collect(Collectors.toMap(s -> s.getDict_code(), s -> s.getDict_label())); |
| | | Map<Long, String> scrappedNameMap = |
| | | SDictDataList.stream().collect(Collectors.toMap(s -> s.getDict_code(), s -> s.getDict_label())); |
| | | |
| | | List<LWhFormScrappedGoods> scrappedGoodsList = new ArrayList<>(); |
| | | for (LWhFormScrappedGoodsModelParams params : scrappedGoodsParamList) { |
| | | LWhFormScrappedGoods scrappedGoods = new LWhFormScrappedGoods(); |
| | | scrappedGoods.setId(IdUtil.generateId()); |
| | | //根据物品型号查询物品库存 |
| | | int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, scrappedGoods.getBaseGoodsModelsId(), 1, null); |
| | | // 根据物品型号查询物品库存 |
| | | int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, |
| | | scrappedGoods.getBaseGoodsModelsId(), 1, null); |
| | | if (params.getCounts() > goodsNum) { |
| | | log.error("报废数量大于库存数量"); |
| | | return 0; |
| | | } |
| | | scrappedGoods.setCounts(params.getCounts()); |
| | | //报废原因 |
| | | // 报废原因 |
| | | scrappedGoods.setScrappedCode(params.getScrappedCode()); |
| | | scrappedGoods.setScrappedName(scrappedNameMap.get(Long.valueOf(params.getScrappedCode()))); |
| | | scrappedGoods.setFormScrappedId(lWhFormScrappedId); |
| | | //物品模板 |
| | | // 物品模板 |
| | | scrappedGoods.setBaseGoodsTemplateId(goodsTemplate.getId()); |
| | | scrappedGoods.setGoodsTemplateName(goodsTemplate.getGoodsName()); |
| | | //规格型号 |
| | | // 规格型号 |
| | | Long baseGoodsModelsId = params.getBaseGoodsModelsId(); |
| | | BaseGoodsModels baseGoodsModels = modelMap.get(baseGoodsModelsId); |
| | | if (baseGoodsModels != null) { |
| | |
| | | return 0; |
| | | } |
| | | } |
| | | //3.根据报废单报废物品 |
| | | Long lWarehouseFlowId = this.lWhFormScrappedCoreService.outFormByTransId(lWhFormScrappedId, currentUser, param.getDealTime()); |
| | | // 3.根据报废单报废物品 |
| | | Long lWarehouseFlowId = |
| | | this.lWhFormScrappedCoreService.outFormByTransId(lWhFormScrappedId, currentUser, param.getDealTime()); |
| | | if (lWarehouseFlowId == null) { |
| | | log.error("根据出库单出库 失败"); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | * @Author 卢庆阳 |
| | | * @Date 2023/11/2 |
| | | */ |
| | | @Override |
| | | public PageUtil queryList(LWhFormScrappedQry param, FinSysTenantUser sysInfo) { |
| | | HashMap<String, Object> paramts = new HashMap<>(); |
| | | StringBuilder sql = new StringBuilder(QUERY_LIST); |
| | | //报废单号 |
| | | // 报废单号 |
| | | if (!StringUtils.isEmpty(param.getBusinessFormCode())) { |
| | | sql.append("and BUSINESS_FORM_CODE = :businessFormCode "); |
| | | paramts.put("businessFormCode", param.getBusinessFormCode()); |
| | | } |
| | | //物品名称 |
| | | // 物品名称 |
| | | if (!StringUtils.isEmpty(param.getGoodsTemplateName())) { |
| | | sql.append("and fsg.GOODS_TEMPLATE_NAME LIKE :goodsTemplateName "); |
| | | paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); |
| | | paramts.put("goodsTemplateName", |
| | | StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | //机构 |
| | | // 机构 |
| | | sql.append("and AGENCY_ID like :agencyId "); |
| | | if (param.getAgencyId() != null) { |
| | | paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT); |
| | | } else { |
| | | paramts.put("agencyId", sysInfo.getTenantId() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | //报废时间 |
| | | // 报废时间 |
| | | if (param.getStartTime() != null) { |
| | | sql.append("and DEAL_TIME >=:dealTimeStart "); |
| | | paramts.put("dealTimeStart", param.getStartTime() * 1000000); |
| | |
| | | * @Author 卢庆阳 |
| | | * @Date 2023/11/2 |
| | | */ |
| | | @Override |
| | | public LWhFormScrappedExtendVO getById(Long id) { |
| | | LWhFormScrappedExtendVO scrappedExtend = new LWhFormScrappedExtendVO(); |
| | | //1.查询报废单 |
| | | // 1.查询报废单 |
| | | LWhFormScrapped lWhFormScrapped = this.get(new LWhFormScrapped(id)); |
| | | if (lWhFormScrapped != null) { |
| | | BeanUtils.copyProperties(lWhFormScrapped, scrappedExtend); |
| | | } |
| | | //2.查询报废单 |
| | | // 2.查询报废单 |
| | | List<LWhFormScrappedGoods> scrappedGoodsList = this.scrappedGoodsService.getByFormScrappedId(id); |
| | | //通过baseGoodsTemplateId 进行分组 |
| | | Map<Long, List<LWhFormScrappedGoods>> map = scrappedGoodsList.stream().collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsTemplateId)); |
| | | //循环map的key和value |
| | | // 通过baseGoodsTemplateId 进行分组 |
| | | Map<Long, List<LWhFormScrappedGoods>> map = |
| | | scrappedGoodsList.stream().collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsTemplateId)); |
| | | // 循环map的key和value |
| | | List<FormScrappedGoodsVO> scrappedGoodsVO = Lists.newArrayList(); |
| | | for (Map.Entry<Long, List<LWhFormScrappedGoods>> entry : map.entrySet()) { |
| | | Long baseGoodsTemplateId = entry.getKey(); |
| | |
| | | * @param param |
| | | * @return |
| | | */ |
| | | @Override |
| | | public PageUtil queryDetailList(LWhFormScrappedQry param, FinSysTenantUser sysInfo) { |
| | | StringBuilder sql = new StringBuilder(QUERY_BF_DETAIL_LIST); |
| | | HashMap<String, Object> paramts = new HashMap<>(); |
| | | |
| | | //报废单号 |
| | | // 报废单号 |
| | | if (!StringUtils.isEmpty(param.getBusinessFormCode())) { |
| | | sql.append("and BUSINESS_FORM_CODE =:BUSINESS_FORM_CODE "); |
| | | paramts.put("BUSINESS_FORM_CODE", param.getBusinessFormCode()); |
| | | } |
| | | //物品名称 |
| | | // 物品名称 |
| | | if (!StringUtils.isEmpty(param.getGoodsTemplateName())) { |
| | | sql.append("and GOODS_TEMPLATE_NAME like:GOODS_TEMPLATE_NAME "); |
| | | paramts.put("GOODS_TEMPLATE_NAME", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); |
| | | paramts.put("GOODS_TEMPLATE_NAME", |
| | | StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | //规格型号 |
| | | // 规格型号 |
| | | if (param.getBaseGoodsModelsId() != null) { |
| | | sql.append("and BASE_GOODS_MODELS_ID =:BASE_GOODS_MODELS_ID "); |
| | | paramts.put("BASE_GOODS_MODELS_ID", param.getBaseGoodsModelsId()); |
| | | } |
| | | //机构 |
| | | // 机构 |
| | | sql.append("and AGENCY_ID like:AGENCY_ID "); |
| | | if (param.getAgencyId() != null) { |
| | | paramts.put("AGENCY_ID", param.getAgencyId() + StringUtils.CHAR_PERCENT); |
| | | } else { |
| | | paramts.put("AGENCY_ID", sysInfo.getTenantId() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | //创建人 |
| | | // 创建人 |
| | | if (!StringUtils.isEmpty(param.getOperatorName())) { |
| | | sql.append("and OPERATOR_NAME =:OPERATOR_NAME "); |
| | | paramts.put("OPERATOR_NAME", StringUtils.CHAR_PERCENT + param.getOperatorName() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | |
| | | //结束时间 |
| | | // 结束时间 |
| | | if (param.getStartTime() != null) { |
| | | sql.append("and DEAL_TIME >=:dealTimeStart "); |
| | | paramts.put("dealTimeStart", param.getStartTime() * 1000000); |
| | |
| | | } |
| | | |
| | | sql.append("ORDER BY DEAL_TIME DESC "); |
| | | GenericPager<Map<String, Object>> mapGenericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil()); |
| | | GenericPager<Map<String, Object>> mapGenericPager = |
| | | selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil()); |
| | | PageUtil pageUtil = new PageUtil<>(mapGenericPager); |
| | | List<FormScrappedGoodsDetailVO> result = Lists.newArrayList(); |
| | | mapGenericPager.getDatas().forEach(item -> { |
| | | FormScrappedGoodsDetailVO formScrappedGoodsDetailVO = MapUtils.convertMapToObj(item, FormScrappedGoodsDetailVO.class); |
| | | FormScrappedGoodsDetailVO formScrappedGoodsDetailVO = |
| | | MapUtils.convertMapToObj(item, FormScrappedGoodsDetailVO.class); |
| | | result.add(formScrappedGoodsDetailVO); |
| | | }); |
| | | pageUtil.setDatas(result); |
| | | return pageUtil; |
| | | } |
| | | |
| | | @Override |
| | | public List<ScrappedInfoExcelTemplate> export(Long id) { |
| | | String sql = |
| | | "SELECT\n" |
| | | + "\tBUSINESS_FORM_CODE,\n" |
| | | + "\tfs.DEAL_TIME,\n" |
| | | + "\tOPERATOR_NAME,\n" |
| | | + "\tAGENCY_NAME tenantName,\n" |
| | | + "\tGOODS_TEMPLATE_NAME templateName,\n" |
| | | + "\tBASE_GOODS_MODELS_NAME baseModelName,\n" |
| | | + "\tCOUNTS num,\n" |
| | | + "\tSCRAPPED_NAME deception,\n" |
| | | + "\tBEIZ remark\n" |
| | | + "FROM\n" |
| | | + "\tl_wh_form_scrapped_goods fsg\n" |
| | | + "\tLEFT JOIN l_wh_form_scrapped fs ON fs.id = fsg.FORM_SCRAPPED_ID\n" |
| | | + "WHERE\n" |
| | | + "\tfs.ID = :id\n" |
| | | + "\tAND STATES = 1"; |
| | | String sql = "SELECT\n" + "\tBUSINESS_FORM_CODE,\n" + "\tfs.DEAL_TIME,\n" + "\tOPERATOR_NAME,\n" |
| | | + "\tAGENCY_NAME tenantName,\n" + "\tGOODS_TEMPLATE_NAME templateName,\n" |
| | | + "\tBASE_GOODS_MODELS_NAME baseModelName,\n" + "\tCOUNTS num,\n" + "\tSCRAPPED_NAME deception,\n" |
| | | + "\tBEIZ remark\n" + "FROM\n" + "\tl_wh_form_scrapped_goods fsg\n" |
| | | + "\tLEFT JOIN l_wh_form_scrapped fs ON fs.id = fsg.FORM_SCRAPPED_ID\n" + "WHERE\n" + "\tfs.ID = :id\n" |
| | | + "\tAND STATES = 1"; |
| | | Map<String, Object> param = new HashMap<>(); |
| | | param.put("id", id); |
| | | List<Map<String, Object>> select = this.select(sql, param, new MapperUtil()); |
| | |
| | | } |
| | | List<ScrappedInfoExcelTemplate> list = Lists.newArrayList(); |
| | | select.forEach(item -> { |
| | | ScrappedInfoExcelTemplate inventoryExcelTemplate = MapUtils.convertMapToObj(item, ScrappedInfoExcelTemplate.class); |
| | | ScrappedInfoExcelTemplate inventoryExcelTemplate = |
| | | MapUtils.convertMapToObj(item, ScrappedInfoExcelTemplate.class); |
| | | list.add(inventoryExcelTemplate); |
| | | }); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<GoodsTemplateCountVO> getScrappedCountByBusinessId(Long businessId) { |
| | | List<GoodsTemplateCountVO> goodsTemplateCount = Lists.newArrayList(); |
| | | // 统计型号数量 |
| | | String sql = |
| | | "SELECT fsg.BASE_GOODS_TEMPLATE_ID id,fsg.GOODS_TEMPLATE_NAME goodsName,sum(counts) count FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID " |
| | | + "where fsg.FORM_SCRAPPED_ID =:businessId group by fsg.BASE_GOODS_TEMPLATE_ID"; |
| | | Map<String, Object> paramMap = new HashMap<>(); |
| | | paramMap.put("businessId", businessId); |
| | | List<Map<String, Object>> procureModelList = this.select(sql, paramMap, new MapperUtil()); |
| | | for (Map<String, Object> map : procureModelList) { |
| | | GoodsTemplateCountVO goodsTemplateCountVO = MapUtils.convertMapToObj(map, GoodsTemplateCountVO.class); |
| | | goodsTemplateCount.add(goodsTemplateCountVO); |
| | | } |
| | | return goodsTemplateCount; |
| | | } |
| | | |
| | | } |