package doumeemes.service.ext.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import doumeemes.core.constants.ResponseStatus;
|
import doumeemes.core.exception.BusinessException;
|
import doumeemes.core.model.LoginUserInfo;
|
import doumeemes.core.model.PageData;
|
import doumeemes.core.model.PageWrap;
|
import doumeemes.core.utils.Constants;
|
import doumeemes.core.utils.DateUtil;
|
import doumeemes.core.utils.redis.RedisUtil;
|
import doumeemes.dao.business.AppliancesMapper;
|
import doumeemes.dao.business.EndcheckDetailMapper;
|
import doumeemes.dao.business.WorkorderMapper;
|
import doumeemes.dao.business.WorkorderRecordMapper;
|
import doumeemes.dao.business.model.*;
|
import doumeemes.dao.ext.AppliancesExtMapper;
|
import doumeemes.dao.ext.EndcheckDetailExtMapper;
|
import doumeemes.dao.ext.EndcheckExtMapper;
|
import doumeemes.dao.ext.WorkorderHistoryExtMapper;
|
import doumeemes.dao.ext.bean.EndCheckBean;
|
import doumeemes.dao.ext.bean.EndCheckDetailBean;
|
import doumeemes.dao.ext.bean.EndCheckUnQualifiedBean;
|
import doumeemes.dao.ext.dto.QueryEndcheckExtDTO;
|
import doumeemes.dao.ext.vo.EndcheckExtListVO;
|
import doumeemes.dao.system.SystemDictDataMapper;
|
import doumeemes.dao.system.model.SystemDictData;
|
import doumeemes.service.business.impl.AppliancesServiceImpl;
|
import doumeemes.service.ext.EndcheckExtService;
|
import doumeemes.service.system.impl.SystemDictDataServiceImpl;
|
import io.swagger.models.auth.In;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 工单类-终检检验信息表ExtService实现
|
* @author 江蹄蹄
|
* @since 2022/07/07 16:15
|
*/
|
@Service
|
public class EndcheckExtServiceImpl implements EndcheckExtService {
|
|
@Autowired
|
private RedisTemplate<String, Object> redisTemplate;
|
|
@Autowired
|
private EndcheckExtMapper endcheckExtMapper;
|
|
@Autowired
|
private WorkorderMapper workorderMapper;
|
|
@Autowired
|
private EndcheckDetailExtMapper endcheckDetailExtMapper;
|
|
@Autowired
|
private SystemDictDataMapper systemDictDataMapper;
|
|
@Autowired
|
private AppliancesMapper appliancesMapper;
|
|
@Autowired
|
private WorkorderHistoryExtMapper workorderHistoryExtMapper;
|
|
@Autowired
|
private EndcheckDetailMapper endcheckDetailMapper;
|
|
@Autowired
|
private WorkorderRecordMapper workorderRecordMapper;
|
|
@Autowired
|
private SystemDictDataServiceImpl systemDictDataServiceimpl;
|
|
@Autowired
|
private AppliancesExtMapper appliancesExtMapper;
|
|
@Override
|
public PageData<EndcheckExtListVO> findPage(PageWrap<QueryEndcheckExtDTO> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!");
|
}
|
//只能查看当前根组织的数据
|
pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
|
pageWrap.getModel().setDepartId(user.getCurComDepartment().getId());
|
//数据权限
|
|
List<Integer> procedureIds=user.getProcedureIds();//权限范围内工序
|
if(procedureIds!=null){
|
if(procedureIds.size()>0){
|
pageWrap.getModel().setProcedureIds(procedureIds);
|
}
|
|
}
|
List<Integer> dataPermission = user.getDepartPermissionList();
|
if(dataPermission!=null){
|
pageWrap.getModel().setDepartIds(dataPermission);
|
pageWrap.getModel().setCreateUser(user.getId());
|
/* if(dataPermission.size() > 0){
|
//否则走数据权限
|
pageWrap.getModel().setDepartIds(dataPermission);
|
}*/
|
}
|
PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
|
|
List<EndcheckExtListVO> result = endcheckExtMapper.selectList(pageWrap.getModel());
|
return PageData.from(new PageInfo<>(result));
|
}
|
|
@Override
|
public EndcheckExtListVO selectOneById(Integer id) {
|
EndcheckExtListVO endCheckExtListVO = endcheckExtMapper.selectOneById(id);
|
List<EndcheckDetail> endCheckDetailList = endcheckDetailMapper.selectList(new QueryWrapper<EndcheckDetail>()
|
.select(" * , ( select a.code from appliances a where a.id = endcheck_detail.APPLIANCES_ID ) as appliancesCode " +
|
", ( select a.code from appliances a where a.id = endcheck_detail.QUALIFIED_APPLIANCE_ID ) as unAppliancesCode ")
|
.eq("ENDCHECK_ID",id)
|
);
|
endCheckExtListVO.setEndCheckDetailList(endCheckDetailList);
|
return endCheckExtListVO;
|
}
|
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public void uploadEndCheck(EndCheckBean endCheckBean, LoginUserInfo userInfo){
|
//检验工单是否做过外观检
|
// if(endcheckExtMapper.selectCount(new QueryWrapper<Endcheck>()
|
// .eq("OBJ_ID",endCheckBean.getWorkOrderId())
|
// .eq("CHECK_TYPE", Constants.ONE)
|
// )>0){
|
// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "此工单已做外观终检,无法再进行操作");
|
// };
|
// if(endcheckExtMapper.selectCount(new QueryWrapper<Endcheck>()
|
// .eq("OBJ_ID",endCheckBean.getWorkOrderId())
|
// .eq("CHECK_TYPE", Constants.ZERO)
|
// .eq("DONE_TYPE", Constants.ONE)
|
// )>0){
|
// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "此工单已检具检不合格,无法再进行操作");
|
// };
|
//获取工单信息
|
Workorder workorder = workorderMapper.selectById(endCheckBean.getWorkOrderId());
|
if(Objects.isNull(workorder)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), ResponseStatus.OBJECT_EMP.getMessage()+"【工单】");
|
}
|
if(workorder.getStatus() > 3){
|
throw new BusinessException(ResponseStatus.ERR_STATUS.getCode(), ResponseStatus.ERR_STATUS.getMessage()+"【工单状态错误】");
|
}
|
List<EndCheckDetailBean> endCheckDetailBeanList = endCheckBean.getEndCheckDetailBeanList();
|
//整合获取所有扫描的工装数据
|
List<EndCheckDetailBean> e = new ArrayList<>();
|
for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) {
|
if(Objects.equals(endCheckDetailBean.getAppliancesId(),endCheckDetailBean.getQualifiedAppliancesId())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()+"【扫描篮筐与不良品篮筐不可以使用相同篮筐】");
|
}
|
if(workorder.getType()==1||workorder.getType()==2){
|
Appliances appliances= appliancesExtMapper.selectById(endCheckDetailBean.getQualifiedAppliancesId());
|
SystemDictData systemDictData=systemDictDataServiceimpl.findById(appliances.getType());
|
if(endCheckDetailBean.getUnQualifiedNum().compareTo(BigDecimal.ZERO)==1&&!StringUtils.equals(Constants.APPLIANCES_TYPE_LABLE.scrap,systemDictData.getLabel()) ){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "当前工单为返工返修--只能选择报废工装");
|
}
|
}
|
if(Objects.isNull(e)){
|
e.add(endCheckDetailBean);
|
}else{
|
if(e.indexOf(endCheckDetailBean) < Constants.ZERO){
|
e.add(endCheckDetailBean);
|
}
|
}
|
}
|
|
//2022年8月17日14:44:05 处理 必须上传当前工单内所有报工篮筐数据
|
// List<Integer> iList = endCheckDetailBeanList.stream().map(EndCheckDetailBean::getAppliancesId).collect(Collectors.toList());
|
// if(workorderRecordMapper.selectCount(new QueryWrapper<WorkorderRecord>()
|
// .eq("TYPE",1)
|
// .eq("WORKORDER_ID",workorder.getId())
|
// .eq("DELETED",0)
|
// .notIn("APPLIANCES_ID",iList)
|
// )>0){
|
// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()+"【请扫描此工单全部产出篮筐】");
|
// };
|
|
//整合获取所有扫描的工装数据验证 工装内数量是否超出
|
for (EndCheckDetailBean parent:e) {
|
BigDecimal childSumNum = new BigDecimal(0) ;
|
for (EndCheckDetailBean child : endCheckDetailBeanList) {
|
if(parent.getAppliancesId() == child.getAppliancesId()){
|
childSumNum = childSumNum.add( child.getNum() );
|
}
|
}
|
if(childSumNum.compareTo(parent.getNum())==1 ){
|
throw new BusinessException(ResponseStatus.EXCEED_PLAN_NUM.getCode(), ResponseStatus.EXCEED_APPLIANCES_NUM.getMessage());
|
}
|
}
|
//保存数据
|
Endcheck endcheck = endCheckBean.toEndCheck(workorder,userInfo);
|
endcheck.setCode(this.getNextCode(userInfo.getCompany().getId()));
|
endcheck.setRemark(endCheckBean.getRemark());
|
endcheckExtMapper.insert(endcheck);
|
//保存明细数据
|
for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) {
|
EndcheckDetail endcheckDetail = endCheckDetailBean.toEndCheckDetail(userInfo);
|
endcheckDetail.setRootDepartId(workorder.getRootDepartId());
|
endcheckDetail.setDepartId(workorder.getDepartId());
|
endcheckDetail.setEndcheckId(endcheck.getId());
|
endcheckDetail.setMaterialId(workorder.getMaterialId());
|
endcheckDetail.setUnitId(workorder.getUnitId());
|
endcheckDetail.setMaterialBatch(workorder.getBatch());
|
endcheckDetailExtMapper.insert(endcheckDetail);
|
//更新产出记录数据
|
WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper<WorkorderRecord>()
|
.eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
.eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()).last(" limit 1"));
|
if(Objects.isNull(unWorkOrderRecord)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,对应工单产出记录不存在!");
|
}
|
if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){// && !Objects.isNull(endCheckDetailBean.getQualifiedAppliancesId()) ){
|
WorkorderRecord workorderRecord = new WorkorderRecord();
|
workorderRecord.setDoneType(endCheckBean.getDownType());
|
workorderRecord.setMaterialDonetype(endCheckBean.getDownType());
|
workorderRecord.setNum(endCheckDetailBean.getQualifiedNum());
|
if(!Objects.isNull(endCheckDetailBean.getQualifiedAppliancesId())){
|
workorderRecord.setQualifiedApplianceId(endCheckDetailBean.getQualifiedAppliancesId().toString());
|
}
|
workorderRecordMapper.update(workorderRecord,new QueryWrapper<WorkorderRecord>()
|
.eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
.eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId())
|
);
|
}
|
}
|
if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){
|
this.dealUnEndCheckRecord(endCheckBean,userInfo);
|
}
|
//添加工单操作记录
|
List<WorkorderHistory> whList = new ArrayList<>();
|
workorder.setUpdateTime(DateUtil.getCurrentDate());
|
workorder.setUpdateUser(userInfo.getId());
|
//已完工
|
workorder.setStatus(Constants.WORKORDER_STATUS.done);
|
//工单历史数据
|
whList.add(WorkorderExtServiceImpl.initHistoryByModel(workorder,userInfo.getId(),Constants.WORKORDER_HISTORY_STATUS.done));
|
workorderMapper.updateById(workorder);
|
if(whList.size()>0){
|
workorderHistoryExtMapper.insertBatch(whList);
|
}
|
}
|
|
public void dealUnEndCheckRecord(EndCheckBean endCheckBean,LoginUserInfo userInfo){
|
Map<Integer, List<EndCheckDetailBean>> endCheckDetailBeanMap = endCheckBean.getEndCheckDetailBeanList().stream().filter(x -> !Objects.isNull(x.getQualifiedAppliancesId()))
|
.collect(Collectors.groupingBy(item -> item.getQualifiedAppliancesId()));
|
Iterator<Integer> iter = endCheckDetailBeanMap.keySet().iterator();
|
while(iter.hasNext()) {
|
Integer key = iter.next();
|
//判断当前不良篮筐是否存在于本工单产出记录中
|
if(workorderRecordMapper.selectCount(new QueryWrapper<WorkorderRecord>()
|
.eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
.eq("APPLIANCES_ID",key))>0){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,不良篮筐数据已存在!");
|
};
|
List<EndCheckDetailBean> endCheckDetailBeans = endCheckDetailBeanMap.get(key);
|
EndCheckDetailBean p = endCheckDetailBeans.get(0);
|
WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper<WorkorderRecord>()
|
.eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
.eq("APPLIANCES_ID",p.getAppliancesId()).last(" limit 1"));
|
p.setUnQualifiedNum(endCheckDetailBeans.stream().map(s -> s.getUnQualifiedNum()).reduce(BigDecimal.ZERO, BigDecimal::add));
|
unWorkOrderRecord.setId(null);
|
unWorkOrderRecord.setCreateUser(userInfo.getId());
|
unWorkOrderRecord.setCreateTime(new Date());
|
unWorkOrderRecord.setDoneType(Constants.ONE);
|
unWorkOrderRecord.setMaterialDonetype(Constants.ONE);
|
unWorkOrderRecord.setAppliancesId(key);
|
unWorkOrderRecord.setNum(p.getUnQualifiedNum());
|
workorderRecordMapper.insert(unWorkOrderRecord);
|
}
|
}
|
|
|
@Override
|
public synchronized String getNextCode(Integer comId ){
|
String prefix = "JY-" + DateUtil.getDate(new Date(),"yyyyMMdd") +"-";
|
Integer countNum = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_ENDCHECK_KEY+comId,Integer.class);
|
countNum = Constants.formatIntegerNum(countNum)+1;
|
//更新缓存
|
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_ENDCHECK_KEY+comId,countNum);
|
String nextIndex =Integer.toString( countNum);
|
return prefix + StringUtils.leftPad(nextIndex,4,"0");
|
}
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public void uploadEndCheckNew(EndCheckBean endCheckBean, LoginUserInfo userInfo){
|
//检验工单是否做过外观检
|
// if(endcheckExtMapper.selectCount(new QueryWrapper<Endcheck>()
|
// .eq("OBJ_ID",endCheckBean.getWorkOrderId())
|
// .eq("CHECK_TYPE", Constants.ONE)
|
// )>0){
|
// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "此工单已做外观终检,无法再进行操作");
|
// };
|
// if(endcheckExtMapper.selectCount(new QueryWrapper<Endcheck>()
|
// .eq("OBJ_ID",endCheckBean.getWorkOrderId())
|
// .eq("CHECK_TYPE", Constants.ZERO)
|
// .eq("DONE_TYPE", Constants.ONE)
|
// )>0){
|
// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "此工单已检具检不合格,无法再进行操作");
|
// };
|
//获取工单信息
|
Workorder workorder = workorderMapper.selectById(endCheckBean.getWorkOrderId());
|
if(Objects.isNull(workorder)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), ResponseStatus.OBJECT_EMP.getMessage()+"【工单】");
|
}
|
if(workorder.getStatus() > 3){
|
throw new BusinessException(ResponseStatus.ERR_STATUS.getCode(), ResponseStatus.ERR_STATUS.getMessage()+"【工单状态错误】");
|
}
|
List<EndCheckDetailBean> endCheckDetailBeanList = endCheckBean.getEndCheckDetailBeanList();
|
//整合获取所有扫描的工装数据
|
List<EndCheckDetailBean> e = new ArrayList<>();
|
for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) {
|
|
List<EndCheckUnQualifiedBean> endCheckUnQualifiedBeanList = endCheckDetailBean.getEndCheckUnQualifiedBeanList();
|
|
for (EndCheckUnQualifiedBean endCheckUnQualifiedBean:endCheckUnQualifiedBeanList ) {
|
if(Objects.equals(endCheckDetailBean.getAppliancesId(),endCheckUnQualifiedBean.getQualifiedAppliancesId())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()+"【扫描篮筐与不良品篮筐不可以使用相同篮筐】");
|
}
|
Appliances appliances= appliancesExtMapper.selectById(endCheckUnQualifiedBean.getQualifiedAppliancesId());
|
if(workorder.getType()==1||workorder.getType()==2){
|
SystemDictData systemDictData=systemDictDataServiceimpl.findById(appliances.getType());
|
if(endCheckDetailBean.getUnQualifiedNum().compareTo(BigDecimal.ZERO)==1&&!StringUtils.equals(Constants.APPLIANCES_TYPE_LABLE.scrap,systemDictData.getLabel()) ){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "当前工单为返工返修--只能选择报废工装");
|
}
|
}
|
//查询不良篮筐是否处于生产工单中
|
if(appliancesExtMapper.selectCount(new QueryWrapper<Appliances>()
|
.eq("id",endCheckUnQualifiedBean.getQualifiedAppliancesId())
|
.apply(" id in ( select b.APPLIANCES_ID from workorder a inner join workorder_record b on a.id = b.WORKORDER_ID and a.status in ( 0,1,2,3 ) and b.DELETED = 0 and a.id != '"+endCheckBean.getWorkOrderId()+"' ) ")
|
)>Constants.ZERO){
|
throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "【" +appliances.getCode() + "】该工装处于生产中");
|
};
|
}
|
|
if(Objects.isNull(e)){
|
e.add(endCheckDetailBean);
|
}else{
|
if(e.indexOf(endCheckDetailBean) < Constants.ZERO){
|
e.add(endCheckDetailBean);
|
}
|
}
|
}
|
|
//2022年8月17日14:44:05 处理 必须上传当前工单内所有报工篮筐数据
|
// List<Integer> iList = endCheckDetailBeanList.stream().map(EndCheckDetailBean::getAppliancesId).collect(Collectors.toList());
|
// if(workorderRecordMapper.selectCount(new QueryWrapper<WorkorderRecord>()
|
// .eq("TYPE",1)
|
// .eq("WORKORDER_ID",workorder.getId())
|
// .eq("DELETED",0)
|
// .notIn("APPLIANCES_ID",iList)
|
// )>0){
|
// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()+"【请扫描此工单全部产出篮筐】");
|
// };
|
|
//整合获取所有扫描的工装数据验证 工装内数量是否超出
|
for (EndCheckDetailBean parent:e) {
|
BigDecimal childSumNum = new BigDecimal(0) ;
|
for (EndCheckDetailBean child : endCheckDetailBeanList) {
|
if(parent.getAppliancesId() == child.getAppliancesId()){
|
childSumNum = childSumNum.add( child.getNum() );
|
}
|
}
|
if(childSumNum.compareTo(parent.getNum())==1 ){
|
throw new BusinessException(ResponseStatus.EXCEED_PLAN_NUM.getCode(), ResponseStatus.EXCEED_APPLIANCES_NUM.getMessage());
|
}
|
}
|
//保存数据
|
Endcheck endcheck = endCheckBean.toEndCheck(workorder,userInfo);
|
endcheck.setCode(this.getNextCode(userInfo.getCompany().getId()));
|
endcheck.setRemark(endCheckBean.getRemark());
|
endcheckExtMapper.insert(endcheck);
|
//保存明细数据
|
for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) {
|
|
//更新产出记录数据
|
WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper<WorkorderRecord>()
|
.eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
.eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()).last(" limit 1"));
|
if(Objects.isNull(unWorkOrderRecord)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,对应工单产出记录不存在!");
|
}
|
List<EndCheckUnQualifiedBean> endCheckUnQualifiedBeanList = endCheckDetailBean.getEndCheckUnQualifiedBeanList();
|
EndcheckDetail endcheckDetail = endCheckDetailBean.toEndCheckDetail(userInfo);
|
endcheckDetail.setRootDepartId(workorder.getRootDepartId());
|
endcheckDetail.setDepartId(workorder.getDepartId());
|
endcheckDetail.setEndcheckId(endcheck.getId());
|
endcheckDetail.setMaterialId(workorder.getMaterialId());
|
endcheckDetail.setUnitId(workorder.getUnitId());
|
endcheckDetail.setMaterialBatch(workorder.getBatch());
|
if(!Objects.isNull(endCheckUnQualifiedBeanList)&&endCheckUnQualifiedBeanList.size()>Constants.ZERO){
|
//最大不合格数量
|
BigDecimal maxUnQualifiedNum = unWorkOrderRecord.getNum().subtract(endCheckDetailBean.getQualifiedNum());
|
BigDecimal maxQNum = endCheckUnQualifiedBeanList.stream().map(s -> s.getUnQualifiedNum()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
if(maxQNum.compareTo(maxUnQualifiedNum)>0){
|
Appliances appliances = appliancesMapper.selectById(endCheckDetailBean.getAppliancesId());
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,工装【"+appliances.getCode()+"】检验数量超出");
|
}
|
for (EndCheckUnQualifiedBean endCheckUnQualifiedBean:endCheckUnQualifiedBeanList) {
|
endcheckDetail.setUnqualifiedNum(endCheckUnQualifiedBean.getUnQualifiedNum());
|
endcheckDetail.setQualifiedApplianceId(endCheckUnQualifiedBean.getQualifiedAppliancesId());
|
endcheckDetail.setCheckInfo(endCheckUnQualifiedBean.getCheckInfo());
|
endcheckDetailExtMapper.insert(endcheckDetail);
|
}
|
}else{
|
endcheckDetailExtMapper.insert(endcheckDetail);
|
}
|
|
// if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){
|
WorkorderRecord workorderRecord = new WorkorderRecord();
|
if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){
|
workorderRecord.setDoneType(endCheckBean.getDownType());
|
}
|
workorderRecord.setMaterialDonetype(endCheckBean.getDownType());
|
workorderRecord.setNum(endCheckDetailBean.getQualifiedNum());
|
if(!Objects.isNull(endCheckDetailBean.getQualifiedAppliancesId())){
|
workorderRecord.setQualifiedApplianceId(endCheckDetailBean.getQualifiedAppliancesId().toString());
|
}
|
workorderRecordMapper.update(workorderRecord,new QueryWrapper<WorkorderRecord>()
|
.eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
.eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId())
|
);
|
// }
|
}
|
// if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){
|
this.dealUnEndCheckRecordNew(endCheckBean,userInfo);
|
// }
|
//添加工单操作记录
|
List<WorkorderHistory> whList = new ArrayList<>();
|
workorder.setUpdateTime(DateUtil.getCurrentDate());
|
workorder.setUpdateUser(userInfo.getId());
|
//已完工
|
workorder.setStatus(Constants.WORKORDER_STATUS.done);
|
//工单历史数据
|
whList.add(WorkorderExtServiceImpl.initHistoryByModel(workorder,userInfo.getId(),Constants.WORKORDER_HISTORY_STATUS.done));
|
workorderMapper.updateById(workorder);
|
if(whList.size()>0){
|
workorderHistoryExtMapper.insertBatch(whList);
|
}
|
}
|
|
|
public void dealUnEndCheckRecordNew(EndCheckBean endCheckBean,LoginUserInfo userInfo){
|
List<EndCheckDetailBean> endCheckDetailBeanList = endCheckBean.getEndCheckDetailBeanList();
|
for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) {
|
List<EndCheckUnQualifiedBean> endCheckUnQualifiedBeanList = endCheckDetailBean.getEndCheckUnQualifiedBeanList();
|
Map<Integer, List<EndCheckUnQualifiedBean>> endCheckDetailBeanMap = endCheckUnQualifiedBeanList.stream().filter(x -> !Objects.isNull(x.getQualifiedAppliancesId()))
|
.collect(Collectors.groupingBy(item -> item.getQualifiedAppliancesId()));
|
Iterator<Integer> iter = endCheckDetailBeanMap.keySet().iterator();
|
while(iter.hasNext()) {
|
Integer key = iter.next();
|
//判断当前不良篮筐是否存在于本工单产出记录中
|
if(workorderRecordMapper.selectCount(new QueryWrapper<WorkorderRecord>()
|
.eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
.eq("APPLIANCES_ID",key))>0){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,不良篮筐数据已存在!");
|
};
|
List<EndCheckUnQualifiedBean> checkUnQualifiedBeans = endCheckDetailBeanMap.get(key);
|
EndCheckUnQualifiedBean p = checkUnQualifiedBeans.get(0);
|
WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper<WorkorderRecord>()
|
.eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
.eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()).last(" limit 1"));
|
p.setUnQualifiedNum(checkUnQualifiedBeans.stream().map(s -> s.getUnQualifiedNum()).reduce(BigDecimal.ZERO, BigDecimal::add));
|
unWorkOrderRecord.setId(null);
|
unWorkOrderRecord.setCreateUser(userInfo.getId());
|
unWorkOrderRecord.setCreateTime(new Date());
|
unWorkOrderRecord.setDoneType(Constants.ONE);
|
unWorkOrderRecord.setMaterialDonetype(Constants.ONE);
|
unWorkOrderRecord.setAppliancesId(key);
|
unWorkOrderRecord.setNum(p.getUnQualifiedNum());
|
workorderRecordMapper.insert(unWorkOrderRecord);
|
}
|
|
|
// if(!Objects.isNull(endCheckUnQualifiedBeanList)&&endCheckUnQualifiedBeanList.size()>Constants.ZERO){
|
// for (EndCheckUnQualifiedBean endCheckUnQualifiedBean:endCheckUnQualifiedBeanList) {
|
// WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper<WorkorderRecord>()
|
// .eq("WORKORDER_ID",endCheckBean.getWorkOrderId())
|
// .eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId())
|
// .last(" limit 1"));
|
// unWorkOrderRecord.setId(null);
|
// unWorkOrderRecord.setCreateUser(userInfo.getId());
|
// unWorkOrderRecord.setCreateTime(new Date());
|
// unWorkOrderRecord.setDoneType(Constants.ONE);
|
// unWorkOrderRecord.setMaterialDonetype(Constants.ONE);
|
// unWorkOrderRecord.setAppliancesId(endCheckUnQualifiedBean.getQualifiedAppliancesId());
|
//// unWorkOrderRecord.setQualifiedApplianceId(endCheckUnQualifiedBean.getQualifiedAppliancesId().toString());
|
// unWorkOrderRecord.setNum(endCheckUnQualifiedBean.getUnQualifiedNum());
|
// workorderRecordMapper.insert(unWorkOrderRecord);
|
// }
|
// }
|
}
|
}
|
|
|
|
|
}
|