|
|
@ -5,23 +5,42 @@ import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.countadjustRecord.vo.CountadjustRecordDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.countadjustRecord.vo.CountadjustRecordMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.countadjustRequest.vo.CountadjustRequestMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.countadjustRequest.vo.CountadjustRequestMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; |
|
|
|
import com.win.module.wms.convert.countadjustRecord.CountadjustRecordDetailConvert; |
|
|
|
import com.win.module.wms.convert.countadjustRecord.CountadjustRecordMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.balance.BalanceDO; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.countadjustRecord.CountadjustRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; |
|
|
|
import com.win.module.wms.dal.mysql.balance.BalanceMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countadjustRecord.CountadjustRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countadjustRecord.CountadjustRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
|
import com.win.module.wms.service.transaction.TransactionService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
@ -40,7 +59,17 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain |
|
|
|
@Resource |
|
|
|
private CountadjustRecordMainMapper countadjustRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private CountadjustRecordDetailMapper countadjustRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private TransactionService transactionService; |
|
|
|
@Resource |
|
|
|
private BalanceMapper balanceMapper; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<CountadjustRequestMainDO> getCountadjustRequestMainSenior(CustomConditions conditions) { |
|
|
@ -67,10 +96,10 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain |
|
|
|
public Integer closeCountadjustRequestMain(Long id) { |
|
|
|
// 校验存在存在下级单据
|
|
|
|
CountadjustRequestMainDO mainDO = validateCountadjustRequestMainExists(id); |
|
|
|
// Long count = countadjustRecordMainMapper.selectByRequestNumber(mainDO.getNumber());
|
|
|
|
// if(count > 0) {
|
|
|
|
// throw new ServiceException(COUNTADJUST_REQUEST_JOB_EXISTS);
|
|
|
|
// }
|
|
|
|
Long count = countadjustRecordMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
throw new ServiceException(COUNTADJUST_REQUEST_RECORD_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
if(!flag) { |
|
|
@ -93,7 +122,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "countadjustRequest", "提交了到货校验申请", TrendsTypeEnum.UPDATE); |
|
|
|
return countadjustRequestMainMapper.updateById(mainDO); |
|
|
@ -112,7 +141,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "countadjustRequest", "审批同意了到货校验申请", TrendsTypeEnum.UPDATE); |
|
|
|
return countadjustRequestMainMapper.updateById(mainDO); |
|
|
@ -130,7 +159,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用执行方法
|
|
|
|
this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
trendsApi.createTrends(id, "countadjustRequest", "执行了到货校验申请", TrendsTypeEnum.UPDATE); |
|
|
|
return countadjustRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
@ -151,12 +180,64 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 生成收货检验任务,不要改动事务传播方式,否则会有事务问题 |
|
|
|
* @param mainDO 收货检验主 |
|
|
|
* @param detailDOList 收货检验子 |
|
|
|
* 生成盘点调整记录,并更新库存 |
|
|
|
* @param mainDO 盘点调整主 |
|
|
|
* @param detailDOList 盘点调整子 |
|
|
|
*/ |
|
|
|
private void generateJob(CountadjustRequestMainDO mainDO, List<CountadjustRequestDetailDO> detailDOList) { |
|
|
|
|
|
|
|
private void generateRecord(CountadjustRequestMainDO mainDO, List<CountadjustRequestDetailDO> detailDOList) { |
|
|
|
CountadjustRecordMainCreateReqVO countadjustRecordMainCreateReqVO = new CountadjustRecordMainCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(mainDO, countadjustRecordMainCreateReqVO); |
|
|
|
countadjustRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.COUNT_ADJUST_RECORD.getCode()); |
|
|
|
countadjustRecordMainCreateReqVO.setNumber(number); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountadjustRecord"); |
|
|
|
countadjustRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
CountadjustRecordMainDO countadjustRecordMainDO = CountadjustRecordMainConvert.INSTANCE.convert(countadjustRecordMainCreateReqVO); |
|
|
|
countadjustRecordMainMapper.insert(countadjustRecordMainDO); |
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
for(CountadjustRequestDetailDO countadjustRequestDetailDO : detailDOList) { |
|
|
|
CountadjustRecordDetailCreateReqVO countadjustRecordDetailCreateReqVO = new CountadjustRecordDetailCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(countadjustRequestDetailDO, countadjustRecordDetailCreateReqVO); |
|
|
|
countadjustRecordDetailCreateReqVO.setNumber(number); |
|
|
|
countadjustRecordDetailMapper.insert(CountadjustRecordDetailConvert.INSTANCE.convert(countadjustRecordDetailCreateReqVO)); |
|
|
|
//添加库存事务list
|
|
|
|
BalanceDO balanceDO = balanceMapper.getBalanceQty(countadjustRecordDetailCreateReqVO.getPackingNumber(), countadjustRecordDetailCreateReqVO.getItemCode(), countadjustRecordDetailCreateReqVO.getBatch(), countadjustRecordDetailCreateReqVO.getInventoryStatus(), countadjustRecordDetailCreateReqVO.getLocationCode()); |
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(countadjustRecordDetailCreateReqVO, transactionCreateReqVO); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO countAdjustBusinesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountAdjust"); |
|
|
|
transactionCreateReqVO.setBusinessType(countAdjustBusinesstypeDO.getCode()); |
|
|
|
if(countadjustRecordDetailCreateReqVO.getAdjustQty().compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
TransactiontypeDO transactionTypeDOIn = jobUtils.selectDocumentFromTransactionType(countAdjustBusinesstypeDO.getInTransactionType()); |
|
|
|
transactionCreateReqVO.setInventoryAction(transactionTypeDOIn.getInventoryAction()); |
|
|
|
transactionCreateReqVO.setTransactionType(transactionTypeDOIn.getCode()); |
|
|
|
} else { |
|
|
|
TransactiontypeDO transactionTypeDOOut = jobUtils.selectDocumentFromTransactionType(countAdjustBusinesstypeDO.getOutTransactionType()); |
|
|
|
transactionCreateReqVO.setInventoryAction(transactionTypeDOOut.getInventoryAction()); |
|
|
|
transactionCreateReqVO.setTransactionType(transactionTypeDOOut.getCode()); |
|
|
|
} |
|
|
|
transactionCreateReqVO.setBusinessType(mainDO.getBusinessType()); |
|
|
|
transactionCreateReqVO.setLocationCode(countadjustRecordDetailCreateReqVO.getLocationCode()); |
|
|
|
transactionCreateReqVO.setOwnerCode(countadjustRecordDetailCreateReqVO.getOwnerCode()); |
|
|
|
transactionCreateReqVO.setSinglePrice(balanceDO.getSinglePrice()); |
|
|
|
transactionCreateReqVO.setAmount(balanceDO.getAmount()); |
|
|
|
transactionCreateReqVO.setArriveDate(balanceDO.getArriveDate()); |
|
|
|
transactionCreateReqVO.setProduceDate(balanceDO.getProduceDate()); |
|
|
|
transactionCreateReqVO.setExpireDate(balanceDO.getExpireDate()); |
|
|
|
transactionCreateReqVO.setRecordNumber(number); |
|
|
|
transactionCreateReqVO.setQty(countadjustRecordDetailCreateReqVO.getAdjustQty().abs());//绝对值
|
|
|
|
transactionCreateReqVO.setInventoryStatus(countadjustRecordDetailCreateReqVO.getInventoryStatus()); |
|
|
|
transactionCreateReqVO.setWarehouseCode(countadjustRecordMainDO.getWarehouseCode()); |
|
|
|
transactionCreateReqVO.setBatch(countadjustRecordDetailCreateReqVO.getBatch()); |
|
|
|
transactionCreateReqVO.setWorker(String.valueOf(getLoginUserId())); |
|
|
|
transactionCreateReqVO.setPackingNumber(countadjustRecordDetailCreateReqVO.getPackingNumber()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
} |
|
|
|
//增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
//变更记录
|
|
|
|
trendsApi.createTrends(countadjustRecordMainDO.getId(), "countadjustRequest", "生成了盘点调整记录", TrendsTypeEnum.CREATE); |
|
|
|
} |
|
|
|
|
|
|
|
private CountadjustRequestMainDO validateCountadjustRequestMainExists(Long id) { |
|
|
|