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<LWhProcureModel> getModelByForm(WhBusinessEnum businessType, Long businessId) {
|
StringBuilder sql = new StringBuilder(GET_MODEL_BY_FORM);
|
HashMap<String, Object> 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<Map<String, Object>> getFfOrderByGoodsIdAndDept(Long goodsTemplateId, Long departmentId) {
|
StringBuilder sql = new StringBuilder(GET_FF_ORDER_BY_GOODS_ID_AND_DEPT);
|
HashMap<String, Object> 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<Map<String, Object>> 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<String, Object> 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<GoodsTemplateCountVO> getGoodsTemplateCountByBusinessId(Long businessId) {
|
List<GoodsTemplateCountVO> 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<String, Object> param = new HashMap<>();
|
param.put("businessId", businessId);
|
List<Map<String, Object>> 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<GoodsTemplateCountVO> getProcureCountByBusinessId(Long businessId) {
|
List<GoodsTemplateCountVO> 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<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);
|
if (Objects.nonNull(goodsTemplateCountVO)) {
|
goodsTemplateCount.add(goodsTemplateCountVO);
|
}
|
}
|
return goodsTemplateCount;
|
}
|
|
@Override
|
public List<GoodModelInfoDTO> getGoodsModelListByBusinessId(Long businessId, Long procureGoodId) {
|
// 查询型号列表信息
|
List<GoodModelInfoDTO> 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<String, Object> 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<Map<String, Object>> 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<LWhProcureModel> getModelByForm1(WhBusinessEnum businessType, Long businessId) {
|
StringBuilder sql = new StringBuilder("SELECT * FROM L_WH_PROCURE_MODEL WHERE 1=1 ");
|
HashMap<String, Object> 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<LWhProcureModel> select = select(sql.toString(), paramts, new LWhProcureModel());
|
return select;
|
}
|
}
|