|
|
@ -540,8 +540,13 @@ public class QualityOrderServiceImpl implements IQualityOrderService |
|
|
|
} |
|
|
|
|
|
|
|
// 构建QualityOrderDetail,假设其他属性与QualityOrder相同,故不重复设置
|
|
|
|
insertQualityOrderDetailByWarehouseStorageOrder(warehouseStorageOrder, detail, qualityOrderCode); |
|
|
|
|
|
|
|
QualityOrderDetail qualityOrderDetail = insertQualityOrderDetailByWarehouseStorageOrder(warehouseStorageOrder, detail, qualityOrderCode); |
|
|
|
qualityOrderDetail.setQualityOrderType("0");//采购订单
|
|
|
|
qualityOrderDetail.setQualityStorageStatus("0");//采购入库
|
|
|
|
int insertResult= orderDetailMapper.insertQualityOrderDetail(qualityOrderDetail); |
|
|
|
if (insertResult <= 0){ |
|
|
|
throw new BusinessException("新增品质单详情失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
@ -551,38 +556,41 @@ public class QualityOrderServiceImpl implements IQualityOrderService |
|
|
|
* */ |
|
|
|
@Override |
|
|
|
public void insertQualityOrderByOutsourceStorageOrder(WarehouseStorageOrder warehouseStorageOrder, List<WarehouseStorageOrderDetail> storageOrderDetailList) { |
|
|
|
QualityOrder qualityOrder = new QualityOrder(); |
|
|
|
qualityOrder.setCreateTime(DateUtils.getNowDate()); |
|
|
|
qualityOrder.setCreateBy(warehouseStorageOrder.getCreateBy()); |
|
|
|
//使用redis自动生成品质单号
|
|
|
|
String qualityOrderCode = redisCache.generateBillNo("PZ"); |
|
|
|
|
|
|
|
qualityOrder.setQualityOrderCode(qualityOrderCode); |
|
|
|
qualityOrder.setInStorageCode(warehouseStorageOrder.getWarehouseStorageCode()); |
|
|
|
qualityOrder.setRelatedOrderCode(warehouseStorageOrder.getRelatedOrderCode()); |
|
|
|
qualityOrder.setQualityStatus("0"); |
|
|
|
qualityOrder.setQualityOrderType("2"); |
|
|
|
qualityOrder.setQualityStorageStatus("2"); |
|
|
|
// 计算本次到货数合计
|
|
|
|
int totalReceivedQuantity = storageOrderDetailList.stream() |
|
|
|
.mapToInt(WarehouseStorageOrderDetail::getActualArriveNum) |
|
|
|
.sum(); |
|
|
|
qualityOrder.setThisArrivedNum(totalReceivedQuantity); |
|
|
|
|
|
|
|
qualityOrder.setWarehouseCode(warehouseStorageOrder.getWarehouseCode()); |
|
|
|
qualityOrder.setWarehouseName(warehouseStorageOrder.getWarehouseName()); |
|
|
|
qualityOrder.setDeliveryInspectionTime(warehouseStorageOrder.getDeliveryInspectionTime()); |
|
|
|
qualityOrder.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
qualityOrder.setCreateTime(DateUtils.getNowDate()); |
|
|
|
qualityOrderMapper.insertQualityOrder(qualityOrder); |
|
|
|
|
|
|
|
//新增三个子表的数据
|
|
|
|
for (WarehouseStorageOrderDetail detail : storageOrderDetailList) { |
|
|
|
QualityOrder qualityOrder = new QualityOrder(); |
|
|
|
//使用redis自动生成品质单号
|
|
|
|
String qualityOrderCode = redisCache.generateBillNo("PZ"); |
|
|
|
|
|
|
|
qualityOrder.setQualityOrderCode(qualityOrderCode); |
|
|
|
qualityOrder.setInStorageCode(warehouseStorageOrder.getWarehouseStorageCode()); |
|
|
|
qualityOrder.setRelatedOrderCode(warehouseStorageOrder.getRelatedOrderCode()); |
|
|
|
qualityOrder.setQualityStatus("0"); |
|
|
|
qualityOrder.setQualityOrderType("2"); |
|
|
|
qualityOrder.setQualityStorageStatus("2"); |
|
|
|
qualityOrder.setMaterialNo(detail.getMaterialNo()); |
|
|
|
qualityOrder.setMaterialName(detail.getMaterialName()); |
|
|
|
// 暂收合格数为品质单检验数
|
|
|
|
qualityOrder.setThisArrivedNum(detail.getTemporaryQualifiedNum()); |
|
|
|
qualityOrder.setPendingReviewNum(0); |
|
|
|
qualityOrder.setQualityQualifiedNum(0); |
|
|
|
qualityOrder.setQualityUnqualifiedNum(0); |
|
|
|
|
|
|
|
qualityOrder.setWarehouseCode(warehouseStorageOrder.getWarehouseCode()); |
|
|
|
qualityOrder.setWarehouseName(warehouseStorageOrder.getWarehouseName()); |
|
|
|
qualityOrder.setDeliveryInspectionTime(warehouseStorageOrder.getDeliveryInspectionTime()); |
|
|
|
|
|
|
|
// 构建QualityOrderDetail,假设其他属性与QualityOrder相同,故不重复设置
|
|
|
|
insertQualityOrderDetailByWarehouseStorageOrder(warehouseStorageOrder, detail, qualityOrderCode); |
|
|
|
insertQualityOrderReportByWarehouseStorageOrder(detail,qualityOrderCode); |
|
|
|
insertQualityOrderUnqualifiedByWarehouseStorageOrder(detail); |
|
|
|
// ...
|
|
|
|
QualityOrderDetail qualityOrderDetail = insertQualityOrderDetailByWarehouseStorageOrder(warehouseStorageOrder, detail, qualityOrderCode); |
|
|
|
qualityOrderDetail.setQualityOrderType("2");//委外订单
|
|
|
|
qualityOrderDetail.setQualityStorageStatus("2");//委外入库
|
|
|
|
int insertResult= orderDetailMapper.insertQualityOrderDetail(qualityOrderDetail); |
|
|
|
if (insertResult <= 0){ |
|
|
|
throw new BusinessException("新增品质单详情失败"); |
|
|
|
} |
|
|
|
qualityOrder.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
qualityOrder.setCreateTime(DateUtils.getNowDate()); |
|
|
|
qualityOrderMapper.insertQualityOrder(qualityOrder); |
|
|
|
} |
|
|
|
} |
|
|
|
/* |
|
|
@ -707,103 +715,7 @@ public class QualityOrderServiceImpl implements IQualityOrderService |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@Override |
|
|
|
public int updateMakeOutStartingQuality(QualityOrder qualityOrder) { |
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
qualityOrder.setUpdateBy(loginName); |
|
|
|
qualityOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
qualityOrder.setQualityEmployee(loginName); |
|
|
|
List<QualityOrderDetail> qualityOrderDetailList = qualityOrder.getQualityOrderDetailList(); |
|
|
|
if (CollectionUtils.isEmpty(qualityOrderDetailList)){ |
|
|
|
throw new BusinessException("品质单详情数据为空"); |
|
|
|
} |
|
|
|
|
|
|
|
for (QualityOrderDetail qualityOrderDetail : qualityOrderDetailList) { |
|
|
|
qualityOrderDetail.setUpdateBy(loginName); |
|
|
|
qualityOrderDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
Long qualityOrderDetailId = qualityOrderDetail.getQualityOrderDetailId(); |
|
|
|
QualityOrderDetail tempQualityOrderDetail = orderDetailMapper.selectQualityOrderDetailById(qualityOrderDetailId); |
|
|
|
Integer qualifiedNum = tempQualityOrderDetail.getQualityQualifiedNum(); |
|
|
|
Integer unqualifiedNum = tempQualityOrderDetail.getQualityUnqualifiedNum(); |
|
|
|
if (qualifiedNum == null || unqualifiedNum == null){ |
|
|
|
throw new BusinessException("请先进行品质报告操作"); |
|
|
|
} |
|
|
|
qualityOrderDetail.setInStorageCode(qualityOrder.getInStorageCode()); |
|
|
|
//更新品质单详情数据
|
|
|
|
int updateQualityOrderDetailResult = orderDetailMapper.updateQualityOrderDetail(qualityOrderDetail); |
|
|
|
if (updateQualityOrderDetailResult <= 0){ |
|
|
|
throw new BusinessException("更新品质单详情数据失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
//根据品质单号从数据库查询 用于更新入库单
|
|
|
|
QualityOrder tempQualityOrder = qualityOrderMapper.selectQualityOrderByCode(qualityOrder.getQualityOrderCode()); |
|
|
|
String qualityStatus = tempQualityOrder.getQualityStatus(); |
|
|
|
String qualityStorageStatus = tempQualityOrder.getQualityStorageStatus(); |
|
|
|
|
|
|
|
Integer thisArrivedNumSum = 0; |
|
|
|
Integer qualityQualifiedNumSum = 0; |
|
|
|
Integer qualityUnqualifiedNumSum = 0; |
|
|
|
|
|
|
|
// 检查thisArrivedNum是否含有null值
|
|
|
|
|
|
|
|
// 检查qualityQualifiedNum是否含有null值
|
|
|
|
boolean hasQualityQualifiedNumNull = qualityOrderDetailList.stream() |
|
|
|
.anyMatch(item -> item.getQualityQualifiedNum() == null); |
|
|
|
|
|
|
|
// 检查qualityUnqualifiedNum是否含有null值
|
|
|
|
boolean hasQualityUnqualifiedNumNull = qualityOrderDetailList.stream() |
|
|
|
.anyMatch(item -> item.getQualityUnqualifiedNum() == null); |
|
|
|
|
|
|
|
if (hasQualityQualifiedNumNull) { |
|
|
|
throw new BusinessException("存在品质已合格数为空,请检查!"); |
|
|
|
} |
|
|
|
if (hasQualityUnqualifiedNumNull) { |
|
|
|
throw new BusinessException("存在品质不合格数为空,请检查!"); |
|
|
|
} |
|
|
|
// 计算各个字段的总和
|
|
|
|
|
|
|
|
qualityQualifiedNumSum = qualityOrderDetailList.stream() |
|
|
|
.mapToInt(QualityOrderDetail::getQualityQualifiedNum) |
|
|
|
.sum(); |
|
|
|
|
|
|
|
qualityUnqualifiedNumSum = qualityOrderDetailList.stream() |
|
|
|
.mapToInt(QualityOrderDetail::getQualityUnqualifiedNum) |
|
|
|
.sum(); |
|
|
|
//插入主表中本次到货数
|
|
|
|
qualityOrder.setThisArrivedNum(thisArrivedNumSum); |
|
|
|
//插入主表中品质合格数
|
|
|
|
qualityOrder.setQualityQualifiedNum(qualityQualifiedNumSum); |
|
|
|
//插入主表中品质不合格数
|
|
|
|
qualityOrder.setQualityUnqualifiedNum(qualityUnqualifiedNumSum); |
|
|
|
|
|
|
|
// if (thisArrivedNum == qualityQualifiedNum){
|
|
|
|
//全部品质
|
|
|
|
qualityOrder.setQualityStatus("2"); |
|
|
|
tempQualityOrder.setQualityStatus("2"); |
|
|
|
// }else {
|
|
|
|
// //部分品质
|
|
|
|
// qualityOrder.setQualityStatus("1");
|
|
|
|
// tempQualityOrder.setQualityStatus("1");
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
//如果品质时修改交检时间
|
|
|
|
tempQualityOrder.setDeliveryInspectionTime(qualityOrder.getDeliveryInspectionTime()); |
|
|
|
tempQualityOrder.setQualityQualifiedNum(qualityQualifiedNumSum); |
|
|
|
tempQualityOrder.setQualityUnqualifiedNum(qualityUnqualifiedNumSum); |
|
|
|
tempQualityOrder.setThisArrivedNum(thisArrivedNumSum); |
|
|
|
|
|
|
|
|
|
|
|
//数据生成到入库单中,后续进行入库操作
|
|
|
|
int updateStorageOrderResult = warehouseStorageOrderService.updateWarehouseStorageOrderByOutQualityOrder(tempQualityOrder, qualityOrderDetailList); |
|
|
|
if (updateStorageOrderResult <= 0){ |
|
|
|
throw new BusinessException("更新入库单数据失败"); |
|
|
|
} |
|
|
|
|
|
|
|
int updateResult = qualityOrderMapper.updateQualityOrder(qualityOrder); |
|
|
|
if (updateResult <= 0){ |
|
|
|
log.warn("更新品质单失败,未影响任何行"); |
|
|
|
} |
|
|
|
return updateResult; |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -842,109 +754,7 @@ public class QualityOrderServiceImpl implements IQualityOrderService |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public int updateMakeStartingQuality(QualityOrder qualityOrder) { |
|
|
|
|
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
qualityOrder.setUpdateBy(loginName); |
|
|
|
qualityOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
qualityOrder.setQualityEmployee(loginName); |
|
|
|
//生成入库单号
|
|
|
|
String warehouseStorageCode = redisCache.generateBillNo("RK"); |
|
|
|
qualityOrder.setInStorageCode(warehouseStorageCode); |
|
|
|
List<QualityOrderDetail> qualityOrderDetailList = qualityOrder.getQualityOrderDetailList(); |
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(qualityOrderDetailList)){ |
|
|
|
throw new BusinessException("品质单详情数据为空"); |
|
|
|
} |
|
|
|
|
|
|
|
for (QualityOrderDetail qualityOrderDetail : qualityOrderDetailList) { |
|
|
|
qualityOrderDetail.setUpdateBy(loginName); |
|
|
|
qualityOrderDetail.setUpdateTime(new Date()); |
|
|
|
Long qualityOrderDetailId = qualityOrderDetail.getQualityOrderDetailId(); |
|
|
|
QualityOrderDetail tempQualityOrderDetail = orderDetailMapper.selectQualityOrderDetailById(qualityOrderDetailId); |
|
|
|
Integer qualifiedNum = tempQualityOrderDetail.getQualityQualifiedNum(); |
|
|
|
Integer unqualifiedNum = tempQualityOrderDetail.getQualityUnqualifiedNum(); |
|
|
|
if (qualifiedNum == null || unqualifiedNum == null){ |
|
|
|
throw new BusinessException("请先进行品质报告操作"); |
|
|
|
} |
|
|
|
//更新品质单详情数据
|
|
|
|
int updateQualityOrderDetailResult = orderDetailMapper.updateQualityOrderDetail(qualityOrderDetail); |
|
|
|
if (updateQualityOrderDetailResult <= 0){ |
|
|
|
throw new BusinessException("更新品质单详情数据失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//根据品质单号从数据库查询 用于更新入库单
|
|
|
|
QualityOrder tempQualityOrder = qualityOrderMapper.selectQualityOrderByCode(qualityOrder.getQualityOrderCode()); |
|
|
|
tempQualityOrder.setWarehouseCode(warehouseStorageCode); |
|
|
|
String qualityStatus = tempQualityOrder.getQualityStatus(); |
|
|
|
String qualityStorageStatus = tempQualityOrder.getQualityStorageStatus(); |
|
|
|
|
|
|
|
Integer thisArrivedNumSum = 0; |
|
|
|
Integer qualityQualifiedNumSum = 0; |
|
|
|
Integer qualityUnqualifiedNumSum = 0; |
|
|
|
|
|
|
|
// 检查thisArrivedNum是否含有null值
|
|
|
|
|
|
|
|
// 检查qualityQualifiedNum是否含有null值
|
|
|
|
boolean hasQualityQualifiedNumNull = qualityOrderDetailList.stream() |
|
|
|
.anyMatch(item -> item.getQualityQualifiedNum() == null); |
|
|
|
|
|
|
|
// 检查qualityUnqualifiedNum是否含有null值
|
|
|
|
boolean hasQualityUnqualifiedNumNull = qualityOrderDetailList.stream() |
|
|
|
.anyMatch(item -> item.getQualityUnqualifiedNum() == null); |
|
|
|
|
|
|
|
if (hasQualityQualifiedNumNull) { |
|
|
|
throw new BusinessException("存在品质已合格数为空,请检查!"); |
|
|
|
} |
|
|
|
if (hasQualityUnqualifiedNumNull) { |
|
|
|
throw new BusinessException("存在品质不合格数为空,请检查!"); |
|
|
|
} |
|
|
|
// 计算各个字段的总和
|
|
|
|
|
|
|
|
qualityQualifiedNumSum = qualityOrderDetailList.stream() |
|
|
|
.mapToInt(QualityOrderDetail::getQualityQualifiedNum) |
|
|
|
.sum(); |
|
|
|
|
|
|
|
qualityUnqualifiedNumSum = qualityOrderDetailList.stream() |
|
|
|
.mapToInt(QualityOrderDetail::getQualityUnqualifiedNum) |
|
|
|
.sum(); |
|
|
|
//插入主表中本次到货数
|
|
|
|
qualityOrder.setThisArrivedNum(thisArrivedNumSum); |
|
|
|
//插入主表中品质合格数
|
|
|
|
qualityOrder.setQualityQualifiedNum(qualityQualifiedNumSum); |
|
|
|
//插入主表中品质不合格数
|
|
|
|
qualityOrder.setQualityUnqualifiedNum(qualityUnqualifiedNumSum); |
|
|
|
|
|
|
|
// if (thisArrivedNum == qualityQualifiedNum){
|
|
|
|
//全部品质
|
|
|
|
qualityOrder.setQualityStatus("2"); |
|
|
|
tempQualityOrder.setQualityStatus("2"); |
|
|
|
// }else {
|
|
|
|
// //部分品质
|
|
|
|
// qualityOrder.setQualityStatus("1");
|
|
|
|
// tempQualityOrder.setQualityStatus("1");
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
//如果品质时修改交检时间
|
|
|
|
tempQualityOrder.setDeliveryInspectionTime(qualityOrder.getDeliveryInspectionTime()); |
|
|
|
tempQualityOrder.setQualityQualifiedNum(qualityQualifiedNumSum); |
|
|
|
tempQualityOrder.setQualityUnqualifiedNum(qualityUnqualifiedNumSum); |
|
|
|
tempQualityOrder.setThisArrivedNum(thisArrivedNumSum); |
|
|
|
|
|
|
|
|
|
|
|
//数据生成到入库单中,后续进行入库操作
|
|
|
|
int updateStorageOrderResult = warehouseStorageOrderService.insertWarehouseStorageOrderByMakeQualityOrder(tempQualityOrder, qualityOrderDetailList); |
|
|
|
if (updateStorageOrderResult <= 0){ |
|
|
|
throw new BusinessException("更新入库单数据失败"); |
|
|
|
} |
|
|
|
|
|
|
|
int updateResult = qualityOrderMapper.updateQualityOrder(qualityOrder); |
|
|
|
if (updateResult <= 0){ |
|
|
|
log.warn("更新品质单失败,未影响任何行"); |
|
|
|
} |
|
|
|
return updateResult; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
//品质单不合格分类表
|
|
|
@ -985,7 +795,7 @@ public class QualityOrderServiceImpl implements IQualityOrderService |
|
|
|
} |
|
|
|
|
|
|
|
//品质单详情表
|
|
|
|
private void insertQualityOrderDetailByWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder, WarehouseStorageOrderDetail warehouseStorageOrderDetail, String qualityOrderCode) { |
|
|
|
private QualityOrderDetail insertQualityOrderDetailByWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder, WarehouseStorageOrderDetail warehouseStorageOrderDetail, String qualityOrderCode) { |
|
|
|
|
|
|
|
QualityOrderDetail qualityOrderDetail = new QualityOrderDetail(); |
|
|
|
|
|
|
@ -994,8 +804,8 @@ public class QualityOrderServiceImpl implements IQualityOrderService |
|
|
|
qualityOrderDetail.setInStorageCode(warehouseStorageOrder.getWarehouseStorageCode()); |
|
|
|
qualityOrderDetail.setRelatedOrderCode(warehouseStorageOrder.getRelatedOrderCode()); |
|
|
|
qualityOrderDetail.setQualityStatus("0"); |
|
|
|
qualityOrderDetail.setQualityOrderType("0"); |
|
|
|
qualityOrderDetail.setQualityStorageStatus("0"); |
|
|
|
// qualityOrderDetail.setQualityOrderType("0");
|
|
|
|
// qualityOrderDetail.setQualityStorageStatus("0");
|
|
|
|
qualityOrderDetail.setMaterialNo(warehouseStorageOrderDetail.getMaterialNo()); |
|
|
|
qualityOrderDetail.setMaterialBrand(warehouseStorageOrderDetail.getMaterialBrand()); |
|
|
|
qualityOrderDetail.setMaterialDescribe(warehouseStorageOrderDetail.getMaterialDescribe()); |
|
|
@ -1015,9 +825,7 @@ public class QualityOrderServiceImpl implements IQualityOrderService |
|
|
|
qualityOrderDetail.setDeliveryInspectionTime(warehouseStorageOrder.getDeliveryInspectionTime()); |
|
|
|
qualityOrderDetail.setCreateTime(new Date()); |
|
|
|
qualityOrderDetail.setCreateBy(warehouseStorageOrderDetail.getCreateBy()); |
|
|
|
int insertResult= orderDetailMapper.insertQualityOrderDetail(qualityOrderDetail); |
|
|
|
if (insertResult <= 0){ |
|
|
|
throw new BusinessException("新增品质单详情失败"); |
|
|
|
} |
|
|
|
|
|
|
|
return qualityOrderDetail; |
|
|
|
} |
|
|
|
} |
|
|
|