package com.thhy.mobile.modules.biz.steelcheck.service.impl;
|
|
import com.alibaba.nacos.api.utils.StringUtils;
|
import com.thhy.general.common.BasicStatus;
|
import com.thhy.general.common.enums.CheckResult;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.general.exception.BasicException;
|
import com.thhy.general.utils.DeepCopyUtils;
|
import com.thhy.general.utils.UserInfoUtils;
|
import com.thhy.mobile.modules.biz.steelcheck.entity.*;
|
import com.thhy.mobile.modules.biz.steelcheck.service.SteelCheckService;
|
import com.thhy.mobile.modules.biz.steelcheckrecord.entity.SteelCheckRecord;
|
import com.thhy.mobile.modules.biz.steelcheckrecord.mapper.SteelCheckRecordMapper;
|
import com.thhy.mobile.modules.biz.steelproduce.entity.SteelProduce;
|
import com.thhy.mobile.modules.biz.steelproduce.mapper.SteelProduceMapper;
|
import com.thhy.mobile.modules.biz.steelrecord.entity.SteelRecord;
|
import com.thhy.mobile.modules.biz.steelrecord.mapper.SteelRecordMapper;
|
import com.thhy.mobile.modules.biz.steelstock.entity.SteelConsume;
|
import com.thhy.mobile.modules.biz.steelstock.entity.SteelStock;
|
import com.thhy.mobile.modules.biz.steelstock.mapper.SteelStockMapper;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
|
@Service
|
public class SteelCheckServiceImpl implements SteelCheckService {
|
|
@Autowired
|
private SteelProduceMapper steelProduceMapper;
|
|
@Autowired
|
private SteelCheckRecordMapper recordMapper;
|
|
@Autowired
|
private SteelStockMapper steelStockMapper;
|
|
@Autowired
|
private SteelRecordMapper steelRecordMapper;
|
|
private Logger logger = LoggerFactory.getLogger("钢筋笼质检");
|
|
|
@Override
|
@Transactional
|
public void check(SteelCheckDto steelCheckDto) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
String produceNum = steelCheckDto.getProduceNumber();
|
if(StringUtils.isEmpty(produceNum)){
|
throw new BasicException(BasicStatus.SCAN_QR_IS_EORROR);
|
}
|
SteelProduce steelProduce = steelProduceMapper.queryByProduceNum(produceNum);
|
if(steelProduce==null){
|
throw new BasicException(BasicStatus.PRODUCE_NUM_IS_NOT_EXIST);
|
}
|
int count = recordMapper.countByProduceNum(produceNum);
|
if(count>0){
|
throw new BasicException(BasicStatus.PRODUCE_NUM_SCAN_AGAIN);
|
}
|
//更新状态
|
steelProduceMapper.updateQualified(new SteelProduce(produceNum, CheckResult.pass.getValue(),userInfo.getUserId()));
|
//记录
|
SteelCheckRecord steelCheckRecord = new SteelCheckRecord();
|
steelCheckRecord.setCheckResult(CheckResult.pass.getValue());
|
steelCheckRecord.setSteelProduceId(steelProduce.getSteelProduceId());
|
steelCheckRecord.setSteelProduceNum(produceNum);
|
steelCheckRecord.setCreateUser(userInfo.getUserId());
|
recordMapper.insert(steelCheckRecord);
|
//增加钢筋笼库存记录
|
SteelStockRecord steelStockRecord = new SteelStockRecord(steelProduce);
|
steelStockRecord.setSteelRecordId(steelCheckRecord.getCheckId());
|
steelStockMapper.insertSteelStockRecord(steelStockRecord);
|
int stockRecord = steelStockMapper.countStockByPSRB(new SteelStock(steelProduce));
|
if(stockRecord>0){
|
//增加钢筋笼库存
|
steelStockMapper.updatePlusStock(new SteelStock(steelProduce));
|
}else{
|
SteelStock steelStock = new SteelStock(steelProduce);
|
steelStock.setStock(1);
|
steelStockMapper.insert(steelStock);
|
}
|
//钢筋消耗的理论耗量
|
List<SteelConsume> steelConsumeList = steelStockMapper.queryByPSRB(new SteelStock(steelProduce));
|
for(SteelConsume steelConsume : steelConsumeList){
|
steelStockMapper.updateMinusSteelStock(steelConsume); //jian
|
//库存记录
|
SteelRecord steelRecord = new SteelRecord();
|
steelRecord.setProId(steelProduce.getProId());
|
steelRecord.setStockType(2);
|
steelRecord.setSteelId(steelConsume.getSteelId());
|
steelRecord.setChangeStock((steelConsume.getNeedNum()*steelConsume.getCoefficient()));
|
steelRecord.setLineCode(produceNum);
|
steelRecord.setCreateUser(userInfo.getUserId());
|
steelRecordMapper.insert(steelRecord);
|
}
|
}
|
|
@Override
|
public List<SteelCheckListVo> queryCheckList(SteelProduce steelProduce) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
if(steelProduce==null)steelProduce = new SteelProduce();
|
return steelProduceMapper.queryCheckList(steelProduce.setCompanyId(sysUserInfo.getCompanyId()));
|
}
|
|
@Override
|
@Transactional
|
public void updateCheckResult(UpdateCheckResultDto updateCheckResultDto) {
|
logger.info("本次要修改为 "+updateCheckResultDto.getCheckResult());
|
SteelProduce steelProduce = steelProduceMapper.queryByProduceNum(updateCheckResultDto.getSteelProduceNum());
|
Integer qualified = steelProduce.getIsQualified();
|
logger.info("查询出状态为 "+steelProduce.getIsQualified());
|
if(updateCheckResultDto.getCheckResult()==1){
|
throw new BasicException(BasicStatus.PARAM_IS_ERROR);
|
}
|
if(steelProduce.getIsQualified().equals(updateCheckResultDto.getCheckResult())){
|
throw new BasicException(BasicStatus.STATUS_IS_UPDATED);
|
}
|
|
|
//更新记录
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
SteelCheckRecord steelCheckRecord = new SteelCheckRecord();
|
DeepCopyUtils.copy(updateCheckResultDto,steelCheckRecord);
|
steelCheckRecord.setCreateUser(userInfo.getUserId());
|
recordMapper.insert(steelCheckRecord);
|
|
if(steelCheckRecord.getCheckResult()==3){
|
//报废
|
List<CheckFile> checkFileList = updateCheckResultDto.getCheckFiles();
|
for(CheckFile checkFile : checkFileList){
|
checkFile.setSteelCheckId(steelCheckRecord.getCheckId());
|
steelRecordMapper.insertCheckFile(checkFile);
|
}
|
}
|
//更新住状态
|
steelProduceMapper.updateQualified(new SteelProduce(updateCheckResultDto.getSteelProduceNum(), steelCheckRecord.getCheckResult(),userInfo.getUserId()));
|
//合格状态————————>不合格
|
if (steelCheckRecord.getCheckResult()!=3) {
|
//减【钢筋笼】库存就记录删除标志
|
steelStockMapper.updateSteelStockRecordByCheckId(2,steelCheckRecord.getCheckId());
|
//减【钢筋笼】库存
|
steelStockMapper.updateMinusStock(new SteelStock(steelProduce));
|
//加【钢筋】库存记录
|
List<SteelRecord> steelRecordList = steelRecordMapper.findListByProduceNum(updateCheckResultDto.getSteelProduceNum());
|
for(SteelRecord steelRecord : steelRecordList){
|
steelStockMapper.updatePlusSteelStock(new SteelConsume(steelRecord.getSteelId(),steelRecord.getChangeStock()));
|
}
|
//删除【钢筋】库存记录
|
steelRecordMapper.deleteByProduceNum(updateCheckResultDto.getSteelProduceNum());
|
}
|
//合格状态————————>报废
|
if(qualified==1&&updateCheckResultDto.getCheckResult()==3){
|
//减【钢筋笼】库存就记录删除标志
|
steelStockMapper.updateSteelStockRecordByCheckId(2,steelCheckRecord.getCheckId());
|
//减【钢筋笼】库存
|
steelStockMapper.updateMinusStock(new SteelStock(steelProduce));
|
}
|
//不合格状态————————>报废
|
if(qualified==2&&updateCheckResultDto.getCheckResult()==3){//不合格状态————————>报废
|
//钢筋消耗的理论耗量
|
List<SteelConsume> steelConsumeList = steelStockMapper.queryByPSRB(new SteelStock(steelProduce));
|
for(SteelConsume steelConsume : steelConsumeList){
|
steelStockMapper.updateMinusSteelStock(steelConsume); //jian
|
//库存记录
|
SteelRecord steelRecord = new SteelRecord();
|
steelRecord.setProId(steelProduce.getProId());
|
steelRecord.setStockType(2);
|
steelRecord.setSteelId(steelConsume.getSteelId());
|
steelRecord.setChangeStock((steelConsume.getNeedNum()*steelConsume.getCoefficient()));
|
steelRecord.setLineCode(updateCheckResultDto.getSteelProduceNum());
|
steelRecord.setCreateUser(userInfo.getUserId());
|
steelRecordMapper.insert(steelRecord);
|
}
|
}
|
}
|
|
@Override
|
@Transactional
|
public void updateCheckPass(UpdateCheckResultDto updateCheckResultDto) {
|
SteelProduce steelProduce = steelProduceMapper.queryByProduceNum(updateCheckResultDto.getSteelProduceNum());
|
if(steelProduce.getIsQualified()==1){
|
throw new BasicException(BasicStatus.CURRENT_IS_PASS);
|
}
|
if(steelProduce.getIsQualified()==3){
|
throw new BasicException(BasicStatus.STEEL_GIVEN_NOT_TO_PASS);
|
}
|
//更新记录
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
SteelCheckRecord steelCheckRecord = new SteelCheckRecord();
|
DeepCopyUtils.copy(updateCheckResultDto,steelCheckRecord);
|
steelCheckRecord.setCheckResult(1);
|
steelCheckRecord.setCreateUser(userInfo.getUserId());
|
recordMapper.insert(steelCheckRecord);
|
//更新住状态
|
steelProduceMapper.updateQualified(new SteelProduce(updateCheckResultDto.getSteelProduceNum(), 1,userInfo.getUserId()));
|
|
//钢筋笼】库存就记录删除标志改为未删除
|
steelStockMapper.updateSteelStockRecordByCheckId(1,steelCheckRecord.getCheckId());
|
//加【钢筋笼】库存
|
steelStockMapper.updatePlusStock(new SteelStock(steelProduce));
|
//钢筋消耗的理论耗量
|
List<SteelConsume> steelConsumeList = steelStockMapper.queryByPSRB(new SteelStock(steelProduce));
|
for(SteelConsume steelConsume : steelConsumeList){
|
steelStockMapper.updateMinusSteelStock(steelConsume); //jian
|
//库存记录
|
SteelRecord steelRecord = new SteelRecord();
|
steelRecord.setProId(steelProduce.getProId());
|
steelRecord.setStockType(2);
|
steelRecord.setSteelId(steelConsume.getSteelId());
|
steelRecord.setChangeStock((steelConsume.getNeedNum()*steelConsume.getCoefficient()));
|
steelRecord.setLineCode(updateCheckResultDto.getSteelProduceNum());
|
steelRecord.setCreateUser(userInfo.getUserId());
|
steelRecordMapper.insert(steelRecord);
|
}
|
}
|
}
|