|
|
@ -58,6 +58,15 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
@Autowired |
|
|
|
private QualityRefundsExchangesOrderMapper refundsExchangesOrderMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private QualityRefundsExchangesMapper refundsExchangesMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private QualityRefundsExchangesDetailMapper refundsExchangesDetailMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private QualityRefundsExchangesUnqualifiedMapper exchangesUnqualifiedMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private QualityShippingDeviceMapper shippingDeviceMapper; |
|
|
|
|
|
|
@ -208,7 +217,7 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
return qualityOrderReportMapper.selectQualityOrderReportListByCodes(ids); |
|
|
|
} |
|
|
|
/** |
|
|
|
* 新增生产成品品质单报告 |
|
|
|
* 新增品质单报告 |
|
|
|
* |
|
|
|
* @param qualityOrderReportVO 品质管理品质单报告 |
|
|
|
* @return 结果 |
|
|
@ -252,7 +261,7 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//生产品质 成品品质
|
|
|
|
if(qualityOrderReportVO.getQualityOrderReportType().equals("0")){ |
|
|
|
//品质报告单关联出货设备ID集合
|
|
|
|
List<String> uniqueDeviceIds = qualityOrderReportVO.getQualityReportDeviceIds(); |
|
|
@ -264,7 +273,10 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
qualityReportDevice.setShippingDeviceId(deviceId); |
|
|
|
qualityReportDeviceMapper.insertQualityReportDevice(qualityReportDevice); |
|
|
|
//更新品质单关联设备表提交/审核状态
|
|
|
|
QualityShippingDevice shippingDevice = shippingDeviceMapper.selectQualityShippingDeviceByDeviceId(deviceId); |
|
|
|
QualityShippingDevice tempDevice = new QualityShippingDevice(); |
|
|
|
tempDevice.setQualityOrderCode(qualityOrderCode); |
|
|
|
tempDevice.setShippingDeviceId(deviceId); |
|
|
|
QualityShippingDevice shippingDevice = shippingDeviceMapper.selectQualityShippingDeviceByDeviceId(tempDevice); |
|
|
|
if (shippingDevice == null) { |
|
|
|
throw new BusinessException(deviceId + "设备不存在于该品质单中"); |
|
|
|
} |
|
|
@ -419,8 +431,15 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
if (processIsFinish) { |
|
|
|
// 审核状态-审核通过
|
|
|
|
qualityOrderReportVO.setAuditStatus("1"); |
|
|
|
//更新审核通过数据
|
|
|
|
updateApprovedInfo(qualityOrderReportVO); |
|
|
|
//生产品质
|
|
|
|
if(qualityOrderReportVO.getQualityOrderReportType().equals("0") |
|
|
|
||qualityOrderReportVO.getQualityOrderReportType().equals("1")){ |
|
|
|
updateApprovedInfo(qualityOrderReportVO); |
|
|
|
} |
|
|
|
//采购品质
|
|
|
|
if(qualityOrderReportVO.getQualityOrderReportType().equals("2")){ |
|
|
|
updatePurchaseApprovedInfo(qualityOrderReportVO); |
|
|
|
} |
|
|
|
} |
|
|
|
qualityOrderReportMapper.updateQualityOrderReportById(qualityOrderReportVO); |
|
|
|
return processInstance; |
|
|
@ -460,28 +479,32 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
* 审核通过后更新数据(生产入库,成品品质) |
|
|
|
* 审核通过后更新数据(生产入库) |
|
|
|
* 成品品质更新品质单表、品质单详情表、品质单关联设备表、售后设备表、生产订单、生产订单bom已完成数和状态,新增入库单、入库单详情 |
|
|
|
* 半成品其他品质更新品质单表、品质单详情表、生产订单、生产订单bom已完成数和状态,新增入库单、入库单详情*/ |
|
|
|
@Override |
|
|
|
public void updateApprovedInfo(QualityOrderReportVO qualityOrderReportVO) { |
|
|
|
String quaoityOrderCode = qualityOrderReportVO.getQualityOrderCode(); |
|
|
|
String qualityOrderCode = qualityOrderReportVO.getQualityOrderCode(); |
|
|
|
String materialNo = qualityOrderReportVO.getMaterialNo(); |
|
|
|
String makeNo = qualityOrderReportVO.getRelatedOrderCode(); |
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
|
|
|
|
int qualifiedNum = qualityOrderReportVO.getQualityHasqualifiedNum(); |
|
|
|
int unQualifiedNum = qualityOrderReportVO.getProcessBadNum(); |
|
|
|
int checkNum = qualityOrderReportVO.getCheckNum(); |
|
|
|
int qualifiedNum = Optional.ofNullable(qualityOrderReportVO.getQualityHasqualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
int unQualifiedNum = Optional.ofNullable(qualityOrderReportVO.getProcessBadNum()) |
|
|
|
.orElse(0); |
|
|
|
int checkNum = Optional.ofNullable(qualityOrderReportVO.getCheckNum()) |
|
|
|
.orElse(0); |
|
|
|
|
|
|
|
/** |
|
|
|
更新品质单详情合格数、不良数 |
|
|
|
*/ |
|
|
|
QualityOrderDetail qualityOrderDetail = orderDetailMapper.selectQualityOrderDetailByCode(quaoityOrderCode); |
|
|
|
QualityOrderDetail qualityOrderDetail = orderDetailMapper.selectQualityOrderDetailByCode(qualityOrderCode); |
|
|
|
qualityOrderDetail.setQualityQualifiedNum(qualifiedNum); |
|
|
|
qualityOrderDetail.setQualityUnqualifiedNum(unQualifiedNum); |
|
|
|
//更新待审核数
|
|
|
|
int detailPendingReviewNum = qualityOrderDetail.getPendingReviewNum(); |
|
|
|
int detailPendingReviewNum = Optional.ofNullable(qualityOrderDetail.getPendingReviewNum()) |
|
|
|
.orElse(0); |
|
|
|
detailPendingReviewNum = detailPendingReviewNum - checkNum; |
|
|
|
qualityOrderDetail.setPendingReviewNum(detailPendingReviewNum); |
|
|
|
qualityOrderDetail.setUpdateBy(loginName); |
|
|
@ -489,17 +512,20 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
orderDetailMapper.updateQualityOrderDetail(qualityOrderDetail); |
|
|
|
/** |
|
|
|
更新品质单合格数、不良数*/ |
|
|
|
QualityOrder qualityOrder = qualityOrderMapper.selectQualityOrderByCode(quaoityOrderCode); |
|
|
|
QualityOrder qualityOrder = qualityOrderMapper.selectQualityOrderByCode(qualityOrderCode); |
|
|
|
qualityOrder.setQualityQualifiedNum(qualifiedNum); |
|
|
|
qualityOrder.setQualityUnqualifiedNum(unQualifiedNum); |
|
|
|
//更新待审核数
|
|
|
|
int orderPendingReviewNum = qualityOrder.getPendingReviewNum(); |
|
|
|
int orderPendingReviewNum = Optional.ofNullable(qualityOrder.getPendingReviewNum()) |
|
|
|
.orElse(0); |
|
|
|
orderPendingReviewNum = orderPendingReviewNum - checkNum; |
|
|
|
qualityOrder.setPendingReviewNum(orderPendingReviewNum); |
|
|
|
qualityOrder.setUpdateBy(loginName); |
|
|
|
qualityOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
int orderQualifiedNum = qualityOrder.getQualityQualifiedNum(); |
|
|
|
int orderUnqualifiedNum = qualityOrder.getQualityUnqualifiedNum(); |
|
|
|
int orderQualifiedNum = Optional.ofNullable(qualityOrder.getQualityQualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
int orderUnqualifiedNum = Optional.ofNullable(qualityOrder.getQualityUnqualifiedNum()) |
|
|
|
.orElse(0);; |
|
|
|
int qualityNum = orderQualifiedNum + orderUnqualifiedNum + orderPendingReviewNum; |
|
|
|
if(qualityNum < qualityOrder.getThisArrivedNum()){ |
|
|
|
qualityOrder.setQualityStatus("1");//部分品质
|
|
|
@ -510,22 +536,52 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
qualityOrderMapper.updateQualityOrder(qualityOrder); |
|
|
|
/* |
|
|
|
* 更新设备状态*/ |
|
|
|
List<String> deviceIds = qualityOrderReportVO.getQualityReportDeviceIds(); |
|
|
|
if (StringUtils.isNotEmpty(deviceIds)) { |
|
|
|
for (String deviceId : deviceIds) { |
|
|
|
//更新品质单关联设备状态
|
|
|
|
QualityShippingDevice shippingDevice = shippingDeviceMapper.selectQualityShippingDeviceByDeviceId(deviceId); |
|
|
|
shippingDevice.setQualityAuditStatus("1");//审核通过
|
|
|
|
shippingDevice.setQualityStatus("3");//品质不合格(审核通过)
|
|
|
|
shippingDevice.setUpdateBy(loginName); |
|
|
|
shippingDevice.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
shippingDeviceMapper.updateQualityShippingDevice(shippingDevice); |
|
|
|
//更新售后出货设备状态
|
|
|
|
AfterSalesShippingDevice afterSalesDevice = afterSalesDeviceMapper.selectAfterSalesShippingDeviceByShippingDeviceId(deviceId); |
|
|
|
afterSalesDevice.setQualityStatus("3");//品质不合格(审核通过)
|
|
|
|
afterSalesDevice.setUpdateBy(loginName); |
|
|
|
afterSalesDevice.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
afterSalesDeviceMapper.updateAfterSalesShippingDevice(afterSalesDevice); |
|
|
|
if(qualityOrderReportVO.getQualityOrderReportType().equals("0")){//生产成品品质
|
|
|
|
List<String> deviceIds = qualityOrderReportVO.getQualityReportDeviceIds(); |
|
|
|
if (StringUtils.isNotEmpty(deviceIds)) { |
|
|
|
for (String deviceId : deviceIds) { |
|
|
|
//更新品质单关联设备状态
|
|
|
|
QualityShippingDevice tempDevice = new QualityShippingDevice(); |
|
|
|
tempDevice.setQualityOrderCode(qualityOrderCode); |
|
|
|
tempDevice.setShippingDeviceId(deviceId); |
|
|
|
QualityShippingDevice shippingDevice = shippingDeviceMapper.selectQualityShippingDeviceByDeviceId(tempDevice); |
|
|
|
shippingDevice.setQualityAuditStatus("1");//审核通过
|
|
|
|
shippingDevice.setQualityStatus("3");//品质不合格(审核通过)
|
|
|
|
shippingDevice.setUpdateBy(loginName); |
|
|
|
shippingDevice.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
shippingDeviceMapper.updateQualityShippingDevice(shippingDevice); |
|
|
|
//更新售后出货设备状态
|
|
|
|
AfterSalesShippingDevice afterSalesDevice = afterSalesDeviceMapper.selectAfterSalesShippingDeviceByShippingDeviceId(deviceId); |
|
|
|
afterSalesDevice.setQualityStatus("3");//品质不合格(审核通过)
|
|
|
|
afterSalesDevice.setUpdateBy(loginName); |
|
|
|
afterSalesDevice.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
afterSalesDeviceMapper.updateAfterSalesShippingDevice(afterSalesDevice); |
|
|
|
} |
|
|
|
} |
|
|
|
//品质单全部品质,则更新该品质单内的设备为品质合格(审核通过)
|
|
|
|
if(qualityNum == qualityOrder.getThisArrivedNum()){ |
|
|
|
QualityShippingDevice tempDevice = new QualityShippingDevice(); |
|
|
|
//查找本品质单包含的未被提交为不良的设备
|
|
|
|
tempDevice.setQualityAuditStatus("0");//未提交
|
|
|
|
tempDevice.setQualityOrderCode(qualityOrderCode); |
|
|
|
List<QualityShippingDevice> qualityShippingDevices = shippingDeviceMapper.selectQualityShippingDeviceList(tempDevice); |
|
|
|
if(StringUtils.isNotEmpty(qualityShippingDevices)){ |
|
|
|
for (QualityShippingDevice shippingDevice: qualityShippingDevices) { |
|
|
|
String deviceId = shippingDevice.getShippingDeviceId(); |
|
|
|
//更新品质单设备为品质合格、审核通过
|
|
|
|
shippingDevice.setQualityAuditStatus("1");//审核通过
|
|
|
|
shippingDevice.setQualityStatus("1");//品质合格
|
|
|
|
shippingDevice.setUpdateBy(loginName); |
|
|
|
shippingDevice.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
shippingDeviceMapper.updateQualityShippingDevice(shippingDevice); |
|
|
|
//更新售后出货设备为品质合格
|
|
|
|
AfterSalesShippingDevice salesDevice = afterSalesDeviceMapper.selectAfterSalesShippingDeviceByShippingDeviceId(deviceId); |
|
|
|
salesDevice.setQualityStatus("2");//品质合格(审核通过)
|
|
|
|
salesDevice.setUpdateBy(loginName); |
|
|
|
salesDevice.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
afterSalesDeviceMapper.updateAfterSalesShippingDevice(salesDevice); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//更新生产订单bom已完成数
|
|
|
@ -536,18 +592,20 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
if(makeorderBom == null){ |
|
|
|
throw new BusinessException("关联生产单bom为空!请检查"); |
|
|
|
} |
|
|
|
int bomFinishNum = makeorderBom.getFinishNum(); |
|
|
|
int bomFinishNum = Optional.ofNullable(makeorderBom.getFinishNum()) |
|
|
|
.orElse(0); |
|
|
|
bomFinishNum = bomFinishNum + qualifiedNum; |
|
|
|
makeorderBom.setFinishNum(bomFinishNum); |
|
|
|
makeorderBomMapper.updateSysMakeorderBom(makeorderBom); |
|
|
|
|
|
|
|
//更新生产订单已完成数
|
|
|
|
SysMakeOrder makeOrder = makeOrderMapper.selectMakeOrderByMakeNo(makeNo); |
|
|
|
if(makeOrder == null){ |
|
|
|
throw new BusinessException("关联生产订单不存在!请检查"); |
|
|
|
} |
|
|
|
int makeOrderFinishNum = makeOrder.getFinishNum(); |
|
|
|
int makeOrderNum = makeOrder.getMaterialSum(); |
|
|
|
int makeOrderFinishNum = Optional.ofNullable(makeOrder.getFinishNum()) |
|
|
|
.orElse(0); |
|
|
|
int makeOrderNum = Optional.ofNullable(makeOrder.getMaterialSum()) |
|
|
|
.orElse(0); |
|
|
|
makeOrderFinishNum = makeOrderFinishNum + qualifiedNum; |
|
|
|
makeOrder.setFinishNum(makeOrderFinishNum); |
|
|
|
//订单数>完成数,部分完成,部分品质
|
|
|
@ -598,17 +656,19 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
* 更新品质单表、品质单详情表、品质单关联设备表、售后设备表*/ |
|
|
|
@Override |
|
|
|
public void updateDisApprovedInfo(QualityOrderReportVO qualityOrderReportVO) { |
|
|
|
String quaoityOrderCode = qualityOrderReportVO.getQualityOrderCode(); |
|
|
|
String qualityOrderCode = qualityOrderReportVO.getQualityOrderCode(); |
|
|
|
String materialNo = qualityOrderReportVO.getMaterialNo(); |
|
|
|
String makeNo = qualityOrderReportVO.getRelatedOrderCode(); |
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
|
|
|
|
int checkNum = qualityOrderReportVO.getCheckNum(); |
|
|
|
int checkNum = Optional.ofNullable(qualityOrderReportVO.getCheckNum()) |
|
|
|
.orElse(0); |
|
|
|
/** |
|
|
|
更新品质单详情待审核数 |
|
|
|
*/ |
|
|
|
QualityOrderDetail qualityOrderDetail = orderDetailMapper.selectQualityOrderDetailByCode(quaoityOrderCode); |
|
|
|
int detailPendingReviewNum = qualityOrderDetail.getPendingReviewNum(); |
|
|
|
QualityOrderDetail qualityOrderDetail = orderDetailMapper.selectQualityOrderDetailByCode(qualityOrderCode); |
|
|
|
int detailPendingReviewNum = Optional.ofNullable(qualityOrderDetail.getPendingReviewNum()) |
|
|
|
.orElse(0); |
|
|
|
detailPendingReviewNum = detailPendingReviewNum - checkNum; |
|
|
|
qualityOrderDetail.setPendingReviewNum(detailPendingReviewNum); |
|
|
|
qualityOrderDetail.setUpdateBy(loginName); |
|
|
@ -616,12 +676,16 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
orderDetailMapper.updateQualityOrderDetail(qualityOrderDetail); |
|
|
|
/** |
|
|
|
更新品质单待审核数*/ |
|
|
|
QualityOrder qualityOrder = qualityOrderMapper.selectQualityOrderByCode(quaoityOrderCode); |
|
|
|
int orderPendingReviewNum = qualityOrder.getPendingReviewNum(); |
|
|
|
QualityOrder qualityOrder = qualityOrderMapper.selectQualityOrderByCode(qualityOrderCode); |
|
|
|
int orderPendingReviewNum = Optional.ofNullable(qualityOrder.getPendingReviewNum()) |
|
|
|
.orElse(0); |
|
|
|
orderPendingReviewNum = orderPendingReviewNum - checkNum; |
|
|
|
qualityOrder.setPendingReviewNum(orderPendingReviewNum); |
|
|
|
int orderQualifiedNum = qualityOrder.getQualityQualifiedNum(); |
|
|
|
int orderUnqualifiedNum = qualityOrder.getQualityUnqualifiedNum(); |
|
|
|
int orderQualifiedNum = Optional.ofNullable(qualityOrder.getQualityQualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
int orderUnqualifiedNum = Optional.ofNullable(qualityOrder.getQualityUnqualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
//更新品质单品质状态
|
|
|
|
int qualityNum = orderQualifiedNum + orderUnqualifiedNum + orderPendingReviewNum; |
|
|
|
if(qualityNum == 0){ |
|
|
|
qualityOrder.setQualityStatus("0");//待品质
|
|
|
@ -642,7 +706,11 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
if (StringUtils.isNotEmpty(deviceIds)) { |
|
|
|
for (String deviceId : deviceIds) { |
|
|
|
//更新品质单关联设备状态
|
|
|
|
QualityShippingDevice shippingDevice = shippingDeviceMapper.selectQualityShippingDeviceByDeviceId(deviceId); |
|
|
|
QualityShippingDevice tempDevice = new QualityShippingDevice(); |
|
|
|
tempDevice.setQualityOrderCode(qualityOrderCode); |
|
|
|
tempDevice.setShippingDeviceId(deviceId); |
|
|
|
QualityShippingDevice shippingDevice = shippingDeviceMapper.selectQualityShippingDeviceByDeviceId(tempDevice); |
|
|
|
|
|
|
|
shippingDevice.setQualityAuditStatus("2");//审核拒绝
|
|
|
|
shippingDevice.setQualityStatus("1");//待品质
|
|
|
|
shippingDevice.setUpdateBy(loginName); |
|
|
@ -702,5 +770,319 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService |
|
|
|
storageOrderDetail.setCreateTime(DateUtils.getNowDate()); |
|
|
|
return storageOrderDetail; |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
* 审核通过后更新数据(采购入库) |
|
|
|
* 来料品质更新品质单表、品质单详情表、入库单*/ |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@Override |
|
|
|
public void updatePurchaseApprovedInfo(QualityOrderReportVO qualityOrderReportVO) { |
|
|
|
String quaoityOrderCode = qualityOrderReportVO.getQualityOrderCode(); |
|
|
|
String materialNo = qualityOrderReportVO.getMaterialNo(); |
|
|
|
String makeNo = qualityOrderReportVO.getRelatedOrderCode(); |
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
|
|
|
|
int qualifiedNum = Optional.ofNullable(qualityOrderReportVO.getQualityHasqualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
int unQualifiedNum = Optional.ofNullable(qualityOrderReportVO.getProcessBadNum()) |
|
|
|
.orElse(0); |
|
|
|
int checkNum = Optional.ofNullable(qualityOrderReportVO.getCheckNum()) |
|
|
|
.orElse(0); |
|
|
|
|
|
|
|
/** |
|
|
|
更新品质单详情合格数、不良数 |
|
|
|
*/ |
|
|
|
QualityOrderDetail qualityOrderDetail = orderDetailMapper.selectQualityOrderDetailByCode(quaoityOrderCode); |
|
|
|
//更新待审核数
|
|
|
|
int detailPendingReviewNum = Optional.ofNullable(qualityOrderDetail.getPendingReviewNum()) |
|
|
|
.orElse(0); |
|
|
|
detailPendingReviewNum = detailPendingReviewNum - checkNum; |
|
|
|
qualityOrderDetail.setPendingReviewNum(detailPendingReviewNum); |
|
|
|
//更新品质单详情合格数
|
|
|
|
int detailQualifiedNum = Optional.ofNullable(qualityOrderDetail.getQualityQualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
detailQualifiedNum = detailQualifiedNum + qualifiedNum; |
|
|
|
qualityOrderDetail.setQualityQualifiedNum(detailQualifiedNum); |
|
|
|
//更新品质单详情不合格数
|
|
|
|
int detailUnqualifiedNum = Optional.ofNullable(qualityOrderDetail.getQualityUnqualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
detailUnqualifiedNum = detailUnqualifiedNum + unQualifiedNum; |
|
|
|
qualityOrderDetail.setQualityUnqualifiedNum(detailUnqualifiedNum); |
|
|
|
|
|
|
|
qualityOrderDetail.setUpdateBy(loginName); |
|
|
|
qualityOrderDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
orderDetailMapper.updateQualityOrderDetail(qualityOrderDetail); |
|
|
|
/** |
|
|
|
更新品质单合格数、不良数*/ |
|
|
|
QualityOrder qualityOrder = qualityOrderMapper.selectQualityOrderByCode(quaoityOrderCode); |
|
|
|
|
|
|
|
//更新待审核数
|
|
|
|
int orderPendingReviewNum = Optional.ofNullable(qualityOrder.getPendingReviewNum()) |
|
|
|
.orElse(0); |
|
|
|
orderPendingReviewNum = orderPendingReviewNum - checkNum; |
|
|
|
|
|
|
|
//更新品质单合格数、不良数
|
|
|
|
int orderQualifiedNum = Optional.ofNullable(qualityOrder.getQualityQualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
int orderUnqualifiedNum = Optional.ofNullable(qualityOrder.getQualityUnqualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
orderQualifiedNum = orderQualifiedNum + qualifiedNum; |
|
|
|
orderUnqualifiedNum = orderUnqualifiedNum + unQualifiedNum; |
|
|
|
int qualityNum = orderQualifiedNum + orderUnqualifiedNum + orderPendingReviewNum; |
|
|
|
if(qualityNum < qualityOrder.getThisArrivedNum()){ |
|
|
|
qualityOrder.setQualityStatus("1");//部分品质
|
|
|
|
} |
|
|
|
if(qualityNum == qualityOrder.getThisArrivedNum()){ |
|
|
|
qualityOrder.setQualityStatus("2");//全部品质
|
|
|
|
} |
|
|
|
qualityOrder.setQualityQualifiedNum(orderQualifiedNum); |
|
|
|
qualityOrder.setQualityUnqualifiedNum(orderUnqualifiedNum); |
|
|
|
qualityOrder.setPendingReviewNum(orderPendingReviewNum); |
|
|
|
qualityOrder.setUpdateBy(loginName); |
|
|
|
qualityOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
qualityOrderMapper.updateQualityOrder(qualityOrder); |
|
|
|
|
|
|
|
//更新关联入库单详情状态
|
|
|
|
String storageCode = qualityOrderReportVO.getInStorageCode(); |
|
|
|
WarehouseStorageOrderDetail tempDetail = new WarehouseStorageOrderDetail(); |
|
|
|
tempDetail.setWarehouseStorageCode(storageCode); |
|
|
|
tempDetail.setSupplierCode(qualityOrderReportVO.getSupplierCode()); |
|
|
|
tempDetail.setMaterialNo(materialNo); |
|
|
|
WarehouseStorageOrderDetail storageDetail = storageDetailMapper.selectWarehouseStorageOrderByObject(tempDetail); |
|
|
|
if(storageDetail == null){ |
|
|
|
throw new BusinessException("关联入库单详情为空!"); |
|
|
|
} |
|
|
|
int storageDetailQualifiedNum = Optional.ofNullable(storageDetail.getQualityQualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
storageDetailQualifiedNum = storageDetailQualifiedNum + qualifiedNum; |
|
|
|
storageDetail.setQualityQualifiedNum(storageDetailQualifiedNum); |
|
|
|
storageDetail.setQualityHasQualifiedNum(storageDetailQualifiedNum);//品质已合格数
|
|
|
|
storageDetail.setUpdateBy(loginName); |
|
|
|
storageDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
storageDetailMapper.updateWarehouseStorageOrderDetail(storageDetail); |
|
|
|
|
|
|
|
//更新关联入库单状态
|
|
|
|
WarehouseStorageOrder storageOrder = storageOrderMapper.selectWarehouseStorageOrderByCode(storageCode); |
|
|
|
if(storageOrder == null){ |
|
|
|
throw new BusinessException("关联入库单为空!"); |
|
|
|
} |
|
|
|
int storageQualifiedNum = Optional.ofNullable(storageOrder.getQualityQualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
int unStorageQualifiedNum = Optional.ofNullable(storageOrder.getQualityUnqualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
storageQualifiedNum = storageQualifiedNum + qualifiedNum; |
|
|
|
unStorageQualifiedNum = unStorageQualifiedNum + unQualifiedNum; |
|
|
|
|
|
|
|
storageOrder.setQualityQualifiedNum(storageQualifiedNum); |
|
|
|
storageOrder.setQualityUnqualifiedNum(unStorageQualifiedNum); |
|
|
|
int storageQualifyNum = storageQualifiedNum + unStorageQualifiedNum; |
|
|
|
if(storageQualifyNum < storageOrder.getTemporaryQualifiedNum()){ |
|
|
|
storageOrder.setWarehouseQualityStatus("1");//部分品质
|
|
|
|
} |
|
|
|
if(storageQualifyNum == storageOrder.getTemporaryQualifiedNum()){ |
|
|
|
storageOrder.setWarehouseQualityStatus("2");//全部品质
|
|
|
|
} |
|
|
|
storageOrder.setUpdateBy(loginName); |
|
|
|
storageOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
storageOrder.setQualityTime(qualityOrderReportVO.getCheckoutCompletionTime()); |
|
|
|
storageOrderMapper.updateWarehouseStorageOrder(storageOrder); |
|
|
|
|
|
|
|
//不合格数大于0生成退换货单
|
|
|
|
if(unQualifiedNum > 0){ |
|
|
|
String refundsCodes = redisCache.generateBillNo("THH"); |
|
|
|
QualityRefundsExchanges refundsExchanges = generateQualityRefundsExchange(qualityOrderReportVO,refundsCodes); |
|
|
|
|
|
|
|
//生成退换货入库单和退换货入库详情
|
|
|
|
WarehouseStorageOrder refundStorageOrder = generateWarehouseStorageOrder(refundsCodes,qualityOrderReportVO); |
|
|
|
WarehouseStorageOrderDetail refundStorageOrderDetail = generateWarehouseStorageOrderDetail(refundStorageOrder.getWarehouseStorageCode(),refundsCodes,qualityOrderDetail); |
|
|
|
|
|
|
|
if(qualityOrderReportVO.getQualityOrderReportType().equals("2")){//采购品质
|
|
|
|
refundStorageOrder.setWarehouseOrderType("2");//退换货订单
|
|
|
|
refundStorageOrderDetail.setWarehouseOrderType("2");//退换货订单
|
|
|
|
} |
|
|
|
int refundStorageDetailResult = storageDetailMapper.insertWarehouseStorageOrderDetail(refundStorageOrderDetail); |
|
|
|
if(refundStorageDetailResult<=0){ |
|
|
|
throw new BusinessException("新增退换货入库单详情失败"); |
|
|
|
} |
|
|
|
int storageResult = storageOrderMapper.insertWarehouseStorageOrder(refundStorageOrder); |
|
|
|
if(storageResult<=0){ |
|
|
|
throw new BusinessException("新增退换货入库单失败"); |
|
|
|
} |
|
|
|
//生成退换货详情
|
|
|
|
QualityRefundsExchangesDetail refundsExchangesDetail = generateRefundsExchangesDetail(refundsCodes,qualityOrderDetail,refundStorageOrder.getWarehouseStorageCode()); |
|
|
|
//生成退换货单报告
|
|
|
|
QualityRefundsExchangesOrder refundsExchangesOrder = generateQualityRefundsExchangesOrder(refundsExchanges.getRefundsExchangesCode(),qualityOrderReportVO,qualityOrderDetail); |
|
|
|
|
|
|
|
//新增退换货单不良分类
|
|
|
|
QualityOrderReportUnqualified tempUnqualify = new QualityOrderReportUnqualified(); |
|
|
|
tempUnqualify.setQualityOrderReportCode(qualityOrderReportVO.getQualityOrderReportCode()); |
|
|
|
List<QualityOrderReportUnqualified> unqualifieds = unqualifiedMapper.selectQualityOrderReportUnqualifiedList(tempUnqualify); |
|
|
|
if(StringUtils.isEmpty(unqualifieds)){ |
|
|
|
throw new BusinessException("品质报告不良分类为空!"); |
|
|
|
} |
|
|
|
for (QualityOrderReportUnqualified unqualify:unqualifieds) { |
|
|
|
QualityRefundsExchangesUnqualified exchangesUnqualified = new QualityRefundsExchangesUnqualified(); |
|
|
|
exchangesUnqualified.setRefundsExchangesCode(refundsExchanges.getRefundsExchangesCode()); |
|
|
|
exchangesUnqualified.setMaterialNo(qualityOrderReportVO.getMaterialNo()); |
|
|
|
exchangesUnqualified.setMaterialName(qualityOrderReportVO.getMaterialName()); |
|
|
|
exchangesUnqualified.setProcessBadClassification(unqualify.getProcessBadClassification()); |
|
|
|
exchangesUnqualified.setProcessBadGrade(unqualify.getProcessBadGrade()); |
|
|
|
exchangesUnqualified.setProcessBadNum(unqualify.getProcessBadNum()); |
|
|
|
exchangesUnqualified.setUnqualifiedReportUrl(unqualify.getUnqualifiedReportUrl()); |
|
|
|
exchangesUnqualified.setInspectionTime(qualityOrderReportVO.getDeliveryInspectionTime()); |
|
|
|
exchangesUnqualified.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
exchangesUnqualified.setCreateTime(DateUtils.getNowDate()); |
|
|
|
int exchangeUnqualifiedResult = exchangesUnqualifiedMapper.insertQualityRefundsExchangesUnqualified(exchangesUnqualified); |
|
|
|
if (exchangeUnqualifiedResult <= 0){ |
|
|
|
throw new BusinessException("插入退换货品质报告不合格分类失败,未影响任何行"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
int exchangeOrderResult = refundsExchangesOrderMapper.insertQualityRefundsExchangesOrder(refundsExchangesOrder); |
|
|
|
if(exchangeOrderResult<=0){ |
|
|
|
throw new BusinessException("新增退换货单报告失败"); |
|
|
|
} |
|
|
|
|
|
|
|
int exchangeDetailResult = refundsExchangesDetailMapper.insertQualityRefundsExchangesDetail(refundsExchangesDetail); |
|
|
|
if(exchangeDetailResult<=0){ |
|
|
|
throw new BusinessException("新增退换货单详情失败"); |
|
|
|
} |
|
|
|
|
|
|
|
int exchangeResult = refundsExchangesMapper.insertQualityRefundsExchanges(refundsExchanges); |
|
|
|
if(exchangeResult<=0){ |
|
|
|
throw new BusinessException("新增退换货单失败"); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//根据品质报告单生成退换货单
|
|
|
|
public QualityRefundsExchanges generateQualityRefundsExchange(QualityOrderReportVO qualityReportVO, String refundsCodes){ |
|
|
|
QualityRefundsExchanges refundsExchanges = new QualityRefundsExchanges(); |
|
|
|
refundsExchanges.setRefundsExchangesCode(refundsCodes); |
|
|
|
refundsExchanges.setRefundsExchangesStatus("0");//待结案
|
|
|
|
refundsExchanges.setQualityDeliveryStatus("0");//待收货
|
|
|
|
refundsExchanges.setQualityPurchaseStatus("0");//待确认
|
|
|
|
refundsExchanges.setQualityWarehouseStatus("0");//待入库
|
|
|
|
refundsExchanges.setWarehouseStorageType("0");//采购入库
|
|
|
|
refundsExchanges.setQualityReturnNode("0");//入库前退货
|
|
|
|
refundsExchanges.setRelatedOrderCode(qualityReportVO.getQualityOrderCode()); |
|
|
|
refundsExchanges.setInStorageCode(qualityReportVO.getInStorageCode()); |
|
|
|
refundsExchanges.setMaterialTotal(1); |
|
|
|
refundsExchanges.setNumTotal(qualityReportVO.getProcessBadNum()); |
|
|
|
refundsExchanges.setDeliveryInspectionTime(qualityReportVO.getDeliveryInspectionTime()); |
|
|
|
refundsExchanges.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
refundsExchanges.setCreateTime(DateUtils.getNowDate()); |
|
|
|
return refundsExchanges; |
|
|
|
} |
|
|
|
|
|
|
|
//根据品质单详情生成退换货详情
|
|
|
|
public QualityRefundsExchangesDetail generateRefundsExchangesDetail(String refundsExchangesCode,QualityOrderDetail detail,String storageCode){ |
|
|
|
QualityRefundsExchangesDetail exchangesDetail = new QualityRefundsExchangesDetail(); |
|
|
|
exchangesDetail.setRefundsExchangesCode(refundsExchangesCode); |
|
|
|
exchangesDetail.setRefundsExchangesStatus("0");//待结案
|
|
|
|
exchangesDetail.setQualityWarehouseStatus("0");//待入库
|
|
|
|
exchangesDetail.setQualityPurchaseStatus("0");//待确认
|
|
|
|
exchangesDetail.setQualityDeliveryStatus("0");//待收货
|
|
|
|
exchangesDetail.setQualityReturnNode("0");//入库前退货
|
|
|
|
exchangesDetail.setRelatedOrderCode(detail.getQualityOrderCode()); |
|
|
|
exchangesDetail.setInStorageCode(storageCode); |
|
|
|
exchangesDetail.setQualityWarehouseStatus(detail.getQualityStorageStatus()); |
|
|
|
exchangesDetail.setDeliveryInspectionTime(detail.getDeliveryInspectionTime()); |
|
|
|
exchangesDetail.setMaterialNo(detail.getMaterialNo()); |
|
|
|
exchangesDetail.setMaterialName(detail.getMaterialName()); |
|
|
|
exchangesDetail.setMaterialType(detail.getMaterialType()); |
|
|
|
exchangesDetail.setMaterialBrand(detail.getMaterialBrand()); |
|
|
|
exchangesDetail.setMaterialPhotourl(detail.getMaterialPhotourl()); |
|
|
|
exchangesDetail.setMaterialBrand(detail.getMaterialBrand()); |
|
|
|
exchangesDetail.setMaterialProcessMethod(detail.getMaterialProcessMethod()); |
|
|
|
exchangesDetail.setMaterialUnit(detail.getMaterialUnit()); |
|
|
|
exchangesDetail.setRefundsExchangesNum(detail.getQualityUnqualifiedNum()); |
|
|
|
exchangesDetail.setQualityUnqualifiedNum(detail.getQualityUnqualifiedNum()); |
|
|
|
exchangesDetail.setSupplierCode(detail.getSupplierCode()); |
|
|
|
exchangesDetail.setSupplierName(detail.getSupplierName()); |
|
|
|
exchangesDetail.setSupplierAddress(detail.getSupplierAddress()); |
|
|
|
exchangesDetail.setCustomerContact(detail.getCustomerContact()); |
|
|
|
exchangesDetail.setContactNumber(detail.getContactNumber()); |
|
|
|
exchangesDetail.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
exchangesDetail.setCreateTime(DateUtils.getNowDate()); |
|
|
|
return exchangesDetail; |
|
|
|
} |
|
|
|
|
|
|
|
//根据品质单详情和品质报告生成退换货报告
|
|
|
|
public QualityRefundsExchangesOrder generateQualityRefundsExchangesOrder(String refundsExchangesCode,QualityOrderReport qualityReport,QualityOrderDetail detail){ |
|
|
|
QualityRefundsExchangesOrder exchangesOrder = new QualityRefundsExchangesOrder(); |
|
|
|
exchangesOrder.setRefundsExchangesCode(refundsExchangesCode); |
|
|
|
exchangesOrder.setSupplierCode(detail.getSupplierCode()); |
|
|
|
exchangesOrder.setSupplierName(detail.getSupplierName()); |
|
|
|
exchangesOrder.setMaterialNo(detail.getMaterialNo()); |
|
|
|
exchangesOrder.setMaterialName(detail.getMaterialName()); |
|
|
|
exchangesOrder.setMakeTotal(detail.getMakeTotal()); |
|
|
|
exchangesOrder.setQualityHasqualifiedNum(detail.getQualityHasqualifiedNum()); |
|
|
|
exchangesOrder.setOkAcceptedNum(qualityReport.getOkAcceptedNum()); |
|
|
|
exchangesOrder.setOkReportUrl(qualityReport.getOkReportUrl()); |
|
|
|
exchangesOrder.setSpecialConcessionsNum(qualityReport.getSpecialConcessionsNum()); |
|
|
|
exchangesOrder.setSpecialReportUrl(qualityReport.getSpecialReportUrl()); |
|
|
|
exchangesOrder.setCheckoutCompletionTime(qualityReport.getCheckoutCompletionTime()); |
|
|
|
exchangesOrder.setProcessBadNum(qualityReport.getProcessBadNum()); |
|
|
|
exchangesOrder.setUnqualifiedReportUrl(qualityReport.getUnqualifiedReportUrl()); |
|
|
|
exchangesOrder.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
exchangesOrder.setCreateTime(DateUtils.getNowDate()); |
|
|
|
return exchangesOrder; |
|
|
|
} |
|
|
|
|
|
|
|
//根据品质单生成退换货入库单
|
|
|
|
public WarehouseStorageOrder generateWarehouseStorageOrder(String refundsExchangesCode, QualityOrderReportVO qualityReportVO){ |
|
|
|
WarehouseStorageOrder warehouseStorageOrder = new WarehouseStorageOrder(); |
|
|
|
warehouseStorageOrder.setWarehouseStorageCode(redisCache.generateBillNo("RK")); |
|
|
|
warehouseStorageOrder.setRelatedOrderCode(refundsExchangesCode); |
|
|
|
warehouseStorageOrder.setWarehouseStorageStatus("2");//待入库
|
|
|
|
warehouseStorageOrder.setWarehouseQualityStatus("2");//全部品质
|
|
|
|
warehouseStorageOrder.setWarehouseStorageType("3");//公司退货
|
|
|
|
warehouseStorageOrder.setWarehouseOrderType("2");//退换货订单
|
|
|
|
warehouseStorageOrder.setWarehouseDeptType("0");//仓库
|
|
|
|
warehouseStorageOrder.setNotifyArrivedNum(qualityReportVO.getProcessBadNum()); |
|
|
|
warehouseStorageOrder.setQualityQualifiedNum(qualityReportVO.getQualityHasqualifiedNum()); |
|
|
|
warehouseStorageOrder.setQualityUnqualifiedNum(qualityReportVO.getProcessBadNum()); |
|
|
|
warehouseStorageOrder.setDeliveryInspectionTime(qualityReportVO.getDeliveryInspectionTime()); |
|
|
|
warehouseStorageOrder.setQualityTime(qualityReportVO.getCheckoutCompletionTime()); |
|
|
|
warehouseStorageOrder.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
warehouseStorageOrder.setCreateTime(DateUtils.getNowDate()); |
|
|
|
return warehouseStorageOrder; |
|
|
|
} |
|
|
|
|
|
|
|
//根据品质单详情生成退换货入库单详情
|
|
|
|
public WarehouseStorageOrderDetail generateWarehouseStorageOrderDetail(String warehouseStorageCode,String refundsExchangesCode,QualityOrderDetail detail){ |
|
|
|
WarehouseStorageOrderDetail storageOrderDetail = new WarehouseStorageOrderDetail(); |
|
|
|
storageOrderDetail.setWarehouseStorageCode(warehouseStorageCode); |
|
|
|
storageOrderDetail.setRelatedOrderCode(refundsExchangesCode); |
|
|
|
storageOrderDetail.setWarehouseStorageStatus("2");//待入库
|
|
|
|
storageOrderDetail.setWarehouseQualityStatus("2");//全部品质
|
|
|
|
storageOrderDetail.setWarehouseStorageType("3");//公司退货
|
|
|
|
storageOrderDetail.setWarehouseDeptType("0");//仓库入库
|
|
|
|
storageOrderDetail.setSupplierCode(detail.getSupplierCode()); |
|
|
|
storageOrderDetail.setSupplierName(detail.getSupplierName()); |
|
|
|
storageOrderDetail.setSupplierAddress(detail.getSupplierAddress()); |
|
|
|
storageOrderDetail.setCustomerContact(detail.getCustomerContact()); |
|
|
|
storageOrderDetail.setContactNumber(detail.getContactNumber()); |
|
|
|
storageOrderDetail.setMaterialNo(detail.getMaterialNo()); |
|
|
|
storageOrderDetail.setMaterialName(detail.getMaterialName()); |
|
|
|
storageOrderDetail.setMaterialType(detail.getMaterialType()); |
|
|
|
storageOrderDetail.setMaterialBrand(detail.getMaterialBrand()); |
|
|
|
storageOrderDetail.setMaterialPhotourl(detail.getMaterialPhotourl()); |
|
|
|
storageOrderDetail.setMaterialBrand(detail.getMaterialBrand()); |
|
|
|
storageOrderDetail.setMaterialProcessMethod(detail.getMaterialProcessMethod()); |
|
|
|
storageOrderDetail.setMaterialUnit(detail.getMaterialUnit()); |
|
|
|
storageOrderDetail.setMakeTotal(detail.getMakeTotal()); |
|
|
|
storageOrderDetail.setActualArriveNum(detail.getQualityQualifiedNum()); |
|
|
|
storageOrderDetail.setQualityQualifiedNum(detail.getQualityQualifiedNum()); |
|
|
|
storageOrderDetail.setQualityHasQualifiedNum(detail.getQualityHasqualifiedNum()); |
|
|
|
storageOrderDetail.setRefundsExchangesNum(detail.getQualityUnqualifiedNum()); |
|
|
|
storageOrderDetail.setDeliveryInspectionTime(detail.getDeliveryInspectionTime()); |
|
|
|
storageOrderDetail.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
storageOrderDetail.setCreateTime(DateUtils.getNowDate()); |
|
|
|
return storageOrderDetail; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|