package com.thhy.mobile.modules.biz.pipecheckrecord.service.impl;
|
|
import com.thhy.general.common.BasicStatus;
|
import com.thhy.general.common.enums.MouldFreeType;
|
import com.thhy.general.common.enums.ProListenType;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.general.exception.BasicException;
|
import com.thhy.general.utils.ScreenMqUtils;
|
import com.thhy.general.utils.UserInfoUtils;
|
import com.thhy.mobile.modules.biz.mouldcheck.entity.MouldFree;
|
import com.thhy.mobile.modules.biz.pipecheckrecord.entity.*;
|
import com.thhy.mobile.modules.biz.pipecheckrecord.mapper.PipeCheckRecordMapper;
|
import com.thhy.mobile.modules.biz.pipecheckrecord.service.PipeCheckRecordService;
|
import com.thhy.mobile.modules.biz.pipeinfo.entity.MaterialInfo;
|
import com.thhy.mobile.modules.biz.pipeinfo.entity.PipeInfo;
|
import com.thhy.mobile.modules.biz.pipeinfo.mapper.PipeInfoMapper;
|
import org.redisson.SlotCallback;
|
import org.redisson.api.RLock;
|
import org.redisson.api.RedissonClient;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* 服务实现类
|
* @author zhang_xiao_bo
|
* @since 2023-05-08 19:43:32
|
*/
|
@Service
|
public class PipeCheckRecordServiceImpl implements PipeCheckRecordService {
|
|
|
|
@Autowired
|
private PipeCheckRecordMapper pipeCheckRecordMapper;
|
|
@Autowired
|
private PipeInfoMapper pipeInfoMapper;
|
|
@Autowired
|
private ScreenMqUtils screenMqUtils;
|
|
@Autowired
|
private RedissonClient redissonClient;
|
|
public PipeCheckRecord get(Serializable id){
|
return pipeCheckRecordMapper.queryById(id);
|
}
|
|
public List<PipeCheckRecord> findList(PipeCheckRecord pipeCheckRecord){
|
return pipeCheckRecordMapper.findList(pipeCheckRecord);
|
}
|
|
/**
|
* 增加和修改
|
* @param pipeCheckRecord
|
*/
|
@Transactional
|
public void addPipeCheckRecord(PipeCheckRecord pipeCheckRecord){
|
if(pipeCheckRecord.getPipeCheckId() == null){
|
//增加操作
|
pipeCheckRecordMapper.insert(pipeCheckRecord);
|
}else{
|
//修改操作
|
pipeCheckRecordMapper.update(pipeCheckRecord);
|
}
|
|
}
|
|
/**
|
* 修改
|
* @param pipeCheckRecord
|
*/
|
public void update(PipeCheckRecord pipeCheckRecord){
|
pipeCheckRecordMapper.update(pipeCheckRecord);
|
}
|
|
/**
|
* 删除
|
* @param pipeCheckId
|
*/
|
public void delete(Serializable pipeCheckId){
|
pipeCheckRecordMapper.deletelogic(pipeCheckId);
|
}
|
|
@Override
|
@Transactional
|
public void check(PipeCheckDto pipeCheckDto) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
PipeInfo pipeInfo = pipeInfoMapper.queryByPipeNum(pipeCheckDto.getPipeNum());
|
if(pipeInfo==null){
|
throw new BasicException(BasicStatus.SCAN_QR_IS_EORROR);
|
}
|
if(pipeInfo.getCheckResult()!=0){
|
throw new BasicException(BasicStatus.PRODUCE_NUM_SCAN_AGAIN);
|
}
|
//记录
|
PipeCheckRecord pipeCheckRecord = new PipeCheckRecord();
|
pipeCheckRecord.setPipeId(pipeInfo.getPipeId());
|
pipeCheckRecord.setCheckResult(1);
|
pipeCheckRecord.setCheckUser(userInfo.getUserId());
|
pipeCheckRecordMapper.insert(pipeCheckRecord);
|
//更新
|
pipeInfoMapper.updateCheckResult(pipeInfo.setCheckResult(1).setCheckUser(userInfo.getUserId()));
|
|
|
//模具表 改为 空闲状态
|
pipeInfoMapper.updateSysMouldFree(new MouldFree(pipeInfo.getModId(), MouldFreeType.FREE.getValue()));
|
//管片表 改为 已出模
|
pipeInfoMapper.updatePipeOutMod(pipeInfo.getPipeNum());
|
//模具检查记录 改为 已出模
|
pipeInfoMapper.updateModCheck(pipeInfo.getModId());
|
//出窑
|
pipeInfoMapper.pipeIdOutUpdate(pipeInfo.getPipeId());
|
|
|
List<MaterialInfo> materialInfoList = pipeInfoMapper.queryPipeDeplete(pipeInfo);
|
|
//减库存
|
RLock lock = redissonClient.getLock("materlock");
|
try {
|
if (lock.tryLock(5, 10, TimeUnit.SECONDS)) {
|
for(MaterialInfo materialInfo : materialInfoList){
|
MaterialInfo current = pipeInfoMapper.queryMaterStock(materialInfo.getMaterialName(), userInfo.getCompanyId());
|
|
MaterialStockRecord materialStockRecord = new MaterialStockRecord();
|
materialStockRecord.setType(2);
|
materialStockRecord.setOpType(2); //减库存
|
materialStockRecord.setMaterialName(materialInfo.getMaterialName());
|
materialStockRecord.setMaterialValue(materialInfo.getMaterialValue());
|
materialStockRecord.setBeforeStock(current.getMaterialValue());
|
materialStockRecord.setCompanyId(userInfo.getCompanyId());
|
materialStockRecord.setPipeId(pipeInfo.getPipeId());
|
materialStockRecord.setPipeNum(pipeInfo.getPipeNum());
|
double changeValue = current.getMaterialValue()-materialInfo.getMaterialValue();
|
materialStockRecord.setAfterStock(changeValue);
|
pipeInfoMapper.updateMaterStockRecord(materialStockRecord);
|
|
pipeInfoMapper.updateMaterStock(materialInfo.getMaterialName(), changeValue, userInfo.getCompanyId());
|
}
|
} else {
|
throw new BasicException(BasicStatus.OP_IS_TIMEOUT);
|
}
|
} catch (InterruptedException e) {
|
throw new BasicException(BasicStatus.OP_IS_REPEAT);
|
} finally {
|
if (lock.isLocked()) {
|
lock.unlock();
|
}
|
}
|
|
int count = pipeInfoMapper.ringCompleteByRingNum(pipeInfo.getRingNum());
|
if(count>0){
|
screenMqUtils.send(ProListenType.PIPEYEARMONTH);
|
}
|
}
|
|
@Override
|
public void updateResult(PipeCheckDto pipeCheckDto) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
//PipeCheckRecord pcr = pipeCheckRecordMapper.queryById(pipeCheckDto.getPipeCheckId());
|
PipeInfo pipeInfo = pipeInfoMapper.queryById(pipeCheckDto.getPipeId());
|
//记录
|
PipeCheckRecord pipeCheckRecord = new PipeCheckRecord();
|
pipeCheckRecord.setPipeId(pipeInfo.getPipeId());
|
pipeCheckRecord.setCheckResult(pipeCheckDto.getCheckResult());
|
pipeCheckRecord.setCheckUser(userInfo.getUserId());
|
pipeCheckRecord.setRemark(pipeCheckDto.getRemark());
|
pipeCheckRecord.setCheckReason(pipeCheckDto.getCheckReason());
|
pipeCheckRecordMapper.insert(pipeCheckRecord);
|
System.out.println("#######################"+pipeCheckDto.getCheckResult());
|
if(pipeCheckDto.getCheckResult()==3){ //报废
|
//pipeCheckRecordMapper.insert(pipeCheckRecord);
|
List<PipeCheckFile> fileList = pipeCheckDto.getFileList()==null?new ArrayList<>():pipeCheckDto.getFileList();
|
System.out.println(fileList.size());
|
for(PipeCheckFile cf : fileList){
|
System.out.println("jiance"+cf==null);
|
cf.setPipeCheckId(pipeCheckRecord.getPipeCheckId());
|
pipeCheckRecordMapper.insertCheckFile(cf);
|
}
|
}
|
//更新
|
pipeInfoMapper.updateCheckResult(pipeInfo.setCheckResult(pipeCheckDto.getCheckResult()).setCheckUser(userInfo.getUserId()));
|
}
|
|
@Override
|
public List<PipeCheckListVo> pipeCheckList(PipeCheckDto pipeCheckDto) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
if(pipeCheckDto==null)pipeCheckDto = new PipeCheckDto();
|
pipeCheckDto.setCompanyId(userInfo.getCompanyId());
|
return pipeCheckRecordMapper.pipeCheckList(pipeCheckDto);
|
}
|
|
@Override
|
@Transactional
|
public void updateResultPass(PipeCheckDto pipeCheckDto) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
PipeInfo pipeInfo = pipeInfoMapper.queryById(pipeCheckDto.getPipeId());
|
if(pipeInfo.getCheckResult()==1){
|
throw new BasicException(BasicStatus.CURRENT_IS_PASS);
|
}
|
//记录
|
PipeCheckRecord pipeCheckRecord = new PipeCheckRecord();
|
pipeCheckRecord.setPipeId(pipeInfo.getPipeId());
|
pipeCheckRecord.setCheckResult(1);
|
pipeCheckRecord.setCheckUser(userInfo.getUserId());
|
pipeCheckRecordMapper.insert(pipeCheckRecord);
|
|
//更新
|
pipeInfoMapper.updateCheckResult(pipeInfo.setCheckResult(1).setCheckUser(userInfo.getUserId()));
|
}
|
}
|