From 01107e8aadfaf1e84a971d8eeb9ab37e1c5569f3 Mon Sep 17 00:00:00 2001 From: cy <1664593601@qq.com> Date: 星期五, 01 十二月 2023 09:38:56 +0800 Subject: [PATCH] feat: 部门退回/报废公用接口 --- consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java | 126 ++++++++++++++++++++++++++++------------- 1 files changed, 85 insertions(+), 41 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java b/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java index e53939c..5313986 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java @@ -1,15 +1,17 @@ package com.consum.base.service; -import com.consum.model.po.LWhGoods; +import com.consum.base.core.utils.MapperUtil; import com.walker.infrastructure.utils.CollectionUtils; import com.walker.jdbc.service.BaseServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; /** * @ClassName LWhGoodsService @@ -31,7 +33,7 @@ */ private static String query_Goods_Model_Num = "SELECT COUNT(1) from L_WH_GOODS where 1=1"; - public int queryGoodsModelNum(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Short states, Short buyType) { + public int queryGoodsModelNum(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states, Integer buyType) { StringBuilder sql = new StringBuilder(query_Goods_Model_Num); Map<String, Object> paramts = new HashMap<>(); @@ -71,8 +73,8 @@ */ private static String QUERY_OUT_GOODS_ID = "SELECT * FROM L_WH_GOODS WHERE 1=1"; - public List<Map<String, Object>> queryOutGoods(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Short states, Short buyType, - Integer goodsModelNum) { + public List<Map<String, Object>> queryOutGoods(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states, Integer buyType, + Integer goodsModelNum) { StringBuilder sql = new StringBuilder(QUERY_OUT_GOODS_ID); Map<String, Object> paramts = new HashMap<>(); if (warehouseType != null) { @@ -109,13 +111,30 @@ * @param goodsModelNum 鍙栧嚭鐨勬暟閲� * @return */ - public List<Long> queryOutGoodsId(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Short states, Short buyType, Integer goodsModelNum) { + public List<Long> queryOutGoodsId(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states, Integer buyType, Integer goodsModelNum) { List<Map<String, Object>> outGoods = queryOutGoods(warehouseType, warehouseId, baseGoodsModelsId, states, buyType, goodsModelNum); if (CollectionUtils.isEmpty(outGoods)) { return null; } List<Long> whGoodsIds = outGoods.stream().map(map -> (Long) map.get("id")).collect(Collectors.toList()); return whGoodsIds; + } + + private static String QUERY_GOODS_PRICE_BY_ID = "SELECT sum(PRICE)totalPrice from L_WH_GOODS goods where 1=1"; + + public long queryGoodsPriceById(List<Long> goodsIds) { + StringBuilder sql = new StringBuilder(QUERY_GOODS_PRICE_BY_ID); + Map<String, Object> paramts = new HashMap<>(); + if (!CollectionUtils.isEmpty(goodsIds)) { + sql.append(" and id in(:goodsIds)"); + paramts.put("goodsIds", goodsIds); + } + List<Map<String, Object>> map = this.select(sql.toString(), paramts); + if (CollectionUtils.isEmpty(map)) { + return 0; + } + BigDecimal totalPrice = (BigDecimal) map.get(0).get("totalPrice"); + return totalPrice.longValue(); } @@ -137,12 +156,12 @@ private static String QUERY_SCRAPPED_GOODS_END = " ORDER BY goods.PRICE DESC,goods.PROCURE_DATE ASC,goods.id"; public List<Map<String, Object>> queryScrappedGoods(Integer warehouseType, - Long warehouseId, - Long transBusinessId, - String nowUserName, - Long baseGoodsModelsId, - Short states, - Integer goodsModelNum) { + Long warehouseId, + Long transBusinessId, + String nowUserName, + Long baseGoodsModelsId, + Short states, + Integer goodsModelNum) { if (warehouseType == null) { warehouseType = 0; } @@ -174,7 +193,7 @@ } sql.append(QUERY_SCRAPPED_GOODS_END); if (goodsModelNum != null) { - sql.append(" limit").append(goodsModelNum); + sql.append(" limit ").append(goodsModelNum); } return select(sql.toString(), paramts); } @@ -192,14 +211,14 @@ * @return */ public List<Long> queryScrappedGoodsIds(Integer warehouseType, - Long warehouseId, - Long transBusinessId, - String nowUserName, - Long baseGoodsModelsId, - Short states, - Integer goodsModelNum) { + Long warehouseId, + Long transBusinessId, + String nowUserName, + Long baseGoodsModelsId, + Short states, + Integer goodsModelNum) { List<Map<String, Object>> outGoods = queryScrappedGoods(warehouseType, warehouseId, transBusinessId, nowUserName, baseGoodsModelsId, states, - goodsModelNum); + goodsModelNum); if (CollectionUtils.isEmpty(outGoods)) { return null; } @@ -219,26 +238,51 @@ private static String MOD_GOODS_TRANSFERING_PREFIX = "update L_WH_GOODS set "; public int modGoodsTransfering(List<Long> whGoods, Integer warehouseType, Long toWarehouseId, String toWarehouseName, Integer states) { - - List<LWhGoods> params = new ArrayList<>(); - whGoods.stream().forEach(id -> { - LWhGoods lWhGoods = new LWhGoods(); - lWhGoods.setId(id); - if (toWarehouseId != null) { - lWhGoods.setWarehouseType(warehouseType); - } - if (toWarehouseId != null) { - lWhGoods.setWarehouseId(toWarehouseId); - } - if (toWarehouseName != null) { - lWhGoods.setWarehouseName(toWarehouseName); - } - if (states != null) { - lWhGoods.setStates(states); - } - params.add(lWhGoods); - }); - return updateBatch(params); + StringBuilder sql = new StringBuilder(MOD_GOODS_TRANSFERING_PREFIX); + ArrayList<Object> params = new ArrayList<>(); + if (warehouseType != null) { + sql.append(", WAREHOUSE_TYPE=?"); + params.add(warehouseType); + } + if (toWarehouseId != null) { + sql.append(", WAREHOUSE_ID=?"); + params.add(toWarehouseId); + } + if (toWarehouseName != null) { + sql.append(", WAREHOUSE_NAME=?"); + params.add(toWarehouseName); + } + if (states != null) { + sql.append(", STATES=?"); + params.add(states); + } + sql.deleteCharAt(22); + sql.append(" where id in(").append(StringUtils.join(whGoods, ",")).append(")"); + return update(sql.toString(), params.toArray()); } + private static String GOODS_NUM_PRICE = "SELECT t.tenantId,count(id) total_Num,count(CASE WHEN STATES=2 THEN 1 END) xia_fa_num,IFNULL(round(sum(PRICE)/1000000,2),0) total_price,IFNULL(ROUND(count(CASE WHEN STATES=2 THEN 1 END)/count(id),4),0)*100 AS zhan_you_percent,count(CASE COST_TYPE WHEN 1 THEN 1 END) a_total_Num,count(CASE COST_TYPE WHEN 2 THEN 1 END) b_total_Num,count(CASE COST_TYPE WHEN 3 THEN 1 END) c_total_Num,IFNULL( round( sum( CASE COST_TYPE WHEN 1 THEN PRICE END )/ 1000000, 2 ), 0 ) a_total_price,IFNULL( round( sum( CASE COST_TYPE WHEN 2 THEN PRICE END )/ 1000000, 2 ), 0 ) b_total_price,IFNULL( round( sum( CASE COST_TYPE WHEN 3 THEN PRICE END )/ 1000000, 2 ), 0 ) c_total_price FROM (SELECT tCangKu.tenantId,tKuCun.id,tKuCun.STATES,tKuCun.COST_TYPE,tKuCun.price FROM (SELECT tenant.id tenantId,tenant.NAME AS org_name,ware.*FROM fin_sys_tenant tenant RIGHT JOIN ( SELECT 0 WAREHOUSE_TYPE,id,AGENCY_ID,WAREHOUSE_NAME FROM BASE_WAREHOUSE UNION ALL SELECT 1 WAREHOUSE_TYPE,id,TENANT_ID AGENCY_ID,`NAME` WAREHOUSE_NAME FROM fin_sys_tenant_department) ware ON tenant.id=ware.AGENCY_ID WHERE 1=1 "; + private static String GOODS_NUM_PRICE_END = ") tCangKu LEFT JOIN L_WH_GOODS tKuCun ON tCangKu.WAREHOUSE_TYPE=tKuCun.WAREHOUSE_TYPE AND tCangKu.id=tKuCun.WAREHOUSE_ID AND tKuCun.STATES BETWEEN 1 AND 2 where tKuCun.id is not null) t GROUP BY t.tenantId"; + + //鎸夋満鏋勭粺璁$墿鍝佷环鍊笺�佹暟閲�/閲戦绛� + public List<Map<String, Object>> getGoodsNumPrice(Long agencyId) { + StringBuilder sql = new StringBuilder(GOODS_NUM_PRICE); + Map<String, Object> paramts = new HashMap<>(); + sql.append(" and tenant.id=:agencyId"); + paramts.put("agencyId", agencyId); + return select(sql.append(GOODS_NUM_PRICE_END).toString(), paramts, new MapperUtil()); + } + + + private static String GET_GOODS_NUM_BY_MONTH = "SELECT monthT.month_Num,IFNULL(datat.total_Num,0) total_Num,IFNULL(datat.add_total_Num,0) add_total_Num,IFNULL(datat.reduce_total_Num,0) reduce_total_Num FROM (SELECT monthT.month_Num FROM (SELECT ( SELECT 1) month_Num UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) monthT) monthT LEFT JOIN ( SELECT t.tenantId,count(t.THIS_COUNT) total_Num,count(CASE t.THIS_TYPE WHEN 1 THEN t.THIS_COUNT END) add_total_Num,count(CASE t.THIS_TYPE WHEN 2 THEN t.THIS_COUNT END) reduce_total_Num,SUBSTR(DEAL_TIME,5,2) data_month FROM ( SELECT tCangKu.tenantId,tKuCun.id,tKuCun.THIS_TYPE,tKuCun.THIS_COUNT,tKuCun.DEAL_TIME FROM (SELECT tenant.id tenantId,tenant.NAME AS org_name,ware.*FROM fin_sys_tenant tenant RIGHT JOIN ( SELECT 0 WAREHOUSE_TYPE,id,AGENCY_ID,WAREHOUSE_NAME FROM BASE_WAREHOUSE UNION ALL SELECT 1 WAREHOUSE_TYPE,id,TENANT_ID AGENCY_ID,`NAME` WAREHOUSE_NAME FROM fin_sys_tenant_department) ware ON tenant.id=ware.AGENCY_ID WHERE 1=1 "; + private static String GET_GOODS_NUM_BY_MONTH_END = ")tCangKu LEFT JOIN L_WH_GOODS_RECORD tKuCun ON tCangKu.WAREHOUSE_TYPE=tKuCun.WAREHOUSE_TYPE AND tCangKu.id=tKuCun.WAREHOUSE_ID and tKuCun.DEAL_TIME between cast(CONCAT(DATE_FORMAT(NOW(), '%Y'),'1231240000') as UNSIGNED) and cast(CONCAT(DATE_FORMAT(NOW(), '%Y'),'0101000000') as UNSIGNED)) t GROUP BY t.tenantId,SUBSTR(DEAL_TIME,5,2)) datat ON datat.data_month=monthT.month_Num ORDER BY monthT.month_Num ASC"; + + //鎸夋満鏋勭粺璁$墿鍝佷环鍊笺�佹暟閲�/閲戦绛� + public List<Map<String, Object>> getGoodsNumByMonth(Long agencyId) { + StringBuilder sql = new StringBuilder(GET_GOODS_NUM_BY_MONTH); + Map<String, Object> paramts = new HashMap<>(); + sql.append(" and tenant.id=:agencyId"); + paramts.put("agencyId", agencyId); + return select(sql.append(GET_GOODS_NUM_BY_MONTH_END).toString(), paramts, new MapperUtil()); + } } -- Gitblit v1.9.1