package com.consum.base.service.impl; import com.consum.base.core.WhBusinessEnum; import com.consum.base.core.utils.MapUtils; import com.consum.base.core.utils.MapperUtil; import com.consum.base.pojo.dto.GoodModelInfoDTO; import com.consum.base.pojo.response.GoodsTemplateCountVO; import com.consum.base.service.LWhProcureModelService; import com.consum.model.po.LWhProcureModel; import com.walker.jdbc.service.BaseServiceImpl; import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; /** * @ClassName LWhProcureModelService * @Date 2023/10/24 * @Description * @Version 1.0 **/ @Service public class LWhProcureModelServiceImpl extends BaseServiceImpl implements LWhProcureModelService { private static String GET_MODEL_BY_FORM = "SELECT * FROM L_WH_PROCURE_MODEL WHERE 1=1 "; /** * 通过单据类型 单据ID查询该订单关联的设备型号以及数量 * * @return */ @Override public List getModelByForm(WhBusinessEnum businessType, Long businessId) { StringBuilder sql = new StringBuilder(GET_MODEL_BY_FORM); HashMap paramts = new HashMap<>(); if (businessType != null) { sql.append(" and BUSINESS_TYPE=:businessType "); paramts.put("businessType", businessType.getValue()); } if (businessId != null) { sql.append(" and BUSINESS_ID=:businessId "); paramts.put("businessId", businessId); } return this.select(sql.toString(), paramts, new LWhProcureModel()); } /** * 根据部门、物品查询调拨单 * * @param goodsTemplateId 物品ID * @param departmentId 部门ID * @return */ private static String GET_FF_ORDER_BY_GOODS_ID_AND_DEPT = "SELECT trans.ID TRANS_BUSINESS_ID,trans.BUSINESS_FORM_CODE,baseTemp.ID BASE_GOODS_TEMPLATE_ID,baseTemp.GOODS_NAME BASE_GOODS_TEMPLATE_NAME,sum(proModel.COUNTS) total_count,sum(proModel.USE_COUNT) use_count,trans.IN_TIME FROM L_WH_FORM_TRANSFER trans LEFT JOIN L_WH_PROCURE_MODEL proModel ON proModel.BUSINESS_ID=trans.id LEFT JOIN BASE_GOODS_MODELS baseModel ON proModel.BASE_GOODS_MODELS_ID=baseModel.id LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseTemp.id=baseModel.GOODS_TEMPLATES_ID WHERE proModel.BUSINESS_TYPE=4 AND proModel.USE_COUNT> 0 "; private static String GET_FF_ORDER_BY_GOODS_ID_AND_DEPT_END = " GROUP BY trans.ID,trans.BUSINESS_FORM_CODE,baseTemp.ID,baseTemp.GOODS_NAME,trans.IN_TIME order by trans.BUSINESS_FORM_CODE desc"; @Override public List> getFfOrderByGoodsIdAndDept(Long goodsTemplateId, Long departmentId) { StringBuilder sql = new StringBuilder(GET_FF_ORDER_BY_GOODS_ID_AND_DEPT); HashMap paramts = new HashMap<>(); if (goodsTemplateId != null) { sql.append(" AND baseTemp.ID=:goodsTemplateId "); paramts.put("goodsTemplateId", goodsTemplateId); } if (departmentId != null) { sql.append(" AND trans.IN_WAREHOUSE_TYPE=1 and trans.IN_WAREHOUSE_ID=:departmentId "); paramts.put("departmentId", departmentId); } return select(sql.append(GET_FF_ORDER_BY_GOODS_ID_AND_DEPT_END).toString(), paramts, new MapperUtil()); } /** * 根据部门、物品查询调拨单 * * @param goodsTemplateId 物品ID * @param departmentId 分发单ID * @return */ private static String GET_GOODS_USE_INFO_BY_FF_ORDER_AND_GOOD_ID = "SELECT baseModel.GOODS_TEMPLATES_ID,proModel.BASE_GOODS_MODELS_ID,baseModel.MODEL_NAME,baseModel.UNIT,CONCAT(baseCate.CLASSIFICATION,'类') CLASSIFICATION,modelUser.id MODEL_USER_id,modelUser.NOW_USER_PHONE,modelUser.NOW_USER_NAME,CASE WHEN modelUser.id IS NULL THEN proModel.USE_COUNT ELSE modelUser.USE_COUNT END AS user_Use_Count,CASE WHEN modelUser.id IS NULL THEN proModel.COUNTS ELSE modelUser.GOODS_NUM END AS GOODS_NUM FROM L_WH_PROCURE_MODEL proModel LEFT JOIN BASE_GOODS_MODELS baseModel ON proModel.BASE_GOODS_MODELS_ID=baseModel.id LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseTemp.id=baseModel.GOODS_TEMPLATES_ID LEFT JOIN BASE_CATEGORY baseCate ON baseCate.id=baseTemp.CATEGORY_ID LEFT JOIN L_WH_PROCURE_MODEL_USER modelUser ON modelUser.WH_PROCURE_MODEL_ID=proModel.id " ; private static String GET_GOODS_USE_INFO_BY_FF_ORDER_AND_GOOD_ID_END = "WHERE proModel.BUSINESS_TYPE=4 AND proModel.USE_COUNT> 0 "; @Override public List> getGoodsUseInfoByFfOrderAndGoodId(Long goodsTemplateId, Long transBusinessId) { StringBuilder sql = new StringBuilder(GET_GOODS_USE_INFO_BY_FF_ORDER_AND_GOOD_ID); StringBuilder sqlEnd = new StringBuilder(GET_GOODS_USE_INFO_BY_FF_ORDER_AND_GOOD_ID_END); HashMap paramts = new HashMap<>(); if (goodsTemplateId != null) { sqlEnd.append(" AND baseModel.GOODS_TEMPLATES_ID=:goodsTemplateId "); paramts.put("goodsTemplateId", goodsTemplateId); } if (transBusinessId != null) { sql.append("and modelUser.PROCURE_MODEL_USER_RECORD_ID = (select max(ID) from L_WH_PROCURE_MODEL_USER_RECORD where TRANS_BUSINESS_ID=:recordTransBusinessId)"); paramts.put("recordTransBusinessId", transBusinessId); sqlEnd.append(" AND proModel.BUSINESS_ID=:transBusinessId "); paramts.put("transBusinessId", transBusinessId); } else { sql.append("and modelUser.PROCURE_MODEL_USER_RECORD_ID = (select max(ID) from L_WH_PROCURE_MODEL_USER_RECORD)"); } return select(sql.append(sqlEnd).toString(), paramts, new MapperUtil()); } @Override public List getGoodsTemplateCountByBusinessId(Long businessId) { List goodsTemplateCount = Lists.newArrayList(); // 查询型号数量 String sql = "SELECT bgt.id,goods_name,sum(counts) count FROM " + "l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id " + "LEFT JOIN base_goods_template bgt ON bgm.goods_templates_id = bgt.id " + "WHERE pm.business_id =:businessId GROUP BY bgm.goods_templates_id"; HashMap param = new HashMap<>(); param.put("businessId", businessId); List> select = this.select(sql, param, new MapperUtil()); select.forEach(item -> { GoodsTemplateCountVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsTemplateCountVO.class); if (Objects.nonNull(goodsModelVO)) { goodsTemplateCount.add(goodsModelVO); } }); return goodsTemplateCount; } @Override public List getProcureCountByBusinessId(Long businessId) { List goodsTemplateCount = Lists.newArrayList(); // 查询采购型号统计数量 String sql = "select fpg.id,BASE_GOODS_TEMPLATE_ID,GOODS_TEMPLATE_NAME ,sum(counts) count " + "from L_WH_FORM_PROCURE_GOODS fpg left join L_WH_PROCURE_MODEL pm on fpg.id = pm.FROM_PROCURE_GOODS_ID " + "where fpg.WH_FORM_PROCURE_ID =:businessId group by pm.FROM_PROCURE_GOODS_ID"; Map paramMap = new HashMap<>(); paramMap.put("businessId", businessId); List> procureModelList = this.select(sql, paramMap, new MapperUtil()); for (Map map : procureModelList) { GoodsTemplateCountVO goodsTemplateCountVO = MapUtils.convertMapToObj(map, GoodsTemplateCountVO.class); if (Objects.nonNull(goodsTemplateCountVO)) { goodsTemplateCount.add(goodsTemplateCountVO); } } return goodsTemplateCount; } @Override public List getGoodsModelListByBusinessId(Long businessId, Long procureGoodId) { // 查询型号列表信息 List goodsModelList = Lists.newArrayList(); String sql = "SELECT bgt.id baseGoodsTemplateId,pm.id,CATEGORY_ID,CATEGORY_NAME,GOODS_NAME baseGoodsName,pm.BASE_GOODS_MODELS_NAME,bgm.UNIT,COUNTS,total_amount, " + "pm.BASE_GOODS_MODELS_ID,PRICE,WOREHOUSE_COUNT,bgt.CLASSIFICATION type FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID " + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID WHERE "; Map paramMap = new HashMap<>(); if (businessId != null) { sql += "pm.BUSINESS_ID = :businessId "; paramMap.put("businessId", businessId); } else { sql += "pm.FROM_PROCURE_GOODS_ID =:procureGoodId "; paramMap.put("procureGoodId", procureGoodId); } List> modelList = select(sql, paramMap, new MapperUtil()); modelList.forEach(item -> { GoodModelInfoDTO goodsModelVO = MapUtils.convertMapToObj(item, GoodModelInfoDTO.class); if (Objects.nonNull(goodsModelVO)) { goodsModelList.add(goodsModelVO); } }); return goodsModelList; } @Override public List getModelByForm1(WhBusinessEnum businessType, Long businessId) { StringBuilder sql = new StringBuilder("SELECT * FROM L_WH_PROCURE_MODEL WHERE 1=1 "); HashMap paramts = new HashMap<>(); if (businessType != null) { sql.append(" and BUSINESS_TYPE=:businessType "); paramts.put("businessType", businessType.getValue()); } if (businessId != null) { sql.append(" and BUSINESS_ID=:businessId "); paramts.put("businessId", businessId); } List select = select(sql.toString(), paramts, new LWhProcureModel()); return select; } }