Browse Source

[fix]

品质管理 品质单
修改来料品质单开始品质跳转controller接口和详情接口;
修改品质报告单跳转审批页面controller接口和完成任务接口,新增采购类型跳转方法;
修改审核通过后更新数据生产品质service方法,添加非空验证,新增全部品质后更新设备状态语句;
新增采购品质审核通过后更新数据service方法,新增根据品质报告单生成退换货单、详情、退换货入库service方法;
修改品质单关联设备查询品质单关联出货设备mapper方法,根据品质单号和设备ID查询;
dev
王晓迪 3 months ago
parent
commit
f5292309a1
  1. 6
      ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityOrderController.java
  2. 21
      ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityOrderReportController.java
  3. 2
      ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityShippingDeviceMapper.java
  4. 2
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityOrderReportService.java
  5. 472
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderReportServiceImpl.java
  6. 2
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderServiceImpl.java
  7. 3
      ruoyi-admin/src/main/resources/mapper/quality/QualityShippingDeviceMapper.xml

6
ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityOrderController.java

@ -169,7 +169,7 @@ public class QualityOrderController extends BaseController
QualityOrderDetail qualityOrderDetail = detailService.selectQualityOrderDetailByCode(qualityOrder.getQualityOrderCode());
mmap.put("qualityOrderDetail",qualityOrderDetail);
// mmap.put("qualityOrder", qualityOrder);
return prefix + "/startingQuality";
return prefix + "/iqcStartingQuality";
}
/**
@ -213,8 +213,10 @@ public class QualityOrderController extends BaseController
public String startingQualityDetail(@PathVariable("qualityOrderId") Long qualityOrderId, ModelMap mmap)
{
QualityOrder qualityOrder = qualityOrderService.selectQualityOrderById(qualityOrderId);
QualityOrderDetail qualityDetail = detailService.selectQualityOrderDetailByCode(qualityOrder.getQualityOrderCode());
mmap.put("qualityOrder", qualityOrder);
return prefix + "/startingQualityDetail";
mmap.put("qualityDetail", qualityDetail);
return prefix + "/iqcStartingQualityDetail";
}
/**

21
ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityOrderReportController.java

@ -5,11 +5,9 @@ import java.util.HashMap;
import java.util.List;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.quality.domain.QualityOrderReportUnqualified;
import com.ruoyi.quality.domain.QualityShippingDevice;
import com.ruoyi.quality.domain.*;
import com.ruoyi.quality.domain.VO.QualityOrderReportVO;
import com.ruoyi.quality.service.IQualityOrderReportUnqualifiedService;
import com.ruoyi.quality.service.IQualityShippingDeviceService;
import com.ruoyi.quality.service.*;
import com.ruoyi.system.domain.Vo.BaseEmpRequisiteOrderVO;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.warehouse.domain.WarehouseInventoryReportDamageChild;
@ -28,8 +26,6 @@ import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.quality.domain.QualityOrderReport;
import com.ruoyi.quality.service.IQualityOrderReportService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
@ -53,6 +49,9 @@ public class QualityOrderReportController extends BaseController
@Autowired
private IQualityOrderReportService qualityOrderReportService;
@Autowired
private IQualityOrderDetailService qualityDetailService;
@Autowired
private IQualityShippingDeviceService qualityShippingDeviceService;
@ -162,13 +161,18 @@ public class QualityOrderReportController extends BaseController
mmap.put("formData", qualityOrderReportVO);
mmap.put("taskId", taskId);
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1);
if(qualityOrderReportVO.getQualityOrderReportType().equals("2")){
QualityOrderDetail qualityDetail = qualityDetailService.selectQualityOrderDetailByCode(qualityOrderReportVO.getQualityOrderCode());
mmap.put("qualityDetail", qualityDetail);
return prefix + "/task" + verifyName + "Purchase";
}
return prefix + "/task" + verifyName;
}
/**
* 自动绑定页面字段
*/
@ModelAttribute("preloadObj")
public QualityOrderReportVO getObj(@RequestParam(value = "requisiteId", required = false) Long qualityOrderReportId, HttpSession session) {
public QualityOrderReportVO getObj(@RequestParam(value = "qualityOrderReportId", required = false) Long qualityOrderReportId, HttpSession session) {
if (qualityOrderReportId != null) {
return qualityOrderReportService.selectQualityOrderReportById(qualityOrderReportId);
@ -207,6 +211,9 @@ public class QualityOrderReportController extends BaseController
||tempQualityReport.getQualityOrderReportType().equals("1")){
qualityOrderReportService.updateApprovedInfo(tempQualityReport);
}
if(tempQualityReport.getQualityOrderReportType().equals("2")){//采购品质审批
qualityOrderReportService.updatePurchaseApprovedInfo(tempQualityReport);
}
}
}
qualityOrderReportService.updateMakeOrderQualityReport(tempQualityReport);

2
ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityShippingDeviceMapper.java

@ -22,7 +22,7 @@ public interface QualityShippingDeviceMapper
/**
* 查询品质单关联出货设备
*/
public QualityShippingDevice selectQualityShippingDeviceByDeviceId(String shippingDeviceId);
public QualityShippingDevice selectQualityShippingDeviceByDeviceId(QualityShippingDevice shippingDevice);
/**
* 查询品质单关联出货设备列表

2
ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityOrderReportService.java

@ -115,4 +115,6 @@ public interface IQualityOrderReportService
* 审核拒绝后更新数据(生产入库成品品质)
* 更新品质单表品质单详情表品质单关联设备表售后设备表*/
void updateDisApprovedInfo(QualityOrderReportVO qualityOrderReportVO);
void updatePurchaseApprovedInfo(QualityOrderReportVO qualityOrderReportVO);
}

472
ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderReportServiceImpl.java

@ -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;
}
}

2
ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderServiceImpl.java

@ -317,7 +317,7 @@ public class QualityOrderServiceImpl implements IQualityOrderService
exchangesUnqualified.setCreateTime(DateUtils.getNowDate());
int exchangeUnqualifiedResult = exchangesUnqualifiedMapper.insertQualityRefundsExchangesUnqualified(exchangesUnqualified);
if (exchangeUnqualifiedResult <= 0){
log.warn("插入入库单详情失败,未影响任何行");
throw new BusinessException("插入品质报告不合格分类失败,未影响任何行");
}
}

3
ruoyi-admin/src/main/resources/mapper/quality/QualityShippingDeviceMapper.xml

@ -53,9 +53,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where shipping_device_code = #{shippingDeviceCode}
</select>
<select id="selectQualityShippingDeviceByDeviceId" parameterType="String" resultMap="QualityShippingDeviceResult">
<select id="selectQualityShippingDeviceByDeviceId" parameterType="QualityShippingDevice" resultMap="QualityShippingDeviceResult">
<include refid="selectQualityShippingDeviceVo"/>
where shipping_device_id = #{shippingDeviceId}
and quality_order_code = #{qualityOrderCode}
</select>
<insert id="insertQualityShippingDevice" parameterType="QualityShippingDevice" useGeneratedKeys="true" keyProperty="shippingDeviceCode">

Loading…
Cancel
Save