优化商品库存报表
This commit is contained in:
@@ -367,7 +367,7 @@ public class MaterialController {
|
|||||||
src = workbook.getSheet(0);
|
src = workbook.getSheet(0);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
res = materialService.importExcel(src);
|
res = materialService.importExcel(src, request);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import com.jsh.erp.service.depot.DepotService;
|
|||||||
import com.jsh.erp.service.depotItem.DepotItemService;
|
import com.jsh.erp.service.depotItem.DepotItemService;
|
||||||
import com.jsh.erp.service.log.LogService;
|
import com.jsh.erp.service.log.LogService;
|
||||||
import com.jsh.erp.service.materialCategory.MaterialCategoryService;
|
import com.jsh.erp.service.materialCategory.MaterialCategoryService;
|
||||||
|
import com.jsh.erp.service.redis.RedisService;
|
||||||
import com.jsh.erp.service.unit.UnitService;
|
import com.jsh.erp.service.unit.UnitService;
|
||||||
import com.jsh.erp.service.user.UserService;
|
import com.jsh.erp.service.user.UserService;
|
||||||
import com.jsh.erp.utils.BaseResponseInfo;
|
import com.jsh.erp.utils.BaseResponseInfo;
|
||||||
@@ -67,6 +68,8 @@ public class MaterialService {
|
|||||||
private DepotService depotService;
|
private DepotService depotService;
|
||||||
@Resource
|
@Resource
|
||||||
private MaterialExtendService materialExtendService;
|
private MaterialExtendService materialExtendService;
|
||||||
|
@Resource
|
||||||
|
private RedisService redisService;
|
||||||
|
|
||||||
public Material getMaterial(long id)throws Exception {
|
public Material getMaterial(long id)throws Exception {
|
||||||
Material result=null;
|
Material result=null;
|
||||||
@@ -182,7 +185,8 @@ public class MaterialService {
|
|||||||
String number = jsonObj.getString("initStock");
|
String number = jsonObj.getString("initStock");
|
||||||
Long depotId = jsonObj.getLong("id");
|
Long depotId = jsonObj.getLong("id");
|
||||||
if(StringUtil.isNotEmpty(number) && Double.valueOf(number)>0) {
|
if(StringUtil.isNotEmpty(number) && Double.valueOf(number)>0) {
|
||||||
insertStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number));
|
insertInitialStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number));
|
||||||
|
insertCurrentStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -216,13 +220,16 @@ public class MaterialService {
|
|||||||
if (jsonObj.get("id") != null && jsonObj.get("initStock") != null) {
|
if (jsonObj.get("id") != null && jsonObj.get("initStock") != null) {
|
||||||
String number = jsonObj.getString("initStock");
|
String number = jsonObj.getString("initStock");
|
||||||
Long depotId = jsonObj.getLong("id");
|
Long depotId = jsonObj.getLong("id");
|
||||||
//先清除再插入
|
//初始库存-先清除再插入
|
||||||
MaterialInitialStockExample example = new MaterialInitialStockExample();
|
MaterialInitialStockExample example = new MaterialInitialStockExample();
|
||||||
example.createCriteria().andMaterialIdEqualTo(material.getId()).andDepotIdEqualTo(depotId);
|
example.createCriteria().andMaterialIdEqualTo(material.getId()).andDepotIdEqualTo(depotId);
|
||||||
materialInitialStockMapper.deleteByExample(example);
|
materialInitialStockMapper.deleteByExample(example);
|
||||||
if (StringUtil.isNotEmpty(number) && Double.valueOf(number) > 0) {
|
if (StringUtil.isNotEmpty(number) && Double.valueOf(number) > 0) {
|
||||||
insertStockByMaterialAndDepot(depotId, material.getId(), parseBigDecimalEx(number));
|
insertInitialStockByMaterialAndDepot(depotId, material.getId(), parseBigDecimalEx(number));
|
||||||
}
|
}
|
||||||
|
//更新当前库存
|
||||||
|
Long tenantId = redisService.getTenantId(request);
|
||||||
|
depotItemService.updateCurrentStockFun(material.getId(), depotId, tenantId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -435,7 +442,7 @@ public class MaterialService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||||
public BaseResponseInfo importExcel(Sheet src) throws Exception {
|
public BaseResponseInfo importExcel(Sheet src, HttpServletRequest request) throws Exception {
|
||||||
List<Depot> depotList= depotService.getDepot();
|
List<Depot> depotList= depotService.getDepot();
|
||||||
int depotCount = depotList.size();
|
int depotCount = depotList.size();
|
||||||
List<MaterialWithInitStock> mList = new ArrayList<>();
|
List<MaterialWithInitStock> mList = new ArrayList<>();
|
||||||
@@ -577,13 +584,16 @@ public class MaterialService {
|
|||||||
Long depotId = null;
|
Long depotId = null;
|
||||||
for(Depot depot: depotList){
|
for(Depot depot: depotList){
|
||||||
BigDecimal stock = stockMap.get(depot.getId());
|
BigDecimal stock = stockMap.get(depot.getId());
|
||||||
//先清除再插入
|
//初始库存-先清除再插入
|
||||||
MaterialInitialStockExample example = new MaterialInitialStockExample();
|
MaterialInitialStockExample example = new MaterialInitialStockExample();
|
||||||
example.createCriteria().andMaterialIdEqualTo(mId).andDepotIdEqualTo(depot.getId());
|
example.createCriteria().andMaterialIdEqualTo(mId).andDepotIdEqualTo(depot.getId());
|
||||||
materialInitialStockMapper.deleteByExample(example);
|
materialInitialStockMapper.deleteByExample(example);
|
||||||
if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) {
|
if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) {
|
||||||
depotId = depot.getId();
|
depotId = depot.getId();
|
||||||
insertStockByMaterialAndDepot(depotId, mId, stock);
|
insertInitialStockByMaterialAndDepot(depotId, mId, stock);
|
||||||
|
//更新当前库存
|
||||||
|
Long tenantId = redisService.getTenantId(request);
|
||||||
|
depotItemService.updateCurrentStockFun(mId, depotId, tenantId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -643,7 +653,7 @@ public class MaterialService {
|
|||||||
* @param stock
|
* @param stock
|
||||||
*/
|
*/
|
||||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||||
public void insertStockByMaterialAndDepot(Long depotId, Long mId, BigDecimal stock){
|
public void insertInitialStockByMaterialAndDepot(Long depotId, Long mId, BigDecimal stock){
|
||||||
MaterialInitialStock materialInitialStock = new MaterialInitialStock();
|
MaterialInitialStock materialInitialStock = new MaterialInitialStock();
|
||||||
materialInitialStock.setDepotId(depotId);
|
materialInitialStock.setDepotId(depotId);
|
||||||
materialInitialStock.setMaterialId(mId);
|
materialInitialStock.setMaterialId(mId);
|
||||||
@@ -651,6 +661,21 @@ public class MaterialService {
|
|||||||
materialInitialStockMapper.insertSelective(materialInitialStock); //存入初始库存
|
materialInitialStockMapper.insertSelective(materialInitialStock); //存入初始库存
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入当前库存
|
||||||
|
* @param depotId
|
||||||
|
* @param mId
|
||||||
|
* @param stock
|
||||||
|
*/
|
||||||
|
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||||
|
public void insertCurrentStockByMaterialAndDepot(Long depotId, Long mId, BigDecimal stock){
|
||||||
|
MaterialCurrentStock materialCurrentStock = new MaterialCurrentStock();
|
||||||
|
materialCurrentStock.setDepotId(depotId);
|
||||||
|
materialCurrentStock.setMaterialId(mId);
|
||||||
|
materialCurrentStock.setCurrentNumber(stock);
|
||||||
|
materialCurrentStockMapper.insertSelective(materialCurrentStock); //存入初始库存
|
||||||
|
}
|
||||||
|
|
||||||
public List<MaterialVo4Unit> getMaterialEnableSerialNumberList(String q, Integer offset, Integer rows)throws Exception {
|
public List<MaterialVo4Unit> getMaterialEnableSerialNumberList(String q, Integer offset, Integer rows)throws Exception {
|
||||||
List<MaterialVo4Unit> list =null;
|
List<MaterialVo4Unit> list =null;
|
||||||
try{
|
try{
|
||||||
|
|||||||
@@ -320,19 +320,23 @@
|
|||||||
|
|
||||||
<select id="getListWithStock" resultMap="ResultMapListWithStock">
|
<select id="getListWithStock" resultMap="ResultMapListWithStock">
|
||||||
select m.*, me.commodity_unit unitName, mc.name categoryName, me.bar_code,
|
select m.*, me.commodity_unit unitName, mc.name categoryName, me.bar_code,
|
||||||
ifnull(me.purchase_decimal,0) purchase_decimal, ifnull(sum(mis.number),0) initialStock,
|
ifnull(me.purchase_decimal,0) purchase_decimal,
|
||||||
|
(select ifnull(sum(mis.number),0) from jsh_material_initial_stock mis where mis.material_id = m.id
|
||||||
|
<if test="depotId != null">
|
||||||
|
and mis.depot_id = #{depotId}
|
||||||
|
</if>
|
||||||
|
) initialStock,
|
||||||
ifnull(sum(mcs.current_number),0) currentStock,
|
ifnull(sum(mcs.current_number),0) currentStock,
|
||||||
sum(ifnull(me.purchase_decimal, 0) * ifnull(mcs.current_number, 0)) currentStockPrice
|
sum(ifnull(me.purchase_decimal, 0) * ifnull(mcs.current_number, 0)) currentStockPrice
|
||||||
FROM jsh_material m
|
FROM jsh_material m
|
||||||
left JOIN jsh_material_extend me on m.id = me.material_id and ifnull(me.delete_Flag,'0') !='1'
|
left JOIN jsh_material_extend me on m.id = me.material_id and ifnull(me.delete_Flag,'0') !='1'
|
||||||
left join jsh_material_initial_stock mis on m.id = mis.material_id and ifnull(mis.delete_flag,'0') !='1'
|
|
||||||
left join jsh_material_current_stock mcs on m.id = mcs.material_id and ifnull(mcs.delete_flag,'0') !='1'
|
left join jsh_material_current_stock mcs on m.id = mcs.material_id and ifnull(mcs.delete_flag,'0') !='1'
|
||||||
left JOIN jsh_unit u on m.unit_id = u.id and ifnull(u.delete_Flag,'0') !='1'
|
left JOIN jsh_unit u on m.unit_id = u.id and ifnull(u.delete_Flag,'0') !='1'
|
||||||
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
|
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
|
||||||
where 1=1
|
where 1=1
|
||||||
and me.default_flag=1
|
and me.default_flag=1
|
||||||
<if test="depotId != null">
|
<if test="depotId != null">
|
||||||
and (mis.depot_id = #{depotId} or mcs.depot_id = #{depotId})
|
and mcs.depot_id = #{depotId}
|
||||||
</if>
|
</if>
|
||||||
<if test="idList.size()>0">
|
<if test="idList.size()>0">
|
||||||
and m.category_id in
|
and m.category_id in
|
||||||
@@ -356,14 +360,13 @@
|
|||||||
select count(tb.id) from
|
select count(tb.id) from
|
||||||
(select m.id from jsh_material m
|
(select m.id from jsh_material m
|
||||||
left JOIN jsh_material_extend me on m.id = me.material_id and ifnull(me.delete_Flag,'0') !='1'
|
left JOIN jsh_material_extend me on m.id = me.material_id and ifnull(me.delete_Flag,'0') !='1'
|
||||||
left join jsh_material_initial_stock mis on m.id = mis.material_id and ifnull(mis.delete_flag,'0') !='1'
|
|
||||||
left join jsh_material_current_stock mcs on m.id = mcs.material_id and ifnull(mcs.delete_flag,'0') !='1'
|
left join jsh_material_current_stock mcs on m.id = mcs.material_id and ifnull(mcs.delete_flag,'0') !='1'
|
||||||
left JOIN jsh_unit u on m.unit_id = u.id and ifnull(u.delete_Flag,'0') !='1'
|
left JOIN jsh_unit u on m.unit_id = u.id and ifnull(u.delete_Flag,'0') !='1'
|
||||||
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
|
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
|
||||||
where 1=1
|
where 1=1
|
||||||
and me.default_flag=1
|
and me.default_flag=1
|
||||||
<if test="depotId != null">
|
<if test="depotId != null">
|
||||||
and (mis.depot_id = #{depotId} or mcs.depot_id = #{depotId})
|
and mcs.depot_id = #{depotId}
|
||||||
</if>
|
</if>
|
||||||
<if test="idList.size()>0">
|
<if test="idList.size()>0">
|
||||||
and m.category_id in
|
and m.category_id in
|
||||||
@@ -385,14 +388,13 @@
|
|||||||
sum(ifnull(me.purchase_decimal,0)*ifnull(mcs.current_number,0)) currentStockPrice
|
sum(ifnull(me.purchase_decimal,0)*ifnull(mcs.current_number,0)) currentStockPrice
|
||||||
from jsh_material m
|
from jsh_material m
|
||||||
left JOIN jsh_material_extend me on m.id = me.material_id and ifnull(me.delete_Flag,'0') !='1'
|
left JOIN jsh_material_extend me on m.id = me.material_id and ifnull(me.delete_Flag,'0') !='1'
|
||||||
left join jsh_material_initial_stock mis on m.id = mis.material_id and ifnull(mis.delete_flag,'0') !='1'
|
|
||||||
left join jsh_material_current_stock mcs on m.id = mcs.material_id and ifnull(mcs.delete_flag,'0') !='1'
|
left join jsh_material_current_stock mcs on m.id = mcs.material_id and ifnull(mcs.delete_flag,'0') !='1'
|
||||||
left JOIN jsh_unit u on m.unit_id = u.id and ifnull(u.delete_Flag,'0') !='1'
|
left JOIN jsh_unit u on m.unit_id = u.id and ifnull(u.delete_Flag,'0') !='1'
|
||||||
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
|
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
|
||||||
where 1=1
|
where 1=1
|
||||||
and me.default_flag=1
|
and me.default_flag=1
|
||||||
<if test="depotId != null">
|
<if test="depotId != null">
|
||||||
and (mis.depot_id = #{depotId} or mcs.depot_id = #{depotId})
|
and mcs.depot_id = #{depotId}
|
||||||
</if>
|
</if>
|
||||||
<if test="idList.size()>0">
|
<if test="idList.size()>0">
|
||||||
and m.category_id in
|
and m.category_id in
|
||||||
|
|||||||
Reference in New Issue
Block a user