package com.consum.base.core;
import cn.hutool.core.convert.Convert;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.LockManage;
import com.consum.base.service.GoodsBaseServiceImpl;
import com.consum.base.service.LWarehouseFlowService;
import com.consum.base.service.LWhGoodsRecordService;
import com.consum.base.service.LWhGoodsService;
import com.consum.base.service.impl.LWhGoodsRecordDetailsService;
import com.consum.model.po.DepFormScrapped;
import com.consum.model.po.LWarehouseFlow;
import com.consum.model.po.LWhGoodsRecord;
import com.iplatform.model.po.S_user_core;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.web.ResponseValue;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName DepFormScrappedCoreServiceImpl
* @Author cy
* @Date 2023/12/2
* @Description
* @Version 1.0
**/
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public class DepFormScrappedCoreServiceImpl {
@Resource
private GoodsBaseServiceImpl goodsBaseService;
@Resource
private LWhGoodsService lWhGoodsService;
@Resource
private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
@Resource
private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
@Resource
private LWarehouseFlowService lWarehouseFlowService;
/**
* 根据报废单报废:修改调拨单中可退回数量;仓库中物品状态设置为报废;生成一个保费流水;更新报废型号表中,物品价值
*
* 1.找到需要报废的型号, 按同一个
*
* @param lWhFormScrappedId // * @param isBack 是否退回
*/
public ResponseValue updateScrapped(Long lWhFormScrappedId, S_user_core currentUser, Long dealTime) {
// 查询报废单状态
DepFormScrapped depFormScrapped = new DepFormScrapped(lWhFormScrappedId);
depFormScrapped = goodsBaseService.get(depFormScrapped);
//状态 1=待报废;2=已报废
if (depFormScrapped == null || depFormScrapped.getStates() != 1) {
return ResponseValue.error("请检查报废单");
}
Long userId = currentUser.getId();
String nickName = currentUser.getNick_name();
// 根据报废单 查询需要报废的型号数量
List