Compare commits

...

8 Commits

Author SHA1 Message Date
王晓迪 f503afc410 [feat] 4 weeks ago
王晓迪 f05cf1ed41 [feat] 4 weeks ago
王晓迪 0833a6ccee [feat] 4 weeks ago
王晓迪 b177b97625 [feat] 4 weeks ago
王晓迪 978c730b04 Merge remote-tracking branch 'origin/dev' into dev 4 weeks ago
王晓迪 dc6501aa5c [feat] 4 weeks ago
王晓迪 6009d3a7d6 [feat] 4 weeks ago
王晓迪 3f009eacfd [feat] 4 weeks ago
  1. 4
      ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/mapper/BizTodoItemMapper.java
  2. 8
      ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/service/impl/BizTodoItemServiceImpl.java
  3. 13
      ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchasePlan.java
  4. 10
      ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchasePlanChild.java
  5. 7
      ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchasePlanServiceImpl.java
  6. 70
      ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityRefundsExchangesController.java
  7. 2
      ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityRefundsExchangesMapper.java
  8. 8
      ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityRefundsExchangesOrderMapper.java
  9. 6
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityRefundsExchangesOrderService.java
  10. 8
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityRefundsExchangesService.java
  11. 223
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderServiceImpl.java
  12. 11
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityRefundsExchangesOrderServiceImpl.java
  13. 39
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityRefundsExchangesServiceImpl.java
  14. 11
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseRequisitioningOrderController.java
  15. 16
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseRequisitioningOrderService.java
  16. 51
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseRequisitioningOrderServiceImpl.java
  17. 2
      ruoyi-admin/src/main/resources/mapper/purchase/PurchasePlanChildMapper.xml
  18. 8
      ruoyi-admin/src/main/resources/mapper/quality/QualityRefundsExchangesMapper.xml
  19. 11
      ruoyi-admin/src/main/resources/mapper/quality/QualityRefundsExchangesOrderMapper.xml
  20. 8
      ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/afterQualityReportDetail.html
  21. 34
      ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/beforeConfirmDelivery.html
  22. 40
      ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/beforeHasConfirmSupplier.html
  23. 262
      ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/beforeQualityReportDetail.html
  24. 54
      ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/refundsExchanges.html
  25. 54
      ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/returnBeforeStorageDetail.html

4
ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/mapper/BizTodoItemMapper.java

@ -74,6 +74,10 @@ public interface BizTodoItemMapper {
@Select("SELECT USER_ID_ FROM ACT_ID_MEMBERSHIP WHERE GROUP_ID_ = (SELECT GROUP_ID_ FROM ACT_RU_IDENTITYLINK WHERE TASK_ID_ = #{taskId})")
List<String> selectTodoUserListByTaskId(@Param(value = "taskId") String taskId);
@Select("SELECT USER_ID_ FROM ACT_ID_MEMBERSHIP WHERE GROUP_ID_ in (SELECT GROUP_ID_ FROM ACT_RU_IDENTITYLINK WHERE TASK_ID_ = #{taskId})")
List<String> selectTodoUserListsByTaskId(@Param(value = "taskId") String taskId);
@Select("SELECT * FROM BIZ_TODO_ITEM WHERE TASK_ID = #{taskId} AND TODO_USER_ID = #{todoUserId}")
BizTodoItem selectTodoItemByCondition(@Param(value = "taskId") String taskId, @Param(value = "todoUserId") String todoUserId);

8
ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/service/impl/BizTodoItemServiceImpl.java

@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -182,7 +183,12 @@ public class BizTodoItemServiceImpl implements IBizTodoItemService {
counter++;
} else {
// 查询候选用户组,系统用户角色视图,group是角色
List<String> todoUserIdList = bizTodoItemMapper.selectTodoUserListByTaskId(task.getId());
List<String> todoUserIdList = new ArrayList<>();
if("requisitioning".equals(module)){
todoUserIdList = bizTodoItemMapper.selectTodoUserListsByTaskId(task.getId());
}else{
todoUserIdList = bizTodoItemMapper.selectTodoUserListByTaskId(task.getId());
}
//如果是查询初始化的
if (!CollectionUtils.isEmpty(todoUserIdList)) {
for (String todoUserId: todoUserIdList) {

13
ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchasePlan.java

@ -5,6 +5,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.List;
/**
@ -46,11 +47,11 @@ public class PurchasePlan extends BaseEntity
/** 不含税总价(RMB) */
@Excel(name = "不含税总价(RMB)")
private Long noRmbSum;
private BigDecimal noRmbSum;
/** 含税总价(RMB) */
@Excel(name = "含税总价(RMB)")
private Long rmbSum;
private BigDecimal rmbSum;
/** 申请人 */
@Excel(name = "申请人")
@ -144,21 +145,21 @@ public class PurchasePlan extends BaseEntity
{
return materialSum;
}
public void setNoRmbSum(Long noRmbSum)
public void setNoRmbSum(BigDecimal noRmbSum)
{
this.noRmbSum = noRmbSum;
}
public Long getNoRmbSum()
public BigDecimal getNoRmbSum()
{
return noRmbSum;
}
public void setRmbSum(Long rmbSum)
public void setRmbSum(BigDecimal rmbSum)
{
this.rmbSum = rmbSum;
}
public Long getRmbSum()
public BigDecimal getRmbSum()
{
return rmbSum;
}

10
ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchasePlanChild.java

@ -222,6 +222,16 @@ public class PurchasePlanChild extends BaseEntity
this.materialNum = materialNum;
}
public List<PurchaseQuoteChild> getParseSupplierMaterialCombinations() {
return parseSupplierMaterialCombinations;
}
public void setParseSupplierMaterialCombinations(List<PurchaseQuoteChild> parseSupplierMaterialCombinations) {
this.parseSupplierMaterialCombinations = parseSupplierMaterialCombinations;
}
public void setMaterialSole(Long materialSole)
{
this.materialSole = materialSole;

7
ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchasePlanServiceImpl.java

@ -1,5 +1,6 @@
package com.ruoyi.purchase.service.impl;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ -422,11 +423,11 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService
//添加数量合计
purchasePlan.setMaterialSum((long) purchasePlanMaterialSum);
purchasePlan.setNoRmbSum(sysMakeOrder.getNoRate());
purchasePlan.setRmbSum(sysMakeOrder.getRate());
purchasePlan.setNoRmbSum(new BigDecimal(sysMakeOrder.getNoRate()));
purchasePlan.setRmbSum(new BigDecimal(sysMakeOrder.getRate()));
purchasePlan.setApplyUser(sysMakeOrder.getSalesman());
purchasePlan.setCreateBy(ShiroUtils.getLoginName());
purchasePlan.setCreateTime(new Date());
purchasePlan.setCreateTime(DateUtils.getNowDate());
purchasePlan.setAuditStatus("0");
purchasePlan.setUseStatus("0");
purchasePlan.setPurchasePlanStatus("0");

70
ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityRefundsExchangesController.java

@ -11,7 +11,10 @@ import com.ruoyi.erp.domain.ErpMaterialVo;
import com.ruoyi.erp.service.IErpMaterialService;
import com.ruoyi.quality.domain.*;
import com.ruoyi.quality.domain.VO.CheckoutMaterialVO;
import com.ruoyi.quality.domain.VO.QualityRefundsExchangesExportVO;
import com.ruoyi.quality.mapper.QualityRefundsExchangesOrderMapper;
import com.ruoyi.quality.service.IQualityRefundsExchangesDetailService;
import com.ruoyi.quality.service.IQualityRefundsExchangesOrderService;
import com.ruoyi.quality.service.IQualityRefundsExchangesUnqualifiedService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
@ -53,6 +56,8 @@ public class QualityRefundsExchangesController extends BaseController
@Autowired
private IQualityRefundsExchangesDetailService refundsExchangesDetailService;
@Autowired
private IQualityRefundsExchangesOrderService refundsExchangesOrderService;
@RequiresPermissions("quality:refundsExchanges:view")
@GetMapping()
public String refundsExchanges()
@ -80,10 +85,25 @@ public class QualityRefundsExchangesController extends BaseController
@Log(title = "品质管理退换货单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(QualityRefundsExchanges qualityRefundsExchanges)
public AjaxResult export(@RequestBody String[] refundsExchangesCodes)
{
List<QualityRefundsExchanges> list = qualityRefundsExchangesService.selectQualityRefundsExchangesList(qualityRefundsExchanges);
ExcelUtil<QualityRefundsExchanges> util = new ExcelUtil<QualityRefundsExchanges>(QualityRefundsExchanges.class);
String refundsExchangesCodesString = String.join(",", refundsExchangesCodes); // 带分隔符
List<QualityRefundsExchangesExportVO> list = qualityRefundsExchangesService.getExportList(refundsExchangesCodes);
ExcelUtil<QualityRefundsExchangesExportVO> util = new ExcelUtil<QualityRefundsExchangesExportVO>(QualityRefundsExchangesExportVO.class);
return util.exportExcel(list, refundsExchangesCodesString);
}
/**
* 导出品质管理退换货单列表
*/
@RequiresPermissions("quality:refundsExchanges:export")
@Log(title = "品质管理退换货单", businessType = BusinessType.EXPORT)
@PostMapping("/exportAll")
@ResponseBody
public AjaxResult exportAll(QualityRefundsExchanges qualityRefundsExchanges)
{
List<QualityRefundsExchangesExportVO> list = qualityRefundsExchangesService.getAllExportList(qualityRefundsExchanges);
ExcelUtil<QualityRefundsExchangesExportVO> util = new ExcelUtil<QualityRefundsExchangesExportVO>(QualityRefundsExchangesExportVO.class);
return util.exportExcel(list, "品质管理退换货单数据");
}
@ -306,6 +326,31 @@ public class QualityRefundsExchangesController extends BaseController
return prefix + "/afterQualityReportDetail";
}
/**
* 入库前品质报告详情页面
*/
@GetMapping("/beforeQualityReportDetail")
public String beforeQualityReportDetail( @RequestParam("materialNo") String materialNo,
@RequestParam("refundsExchangesCode") String refundsExchangesCode, ModelMap mmap)
{
if (StringUtils.isEmpty(materialNo)){
log.warn("物料号为空:{}",materialNo);
}
if (StringUtils.isEmpty(refundsExchangesCode)){
log.warn("退换货号为空:{}",refundsExchangesCode);
}
QualityRefundsExchangesOrder refundsExchangesOrder = new QualityRefundsExchangesOrder();
refundsExchangesOrder.setRefundsExchangesCode(refundsExchangesCode);
refundsExchangesOrder.setMaterialNo(materialNo);
QualityRefundsExchangesOrder qualityRefundsExchangesOrder = refundsExchangesOrderService.selectQualityRefundsExchangesOrderByCodeAndNo(refundsExchangesOrder);
mmap.put("materialNo",materialNo);
mmap.put("refundsExchangesCode",refundsExchangesCode);
mmap.put("qualityRefundsExchangesOrder",qualityRefundsExchangesOrder);
return prefix + "/beforeQualityReportDetail";
}
/**
* 保存入库后品质单报告不合格数详情页
*/
@ -316,7 +361,6 @@ public class QualityRefundsExchangesController extends BaseController
{
return toAjax(refundsExchangesDetailService.saveAfterQualityRefundsExchangesDetail(refundsExchangesDetail));
}
/**
* 入库后品质报告不合格数信息列表
* */
@ -328,6 +372,19 @@ public class QualityRefundsExchangesController extends BaseController
return getDataTable(list);
}
/**
* 入库前品质报告不合格数信息列表
* */
@ResponseBody
@PostMapping("/getBeforeQualityReportDetail")
public TableDataInfo getBeforeQualityReportDetail(QualityRefundsExchangesOrder qualityRefundsExchangesOrder){
startPage();
QualityRefundsExchangesDetail qualityRefundsExchangesDetail = new QualityRefundsExchangesDetail();
qualityRefundsExchangesDetail.setMaterialNo(qualityRefundsExchangesOrder.getMaterialNo());
qualityRefundsExchangesDetail.setRefundsExchangesCode(qualityRefundsExchangesOrder.getRefundsExchangesCode());
List<QualityRefundsExchangesUnqualified> list = refundsExchangesUnqualifiedService.selectRefundsExchangesUnqualifiedListByCodeAndNo(qualityRefundsExchangesDetail);
return getDataTable(list);
}
/**
* 入库前退换货单-确认供应商-已有退换货
@ -347,9 +404,10 @@ public class QualityRefundsExchangesController extends BaseController
@Log(title = "品质管理退换货单", businessType = BusinessType.UPDATE)
@PostMapping("/beforeHasConfirmSupplier")
@ResponseBody
public AjaxResult beforeHasConfirmSupplierSave(QualityRefundsExchanges qualityRefundsExchanges)
public AjaxResult beforeHasConfirmSupplierSave(@RequestBody QualityRefundsExchanges qualityRefundsExchanges)
{
return toAjax(qualityRefundsExchangesService.returnBeforeStorageDetail(qualityRefundsExchanges));
qualityRefundsExchanges.setQualityPurchaseStatus("1");
return toAjax(qualityRefundsExchangesService.updateQualityRefundsExchanges(qualityRefundsExchanges));
}
/**

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

@ -78,4 +78,6 @@ public interface QualityRefundsExchangesMapper
/*查找当前最大编号*/
public String findMaxRoundCode(@Param("prefix") String prefix);
public List<QualityRefundsExchanges> selectQualityRefundsExchangesByCodes(String[] refundsExchangesCodes);
}

8
ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityRefundsExchangesOrderMapper.java

@ -82,4 +82,12 @@ public interface QualityRefundsExchangesOrderMapper
* 前面的 THH年月日
* */
public String findMaxRoundCode(@Param("prefix") String prefix);
// 根据退换货单号查找入库前详情
public List<QualityRefundsExchangesOrder> selectQualityRefundsExchangesOrderByCode(String refundsExchangesCode);
// 根据退换货单号和料号查找入库前详情
public QualityRefundsExchangesOrder selectQualityRefundsExchangesOrderByCodeAndNo(QualityRefundsExchangesOrder refundsExchangesOrder);
}

6
ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityRefundsExchangesOrderService.java

@ -1,6 +1,8 @@
package com.ruoyi.quality.service;
import java.util.List;
import com.ruoyi.quality.domain.QualityRefundsExchangesDetail;
import com.ruoyi.quality.domain.QualityRefundsExchangesOrder;
/**
@ -72,4 +74,8 @@ public interface IQualityRefundsExchangesOrderService
* @return
*/
int restoreQualityRefundsExchangesOrderById(Long qualityRefundsExchangesOrderId);
List<QualityRefundsExchangesOrder> selectQualityRefundsExchangesOrderByCode(String refundsExchangesCode);
public QualityRefundsExchangesOrder selectQualityRefundsExchangesOrderByCodeAndNo(QualityRefundsExchangesOrder refundsExchangesOrder);
}

8
ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityRefundsExchangesService.java

@ -2,6 +2,7 @@ package com.ruoyi.quality.service;
import java.util.List;
import com.ruoyi.quality.domain.QualityRefundsExchanges;
import com.ruoyi.quality.domain.VO.QualityRefundsExchangesExportVO;
/**
* 品质管理退换货单Service接口
@ -89,4 +90,11 @@ public interface IQualityRefundsExchangesService
* 保存入库前退货-确认供应商
*/
int updateBeforeConfirmDelivery(QualityRefundsExchanges qualityRefundsExchanges);
// 获取导出对象列表
List<QualityRefundsExchangesExportVO> getExportList(String[] refundsExchangesCodes);
// 获取全部导出对象列表
List<QualityRefundsExchangesExportVO> getAllExportList(QualityRefundsExchanges qualityRefundsExchanges);
}

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

@ -11,20 +11,18 @@ import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.erp.domain.ErpDevelopModifyorder;
import com.ruoyi.erp.mapper.ErpDevelopModifyorderMapper;
import com.ruoyi.quality.domain.QualityOrderDetail;
import com.ruoyi.quality.domain.QualityOrderReport;
import com.ruoyi.quality.domain.QualityOrderReportUnqualified;
import com.ruoyi.quality.mapper.QualityOrderDetailMapper;
import com.ruoyi.quality.mapper.QualityOrderReportMapper;
import com.ruoyi.quality.mapper.QualityOrderReportUnqualifiedMapper;
import com.ruoyi.quality.domain.*;
import com.ruoyi.quality.mapper.*;
import com.ruoyi.quality.service.IQualityOrderReportService;
import com.ruoyi.warehouse.domain.WarehouseStorageOrder;
import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail;
import com.ruoyi.warehouse.mapper.WarehouseOutOrderDetailMapper;
import com.ruoyi.warehouse.mapper.WarehouseStorageOrderDetailMapper;
import com.ruoyi.warehouse.mapper.WarehouseStorageOrderMapper;
import com.ruoyi.warehouse.service.IWarehouseStorageOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.quality.mapper.QualityOrderMapper;
import com.ruoyi.quality.domain.QualityOrder;
import com.ruoyi.quality.service.IQualityOrderService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;
@ -50,6 +48,27 @@ public class QualityOrderServiceImpl implements IQualityOrderService
@Autowired
private QualityOrderReportMapper orderReportMapper;
@Autowired
private IQualityOrderReportService qualityOrderReportService;
@Autowired
private QualityRefundsExchangesMapper exchangesMapper;
@Autowired
private QualityRefundsExchangesDetailMapper exchangesDetailMapper;
@Autowired
private QualityRefundsExchangesOrderMapper exchangesOrderMapper;
@Autowired
private QualityRefundsExchangesUnqualifiedMapper exchangesUnqualifiedMapper;
@Autowired
private WarehouseStorageOrderDetailMapper warehouseStorageDetailMapper;
@Autowired
private WarehouseStorageOrderMapper warehouseStorageOrderMapper;
@Autowired
private QualityOrderReportUnqualifiedMapper orderReportUnqualifiedMapper;
@ -225,7 +244,7 @@ public class QualityOrderServiceImpl implements IQualityOrderService
erpDevelopModifyorder.setPurchaseStorageStatus("6");
developModifyorderMapper.updateErpDevelopModifyorder(erpDevelopModifyorder);
}
generateBeforeRefundsExchanges(qualityOrder);
int updateResult = qualityOrderMapper.updateQualityOrder(qualityOrder);
if (updateResult <= 0){
log.warn("更新品质单失败,未影响任何行");
@ -233,6 +252,192 @@ public class QualityOrderServiceImpl implements IQualityOrderService
return updateResult;
}
// 根据品质单生成退换货单
@Transactional(rollbackFor = Exception.class)
public int generateBeforeRefundsExchanges(QualityOrder qualityOrder){
QualityRefundsExchanges refundsExchanges = new QualityRefundsExchanges();
refundsExchanges.setRefundsExchangesCode(redisCache.generateBillNo("THH"));
refundsExchanges.setRelatedOrderCode(qualityOrder.getQualityOrderCode());
refundsExchanges.setMaterialTotal(qualityOrder.getQualityOrderDetailList().size());
refundsExchanges.setNumTotal(qualityOrder.getQualityUnqualifiedNum());
refundsExchanges.setRefundsExchangesStatus("0");
refundsExchanges.setQualityWarehouseStatus("0");
refundsExchanges.setQualityPurchaseStatus("0");
refundsExchanges.setQualityDeliveryStatus("0");
refundsExchanges.setWarehouseStorageType(qualityOrder.getQualityStorageStatus());
refundsExchanges.setQualityReturnNode("0");
refundsExchanges.setDeliveryInspectionTime(qualityOrder.getDeliveryInspectionTime());
// 根据品质单生成退换货入库单
WarehouseStorageOrder warehouseStorageOrder = generateWarehouseStorageOrder(refundsExchanges.getRefundsExchangesCode(),qualityOrder);
int warehouseResult = warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder);
if (warehouseResult <= 0){
log.warn("插入入库单失败,未影响任何行");
}
List<QualityOrderDetail> qualityOrderDetailList = orderDetailMapper.selectQualityOrderDetailListByCode(qualityOrder.getQualityOrderCode());
if (CollectionUtils.isEmpty(qualityOrderDetailList)){
throw new BusinessException("品质单详情数据为空");
}
for (QualityOrderDetail detail: qualityOrderDetailList) {
// 根据品质单详情生成退换货详情
QualityRefundsExchangesDetail exchangesDetail = generateRefundsExchangesDetail(refundsExchanges.getRefundsExchangesCode(),detail);
int exchangesDetailResult = exchangesDetailMapper.insertQualityRefundsExchangesDetail(exchangesDetail);
if (exchangesDetailResult <= 0){
log.warn("插入退换货详情失败,未影响任何行");
}
// 根据品质单详情生成退换货入库单详情
WarehouseStorageOrderDetail warehouseStorageOrderDetail = generateWarehouseStorageOrderDetail(warehouseStorageOrder.getWarehouseStorageCode(), refundsExchanges.getRefundsExchangesCode(),detail);
int warehouseDetailResult = warehouseStorageDetailMapper.insertWarehouseStorageOrderDetail(warehouseStorageOrderDetail);
if (warehouseDetailResult <= 0){
log.warn("插入入库单详情失败,未影响任何行");
}
// 根据品质报告单生成退换货品质报告单
QualityOrderReport qualityReport = qualityOrderReportService.selectQualityOrderReportByNoAndCode(detail.getMaterialNo(), detail.getSupplierCode(), detail.getQualityOrderCode());
QualityRefundsExchangesOrder exchangesOrder = generateQualityRefundsExchangesOrder(refundsExchanges.getRefundsExchangesCode(),qualityReport,detail);
int exchangesOrderResult = exchangesOrderMapper.insertQualityRefundsExchangesOrder(exchangesOrder);
if (exchangesOrderResult <= 0){
log.warn("插入退换货详情报告失败,未影响任何行");
}
QualityOrderReportUnqualified unqualified = new QualityOrderReportUnqualified();
unqualified.setQualityOrderReportId(qualityReport.getQualityOrderReportId());
List<QualityOrderReportUnqualified> reportUnqualifiedList = orderReportUnqualifiedMapper.selectOrderReportUnqualifiedByOrderReportId(unqualified);
if (CollectionUtils.isEmpty(reportUnqualifiedList)){
throw new BusinessException("品质单报告不合格分类数据为空");
}
// 根据品质报告不合格分类列表生成退换货不合格
for (QualityOrderReportUnqualified unqualifiedReport:reportUnqualifiedList) {
QualityRefundsExchangesUnqualified exchangesUnqualified = new QualityRefundsExchangesUnqualified();
exchangesUnqualified.setRefundsExchangesCode(refundsExchanges.getRefundsExchangesCode());
exchangesUnqualified.setMaterialNo(detail.getMaterialNo());
exchangesUnqualified.setMaterialName(detail.getMaterialName());
exchangesUnqualified.setProcessBadClassification(unqualifiedReport.getProcessBadClassification());
exchangesUnqualified.setProcessBadGrade(unqualifiedReport.getProcessBadGrade());
exchangesUnqualified.setProcessBadNum(unqualifiedReport.getProcessBadNum());
exchangesUnqualified.setUnqualifiedReportUrl(unqualifiedReport.getUnqualifiedReportUrl());
exchangesUnqualified.setInspectionTime(detail.getDeliveryInspectionTime());
exchangesUnqualified.setCreateBy(ShiroUtils.getLoginName());
exchangesUnqualified.setCreateTime(DateUtils.getNowDate());
int exchangeUnqualifiedResult = exchangesUnqualifiedMapper.insertQualityRefundsExchangesUnqualified(exchangesUnqualified);
if (exchangeUnqualifiedResult <= 0){
log.warn("插入入库单详情失败,未影响任何行");
}
}
}
refundsExchanges.setInStorageCode(warehouseStorageOrder.getWarehouseStorageCode());
refundsExchanges.setCreateBy(ShiroUtils.getLoginName());
refundsExchanges.setCreateTime(DateUtils.getNowDate());
return exchangesMapper.insertQualityRefundsExchanges(refundsExchanges);
}
// 根据品质单生成退换货入库单
public WarehouseStorageOrder generateWarehouseStorageOrder(String refundsExchangesCode, QualityOrder qualityOrder){
WarehouseStorageOrder warehouseStorageOrder = new WarehouseStorageOrder();
warehouseStorageOrder.setWarehouseStorageCode(redisCache.generateBillNo("RK"));
warehouseStorageOrder.setRelatedOrderCode(refundsExchangesCode);
warehouseStorageOrder.setWarehouseStorageStatus("2");
warehouseStorageOrder.setWarehouseQualityStatus(qualityOrder.getQualityStatus());
warehouseStorageOrder.setWarehouseStorageType("3");
warehouseStorageOrder.setWarehouseOrderType("2");
warehouseStorageOrder.setWarehouseDeptType("1");
warehouseStorageOrder.setActualArrivedNum(qualityOrder.getThisArrivedNum());
warehouseStorageOrder.setQualityQualifiedNum(qualityOrder.getQualityQualifiedNum());
warehouseStorageOrder.setQualityUnqualifiedNum(qualityOrder.getQualityUnqualifiedNum());
warehouseStorageOrder.setStorageNum(qualityOrder.getStorageNum());
warehouseStorageOrder.setQualityTime(qualityOrder.getDeliveryInspectionTime());
warehouseStorageOrder.setCreateBy(ShiroUtils.getLoginName());
warehouseStorageOrder.setCreateTime(DateUtils.getNowDate());
return warehouseStorageOrder;
}
// 根据品质单详情生成退换货详情
public QualityRefundsExchangesDetail generateRefundsExchangesDetail(String refundsExchangesCode,QualityOrderDetail detail){
QualityRefundsExchangesDetail exchangesDetail = new QualityRefundsExchangesDetail();
exchangesDetail.setRefundsExchangesCode(refundsExchangesCode);
exchangesDetail.setRefundsExchangesStatus("0");
exchangesDetail.setQualityWarehouseStatus("0");
exchangesDetail.setQualityPurchaseStatus("0");
exchangesDetail.setQualityDeliveryStatus("0");
exchangesDetail.setRelatedOrderCode(detail.getQualityOrderCode());
exchangesDetail.setInStorageCode("11");
exchangesDetail.setQualityWarehouseStatus(detail.getQualityStorageStatus());
exchangesDetail.setDeliveryInspectionTime(detail.getDeliveryInspectionTime());
exchangesDetail.setQualityReturnNode("0");
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 WarehouseStorageOrderDetail generateWarehouseStorageOrderDetail(String warehouseStorageCode,String refundsExchangesCode,QualityOrderDetail detail){
WarehouseStorageOrderDetail storageOrderDetail = new WarehouseStorageOrderDetail();
storageOrderDetail.setWarehouseStorageCode(warehouseStorageCode);
storageOrderDetail.setRelatedOrderCode(refundsExchangesCode);
storageOrderDetail.setWarehouseStorageStatus("2");
storageOrderDetail.setWarehouseQualityStatus(detail.getQualityStatus());
storageOrderDetail.setWarehouseStorageType("3");
storageOrderDetail.setWarehouseOrderType("2");
storageOrderDetail.setWarehouseDeptType("1");
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.getActualArriveNum());
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;
}
// 根据品质单详情和品质报告生成退换货报告
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.setCreateBy(ShiroUtils.getLoginName());
exchangesOrder.setCreateTime(DateUtils.getNowDate());
return exchangesOrder;
}
/**
* 删除品质管理品质单对象
*

11
ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityRefundsExchangesOrderServiceImpl.java

@ -123,4 +123,15 @@ public class QualityRefundsExchangesOrderServiceImpl implements IQualityRefundsE
{
return qualityRefundsExchangesOrderMapper.restoreQualityRefundsExchangesOrderById(qualityRefundsExchangesOrderId);
}
@Override
public List<QualityRefundsExchangesOrder> selectQualityRefundsExchangesOrderByCode(String refundsExchangesCode) {
return qualityRefundsExchangesOrderMapper.selectQualityRefundsExchangesOrderByCode(refundsExchangesCode);
}
public QualityRefundsExchangesOrder selectQualityRefundsExchangesOrderByCodeAndNo(QualityRefundsExchangesOrder refundsExchangesOrder){
QualityRefundsExchangesOrder exchangesOrder = qualityRefundsExchangesOrderMapper.selectQualityRefundsExchangesOrderByCodeAndNo(refundsExchangesOrder);
return exchangesOrder;
};
}

39
ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityRefundsExchangesServiceImpl.java

@ -13,6 +13,7 @@ import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.quality.domain.QualityRefundsExchangesDetail;
import com.ruoyi.quality.domain.QualityRefundsExchangesUnqualified;
import com.ruoyi.quality.domain.VO.QualityRefundsExchangesExportVO;
import com.ruoyi.quality.mapper.QualityRefundsExchangesDetailMapper;
import com.ruoyi.quality.mapper.QualityRefundsExchangesUnqualifiedMapper;
import com.ruoyi.storehouse.domain.WarehousingInInfo;
@ -385,4 +386,42 @@ public class QualityRefundsExchangesServiceImpl implements IQualityRefundsExchan
DecimalFormat df = new DecimalFormat("000");
return prefix+df.format(sequence);
}
@Override
public List<QualityRefundsExchangesExportVO> getExportList(String[] refundsExchangesCodes) {
List<QualityRefundsExchanges> exchangesList = qualityRefundsExchangesMapper.selectQualityRefundsExchangesByCodes(refundsExchangesCodes);
List<QualityRefundsExchangesExportVO> exchangesExportVOList = generateQualityRefundsExchangesExportVO(exchangesList);
return exchangesExportVOList;
}
@Override
public List<QualityRefundsExchangesExportVO> getAllExportList(QualityRefundsExchanges qualityRefundsExchanges) {
List<QualityRefundsExchanges> exchangesList = qualityRefundsExchangesMapper.selectQualityRefundsExchangesList(qualityRefundsExchanges);
List<QualityRefundsExchangesExportVO> exchangesExportVOList = generateQualityRefundsExchangesExportVO(exchangesList);
return exchangesExportVOList;
}
//根据退换货单查找详情并生成导出表单
public List<QualityRefundsExchangesExportVO> generateQualityRefundsExchangesExportVO(List<QualityRefundsExchanges> qualityRefundsExchangesList){
List<QualityRefundsExchangesExportVO> exchangesExportVOList = new ArrayList<>();
for (QualityRefundsExchanges refundsExchanges : qualityRefundsExchangesList) {
List<QualityRefundsExchangesDetail> refundsExchangesDetails = refundsExchangesDetailMapper.selectRefundsExchangesDetailListByCode(refundsExchanges.getRefundsExchangesCode());
if (StringUtils.isEmpty(refundsExchangesDetails)){
log.warn("退款换货单[{}]无关联的物料详情信息", refundsExchanges.getRefundsExchangesCode());
}
for (QualityRefundsExchangesDetail exchangesDetail : refundsExchangesDetails) {
QualityRefundsExchangesExportVO exchangesExportVO = new QualityRefundsExchangesExportVO();
exchangesExportVO.setRefundsExchangesCode(exchangesDetail.getRefundsExchangesCode());
exchangesExportVO.setRelatedOrderCode(refundsExchanges.getRelatedOrderCode());
exchangesExportVO.setRefundsExchangesStatus(refundsExchanges.getRefundsExchangesStatus());
exchangesExportVO.setQualityReturnNode(refundsExchanges.getQualityReturnNode());
exchangesExportVO.setRemark(refundsExchanges.getRemark());
exchangesExportVO.setSalesman(refundsExchanges.getCreateBy());
exchangesExportVO.setSupplierCode(exchangesDetail.getSupplierCode());
exchangesExportVO.setSupplierName(exchangesDetail.getSupplierName());
exchangesExportVOList.add(exchangesExportVO);
}
}
return exchangesExportVOList;
}
}

11
ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseRequisitioningOrderController.java

@ -280,13 +280,13 @@ public class BaseRequisitioningOrderController extends BaseController
baseRequisitioningOrderVo.setBaseRequisitioningOrderChildList(JSON.parseArray(baseRequisitioningOrderChildList, BaseRequisitioningOrderChild.class));
boolean saveEntityBoolean = BooleanUtils.toBoolean(saveEntity);
if (saveEntityBoolean) {
baseRequisitioningOrderService.updateBaseRequisitioningOrder(baseRequisitioningOrderVo);
baseRequisitioningOrderService.updateVerifyBaseRequisitioningOrder(baseRequisitioningOrderVo);
}
String instanceId = baseRequisitioningOrderVo.getInstanceId();
String instanceType = baseRequisitioningOrderVo.getInstanceType();
boolean approvedFlag = processService.complete(taskId, instanceId,
baseRequisitioningOrderVo.getApplyTitle(), baseRequisitioningOrderVo.getRequisitioningCode(),
"requisition", new HashMap<String, Object>(), request);
"requisitioning", new HashMap<String, Object>(), request);
if(!approvedFlag){
// 审核状态-审核拒绝
baseRequisitioningOrderVo.setAuditStatus("2");
@ -298,8 +298,9 @@ public class BaseRequisitioningOrderController extends BaseController
baseRequisitioningOrderVo.setAuditStatus("1");
//查通过的审核订单
BaseRequisitioningOrder baseRequisitioningOrder = baseRequisitioningOrderService.selectBaseRequisitioningOrderById(baseRequisitioningOrderVo.getRequisitioningId());
//生产采购计划
baseRequisitioningOrder.setRequisitioningId(baseRequisitioningOrderVo.getRequisitioningId());
//生产采购计划
baseRequisitioningOrderService.generatePurchasePlan(baseRequisitioningOrder);
// 提交
if("submit".equals(instanceType)){
// 使用状态-是
@ -316,10 +317,10 @@ public class BaseRequisitioningOrderController extends BaseController
baseRequisitioningOrderVo.setUseStatus("1");
}
}
baseRequisitioningOrderService.updateBaseRequisitioningOrder(baseRequisitioningOrderVo);
baseRequisitioningOrderService.updateVerifyBaseRequisitioningOrder(baseRequisitioningOrderVo);
// 驳回申请后继续申请,可能修改表单
if (saveEntityBoolean) {
baseRequisitioningOrderService.updateBaseRequisitioningOrder(baseRequisitioningOrderVo);
baseRequisitioningOrderService.updateVerifyBaseRequisitioningOrder(baseRequisitioningOrderVo);
}
return success("任务已完成");
}

16
ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseRequisitioningOrderService.java

@ -48,12 +48,16 @@ public interface IBaseRequisitioningOrderService
*/
public int updateBaseRequisitioningOrder(BaseRequisitioningOrder baseRequisitioningOrder);
/**
* 批量删除请购单
*
* @param ids 需要删除的数据ID
* @return 结果
*/
// 更新审批信息
public int updateVerifyBaseRequisitioningOrder(BaseRequisitioningOrder baseRequisitioningOrder);
/**
* 批量删除请购单
*
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deleteBaseRequisitioningOrderByIds(String ids);
/**

51
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseRequisitioningOrderServiceImpl.java

@ -18,6 +18,8 @@ import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper;
import com.ruoyi.purchase.domain.PurchasePlan;
import com.ruoyi.purchase.domain.PurchasePlanChild;
import com.ruoyi.purchase.mapper.PurchasePlanChildMapper;
import com.ruoyi.purchase.mapper.PurchasePlanMapper;
import com.ruoyi.purchase.service.IPurchasePlanService;
import com.ruoyi.system.domain.BaseRequisitioningOrderChild;
import com.ruoyi.system.domain.Vo.BaseRequisitioningOrderVo;
@ -56,6 +58,12 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
@Autowired
private BaseRequisitioningOrderChildMapper baseRequisitioningOrderChildMapper;
@Autowired
private PurchasePlanMapper purchasePlanMapper;
@Autowired
private PurchasePlanChildMapper planChildMapper;
@Autowired
private RedisCache redisCache;
@ -236,11 +244,8 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
Long materialSum = 0L;
BigDecimal materialRmbSum = new BigDecimal(0);
BigDecimal materialNoRmbSum = new BigDecimal(0);
if(ObjectUtils.isEmpty(childList)) {
return 0;
}
Integer childSize = childList.size();
if (childSize > 0) {
// Integer childSize = childList.size();
if (!StringUtils.isEmpty(childList)) {
baseRequisitioningOrderChildMapper.deleteBaseRequisitioningOrderChildByRequisitioningCode(baseRequisitioningOrder.getRequisitioningCode());
for (BaseRequisitioningOrderChild child: childList) {
materialSum += child.getMaterialNum();
@ -253,14 +258,21 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
child.setUpdateTime(DateUtils.getNowDate());
baseRequisitioningOrderChildMapper.insertBaseRequisitioningOrderChild(child);
}
baseRequisitioningOrder.setMaterialAmount(childList.size());
}
baseRequisitioningOrder.setMaterialAmount(childSize);
baseRequisitioningOrder.setMaterialSum(materialSum);
baseRequisitioningOrder.setRmbSum(materialRmbSum);
baseRequisitioningOrder.setNoRmbSum(materialNoRmbSum);
return baseRequisitioningOrderMapper.updateBaseRequisitioningOrder(baseRequisitioningOrder);
}
@Override
@Transactional(rollbackFor = NullPointerException.class)
public int updateVerifyBaseRequisitioningOrder(BaseRequisitioningOrder baseRequisitioningOrder) {
baseRequisitioningOrder.setUpdateBy(ShiroUtils.getLoginName());
baseRequisitioningOrder.setUpdateTime(DateUtils.getNowDate());
return baseRequisitioningOrderMapper.updateBaseRequisitioningOrder(baseRequisitioningOrder);
}
/**
* 删除请购单对象
*
@ -514,35 +526,42 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
//先将请购物料转换为采购物料需求
List<PurchasePlanChild> purchasePlanChildList = new ArrayList<>();
PurchasePlan purchasePlan = new PurchasePlan();
Long noRmbSum = 0L;
Long rmbSum = 0L;
BigDecimal noRmbSum = BigDecimal.ZERO;
BigDecimal rmbSum = BigDecimal.ZERO;
Long materialAmount = Long.valueOf(requisitioningOrderDetailList.size());
Integer materialSum = 0;
Long materialSum = 0L;
//采购计划关联单号
purchasePlan.setPurchasePlanCode(redisCache.generateBillNo("CGJH"));
purchasePlan.setPurchasePlanStatus("0");
purchasePlan.setCorrelationCode(requisitioningOrder.getRequisitioningCode());
purchasePlan.setPurchasePlanType("2");
purchasePlan.setMaterialAmount(materialAmount);
for (BaseRequisitioningOrderChild requisitioningOrderDetail : requisitioningOrderDetailList) {
PurchasePlanChild purchasePlanChild = new PurchasePlanChild();
purchasePlanChild.setPurchasePlanCode(purchasePlan.getPurchasePlanCode());
purchasePlanChild.setMaterialId(requisitioningOrderDetail.getMaterialId());
purchasePlanChild.setWarehouseDept(requisitioningOrderDetail.getWarehouseDept());
purchasePlanChild.setMaterialCode(requisitioningOrderDetail.getMaterialCode());
purchasePlanChild.setMaterialName(requisitioningOrderDetail.getMaterialName());
purchasePlanChild.setDescribe(requisitioningOrderDetail.getDescribe());
purchasePlanChild.setBrand(requisitioningOrderDetail.getBrand());
purchasePlanChild.setUnit(requisitioningOrderDetail.getUnit());
purchasePlanChild.setPhotoUrl(requisitioningOrderDetail.getPhotoUrl());
purchasePlanChild.setMaterialNum(Double.valueOf(requisitioningOrderDetail.getMaterialNum()));
purchasePlanChild.setMaterialType(requisitioningOrderDetail.getMaterialType());
purchasePlanChild.setMaterialNoRmb(requisitioningOrderDetail.getMaterialNoRmb());
purchasePlanChild.setMaterialRmb(requisitioningOrderDetail.getMaterialRmb());
noRmbSum = noRmbSum + Long.valueOf(String.valueOf(requisitioningOrderDetail.getMaterialNoRmb()));
rmbSum = rmbSum + Long.valueOf(String.valueOf(requisitioningOrderDetail.getMaterialRmbSum()));
noRmbSum = noRmbSum.add(requisitioningOrderDetail.getMaterialNoRmb());
rmbSum = rmbSum.add(requisitioningOrderDetail.getMaterialRmbSum());
materialSum += requisitioningOrderDetail.getMaterialNum();
planChildMapper.insertPurchasePlanChild(purchasePlanChild);
purchasePlanChildList.add(purchasePlanChild);
}
purchasePlan.setNoRmbSum(noRmbSum);
purchasePlan.setRmbSum(rmbSum);
purchasePlan.setMaterialSum(materialSum);
purchasePlan.setCreateBy(requisitioningOrder.getCreateBy());
purchasePlan.setApplyUser(requisitioningOrder.getApplyUser());
purchasePlan.setCreateTime(DateUtils.getNowDate());
purchasePlan.setUpdateBy(requisitioningOrder.getUpdateBy());
purchasePlan.setUpdateTime(DateUtils.getNowDate());
return purchasePlanService.insertPurchasePlan(purchasePlan);
return purchasePlanMapper.insertPurchasePlan(purchasePlan);
}
}

2
ruoyi-admin/src/main/resources/mapper/purchase/PurchasePlanChildMapper.xml

@ -125,7 +125,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialNum != null">#{materialNum},</if>
<if test="materialSole != null">#{materialSole},</if>
<if test="materialRmb != null">#{materialRmb},</if>
<if test="materialNoRmb != null">#{materialNormb},</if>
<if test="materialNoRmb != null">#{materialNoRmb},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>

8
ruoyi-admin/src/main/resources/mapper/quality/QualityRefundsExchangesMapper.xml

@ -141,4 +141,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="findMaxRoundCode" resultType="String">
select max(substring(manufacturing_checkout_code,9)) from quality_manufacturing_checkout where manufacturing_checkout_code like concat(#{prefix},'%')
</select>
<select id="selectQualityRefundsExchangesByCodes" parameterType="String" resultMap="QualityRefundsExchangesResult">
<include refid="selectQualityRefundsExchangesVo"/>
where refunds_exchanges_code in
<foreach item="refundsExchangesCode" collection="array" open="(" separator="," close=")">
#{refundsExchangesCode}
</foreach>
</select>
</mapper>

11
ruoyi-admin/src/main/resources/mapper/quality/QualityRefundsExchangesOrderMapper.xml

@ -146,4 +146,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select max(substring(refunds_exchanges_code,7)) from quality_refunds_exchanges_order where refunds_exchanges_code like concat(#{refundsExchangesCode},'%')
</select>
<select id="selectQualityRefundsExchangesOrderByCode" parameterType="String" resultMap="QualityRefundsExchangesOrderResult">
<include refid="selectQualityRefundsExchangesOrderVo"/>
where refunds_exchanges_code = #{refundsExchangesCode}
</select>
<select id="selectQualityRefundsExchangesOrderByCodeAndNo" parameterType="QualityRefundsExchangesOrder" resultMap="QualityRefundsExchangesOrderResult">
<include refid="selectQualityRefundsExchangesOrderVo"/>
where refunds_exchanges_code = #{refundsExchangesCode}
and material_no = #{materialNo}
</select>
</mapper>

8
ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/afterQualityReportDetail.html

@ -58,12 +58,6 @@
var $table = $("#bootstrap-afterUnqualifiedDetail-table");
$("input[name='inspectionTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("#form-afterQualityReportDetail-edit").validate({
focusCleanup: true
@ -81,7 +75,7 @@
var options = {
id:"bootstrap-afterUnqualifiedDetail-table",
url: ctx + "quality/refundsExchanges/getAfterQualityReportDetail",
modalName: "收款凭证",
modalName: "不合格分类",
showColumns: false,
pagination: false,
showToggle: false,

34
ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/beforeConfirmDelivery.html

@ -50,7 +50,11 @@
<script th:inline="javascript">
var refundsExchangesCode = [[${qualityRefundsExchanges.refundsExchangesCode}]]
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var warehouseDeptDatas = [[${@dict.getType('warehouseDept')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var materialNo = /*[[${materialNo}]]*/'';
var refundsExchangesCode = /*[[${refundsExchangesCode}]]*/'';
var qualityDeliveryStatusDatas = [[${@dict.getType('quality_delivery_status')}]];
var prefix = ctx + "quality/refundsExchanges";
$("#form-beforeConfirmDelivery-edit").validate({
@ -163,6 +167,10 @@
{
title: '物料类型',
field: 'materialType',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{
title: '物料图片地址',
@ -183,18 +191,10 @@
{
title: '物料加工方式',
field: 'materialProcessMethod',
},
{
title: '订单数',
field: 'makeTotal',
},
{
title: '品质已合格数',
field: 'qualityHasqualifiedNum',
},
{
title: '本次到货数',
field: 'thisArrivedNum',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{
title: '品质报告',
@ -202,7 +202,7 @@
formatter: function(value, row, index) {
// 这里直接使用row对象获取supplierCode,假设它是存在的
var actions = [];
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="qualityReport(\'' + row.materialNo + '\', \'' + row.supplierCode + '\')"><i class="fa fa-plus"></i>报告</a> ');
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="qualityReport(\'' + row.materialNo + '\', \'' + row.refundsExchangesCode + '\')"></i>报告</a> ');
return actions.join('');
}
},
@ -227,12 +227,12 @@
/*品质报告*/
function qualityReport(materialNo, supplierCode) {
function qualityReport(materialNo, refundsExchangesCode) {
var queryParams = new URLSearchParams();
queryParams.append('materialNo', materialNo);
queryParams.append('supplierCode', encodeURIComponent(supplierCode));
queryParams.append('refundsExchangesCode', encodeURIComponent(refundsExchangesCode));
var url = ctx + 'quality/qualityOrder/qualityReport?' + queryParams.toString();
var url = ctx + 'quality/refundsExchanges/beforeQualityReportDetail?' + queryParams.toString();
$.modal.open("品质报告", url);
}

40
ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/beforeHasConfirmSupplier.html

@ -59,7 +59,11 @@
<th:block th:include="include :: bootstrap-table-editable-js" />
<script th:inline="javascript">
var refundsExchangesCode = [[${qualityRefundsExchanges.refundsExchangesCode}]]
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var warehouseDeptDatas = [[${@dict.getType('warehouseDept')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var materialNo = /*[[${materialNo}]]*/'';
var refundsExchangesCode = [[${qualityRefundsExchanges.refundsExchangesCode}]];
var prefix = ctx + "quality/refundsExchanges";
$("#form-qualityRefundsExchanges-edit").validate({
@ -68,7 +72,11 @@
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/returnBeforeStorageDetail", $('#form-qualityRefundsExchanges-edit').serialize());
var refundsExchangesId = $("input[name='refundsExchangesId']").val();
var qualityRefundsExchanges = {
refundsExchangesId: refundsExchangesId,
}
$.operate.saveJson(prefix + "/beforeHasConfirmSupplier",JSON.stringify(qualityRefundsExchanges));
}
}
@ -123,6 +131,10 @@
{
title: '物料类型',
field: 'materialType',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{
title: '物料图片地址',
@ -143,18 +155,10 @@
{
title: '物料加工方式',
field: 'materialProcessMethod',
},
{
title: '订单数',
field: 'makeTotal',
},
{
title: '品质已合格数',
field: 'qualityHasqualifiedNum',
},
{
title: '本次到货数',
field: 'thisArrivedNum',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{
title: '品质报告',
@ -162,7 +166,7 @@
formatter: function(value, row, index) {
// 这里直接使用row对象获取supplierCode,假设它是存在的
var actions = [];
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="qualityReport(\'' + row.materialNo + '\', \'' + row.supplierCode + '\')"><i class="fa fa-plus"></i>报告</a> ');
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="qualityReport(\'' + row.materialNo + '\', \'' + row.refundsExchangesCode + '\')"><i class="fa fa-plus"></i>报告</a> ');
return actions.join('');
}
},
@ -178,12 +182,12 @@
/*品质报告*/
function qualityReport(materialNo, supplierCode) {
function qualityReport(materialNo, refundsExchangesCode) {
var queryParams = new URLSearchParams();
queryParams.append('materialNo', materialNo);
queryParams.append('supplierCode', encodeURIComponent(supplierCode));
queryParams.append('refundsExchangesCode', encodeURIComponent(refundsExchangesCode));
var url = ctx + 'quality/qualityOrder/qualityReport?' + queryParams.toString();
var url = ctx + 'quality/refundsExchanges/beforeQualityReportDetail?' + queryParams.toString();
$.modal.open("品质报告", url);
}
</script>

262
ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/beforeQualityReportDetail.html

@ -4,32 +4,38 @@
<th:block th:include="include :: header('入库前退货品质单报告详情')" />
<th:block th:include="include :: datetimepicker-css" />
</head>
<style>
.custom-align {
display: flex;
align-items: center;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-qualityOrderReport-edit" th:object="${qualityOrderReport}">
<input name="supplierCode" th:field="*{supplierCode}" type="hidden">
<form class="form-horizontal m" id="form-qualityOrderReport-edit" th:object="${qualityRefundsExchangesOrder}">
<input name="supplierCode" th:field="*{refundsExchangesCode}" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">料号:</label>
<div class="col-sm-6">
<input name="materialNo" th:field="*{materialNo}" class="form-control" type="text">
<input name="materialNo" th:field="*{materialNo}" class="form-control" type="text" disabled>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">物料名称:</label>
<div class="col-sm-6">
<input name="materialName" th:field="*{materialName}" class="form-control" type="text">
<input name="materialName" th:field="*{materialName}" class="form-control" type="text" disabled>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单数:</label>
<div class="col-sm-6">
<input name="makeTotal" th:field="*{makeTotal}" class="form-control" type="text">
<input name="makeTotal" th:field="*{makeTotal}" class="form-control" type="text" disabled>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">品质已合格数:</label>
<div class="col-sm-6">
<input name="qualityHasqualifiedNum" th:field="*{qualityHasqualifiedNum}" class="form-control" type="text">
<input name="qualityHasqualifiedNum" th:field="*{qualityHasqualifiedNum}" class="form-control" type="text" disabled>
</div>
</div>
@ -39,22 +45,25 @@
<h3>合格数</h3>
<div class="row">
<div class="form-group col-sm-6">
<label class="control-label is-required">ok允收数:</label>
<input name="okAcceptedNum" th:field="*{okAcceptedNum}" class="form-control" type="text" required>
<label class="control-label">ok允收数:</label>
<input name="okAcceptedNum" th:field="*{okAcceptedNum}" class="form-control" type="text" disabled>
</div>
<div class="form-group col-sm-6">
<label class="control-label">ok报告图片:</label>
<input name="okReportUrl" th:field="*{okReportUrl}" class="form-control" type="text">
<div class="form-group col-sm-6 d-flex flex-column align-items-start">
<label class="control-label">ok报告:</label>
<input name="okReportUrl" th:field="*{okReportUrl}" class="form-control" type="text" disabled>
<!-- <a class= 'btn btn-success btn-xs' href='javascript:void(0)' >报告</a>-->
</div>
</div>
<div class="row">
<div class="form-group col-sm-6">
<label class="control-label is-required">特采/让步数</label>
<input name="specialConcessionsNum" th:field="*{specialConcessionsNum}" class="form-control" type="text" required>
<label class="control-label">特采/让步数</label>
<input name="specialConcessionsNum" th:field="*{specialConcessionsNum}" class="form-control" type="text" disabled>
</div>
<div class="form-group col-sm-6">
<label class="control-label">特采报告图片:</label>
<input name="specialReportUrl" th:field="*{specialReportUrl}" class="form-control" type="text">
<label class="control-label">特采报告:</label>
<input name="specialReportUrl" th:field="*{specialReportUrl}" class="form-control" type="text" disabled>
<!-- <a class= 'btn btn-success btn-xs' href='javascript:void(0)' >报告</a>-->
</div>
</div>
</div>
@ -63,9 +72,6 @@
<div class="row">
<div class="col-sm-12 d-flex align-items-center">
<span style="font-weight: bold; font-family: Arial, sans-serif; font-size: 15px;">不合格数</span>
<a class="btn btn-success ml-auto" onclick="addUnqualified()">
<i class="fa fa-plus"></i> 添加
</a>
</div>
</div>
<div class="row">
@ -82,7 +88,7 @@
<label class="col-sm-4 control-label">检验完成时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="checkoutCompletionTime" th:value="${#dates.format(qualityOrderReport.checkoutCompletionTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<input name="checkoutCompletionTime" th:value="${#dates.format(qualityRefundsExchangesOrder.checkoutCompletionTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
@ -102,6 +108,8 @@
var processBadClassificationDatas = [[${@dict.getType('process_bad_classification')}]];
var processBadGradeDatas = [[${@dict.getType('process_bad_grade')}]];
var materialNo = /*[[${materialNo}]]*/'';
var refundsExchangesCode = /*[[${refundsExchangesCode}]]*/'';
var $table = $("#bootstrap-unqualified-table");
var prefix = ctx + "quality/qualityOrder";
$("#form-qualityOrderReport-edit").validate({
@ -109,199 +117,73 @@
});
function submitHandler() {
// 获取表单数据
const qualityReportData = $("#form-qualityOrderReport-edit").serializeArray().reduce((obj, item) => {
obj[item.name] = item.value;
return obj;
}, {});
// 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据
var table = $('#bootstrap-unqualified-table').bootstrapTable('getData');
// 检查表格数据是否为空
if (table.length===0){
$.modal.alertWarning("请至少添加一条不合格数再保存!");
return;
}
console.log(JSON.stringify(table));
// 将表数据转换成与qualityReportData格式一致的数组
var unqualifiedDataList = table.map(function(item) {
// 根据实际字段名调整
return {
"processBadClassification": item.processBadClassification,
"processBadGrade": item.processBadGrade,
"processBadNum": item.processBadNum,
"unqualifiedReportUrl": item.unqualifiedReportUrl
// ...其他字段
};
});
const combinedData = Object.assign({}, qualityReportData, { unqualifiedDataList: unqualifiedDataList });
// 合并表单数据和表格数据
// const combinedData = Object.assign({}, ...complaintNoticeData.array(item => ({ [item.name]: item.value })), ...materialData);
console.log(combinedData)
// 使用 JSON.stringify() 序列化数据
const jsonData = JSON.stringify(combinedData);
// 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/qualityReport", jsonData);
}
$("input[name='checkoutCompletionTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
//添加不合格数
function addUnqualified() {
// 生成一个简单的唯一标识,这里使用时间戳作为示例
var uniqueId = new Date().getTime();
// 创建一个新行数据模板,这里仅为示例,具体根据表格列来定义
var newRow = {
qualityOrderReportId:uniqueId,
processBadClassification: "",
processBadGrade: "",
processBadNum: "",
unqualifiedReportUrl: ""
};
// 使用Bootstrap Table的API插入新行
$('#bootstrap-unqualified-table').bootstrapTable('append', newRow);
}
//收款凭证table列表
$(function() {
var options = {
id:"bootstrap-unqualified-table",
modalName: "收款凭证",
url: ctx + "quality/refundsExchanges/getBeforeQualityReportDetail",
modalName: "不合格分类",
showColumns: false,
pagination: false,
showToggle: false,
showRefresh:false,
showSearch:false,
singleSelect:true,
columns: [{
checkbox: false
queryParams:queryParams,
columns: [
{
title: '品质报告单id',
field: 'qualityOrderReportId',
visible: false
},
{
title: '品质报告单id',
field: 'qualityOrderReportId',
visible: false
},
{title: '不良分类',field: 'processBadClassification',
formatter:function (value, row, index) {
return processBadClassificationFormatter(value,row,index);
}
},
{title: '不良等级',field: 'processBadGrade',
formatter:function (value, row, index) {
return processBadGradeFormatter(value,row,index);
}
},
{
title: '数量',
field: 'processBadNum',
editable:{
type: 'text',
mode:'inline',
validate: function (v) {
if (!v) return '数量不能为空';
if (isNaN(v)) return '数量必须是数字';
var processBadNum = parseInt(v);
if (processBadNum <= 0) return '数量必须是正整数';
}
}
},
{
title: '报告',
field: 'unqualifiedReportUrl',
editable: {
mode:'inline',
type: 'text', // 表示该列可以被编辑为文本
},
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeRow(\'' + row.qualityOrderReportId + '\')"><i class="fa fa-remove"></i>删除</a> ');
return actions.join('');
}
{
title: '不良分类',
field: 'processBadClassification',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processBadClassificationDatas, value);
}
},
{
title: '不良等级',
field: 'processBadGrade',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processBadGradeDatas, value);
}
},
{
title: '数量',
field: 'processBadNum',
align: 'center',
},
{
title: '报告',
field: 'unqualifiedReportUrl',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" >报告</a> ');
return actions.join('');
}
},
]
};
$.table.init(options);
});
// 逻辑删除不合格数前端的一行数据
function removeRow(qualityOrderReportId){
console.log(qualityOrderReportId);
// 直接使用 receivablesRecordsId 值进行删除操作
$("#bootstrap-unqualified-table").bootstrapTable('remove', {
field: 'qualityOrderReportId',
values: qualityOrderReportId
});
}
// 列中获取不良分类的下拉改变数据
function onProcessBadClassification(selectElement, rowIndex) {
var processBadClassificationValue = $(selectElement).val();
var tableData = $table.bootstrapTable('getData');
var newRow = tableData[rowIndex]; // 获取当前行数据
// 重新渲染成本小类的设备名称列
// 更新行数据
newRow.processBadClassification = processBadClassificationValue;
$table.bootstrapTable('updateRow', {index: rowIndex, row: newRow});
}
// 自定义不良分类的格式化函数
function processBadClassificationFormatter(value, row, index) {
var selectHtml = '<select class="form-control" onchange="onProcessBadClassification(this, ' + index + ')">';
// 添加默认选项
selectHtml += '<option value=""' + (value === undefined || value === '' ? ' selected' : '') + '>所有</option>';
processBadClassificationDatas.forEach(function (child) {
selectHtml += '<option value="' + child.dictValue + '"' + (value === child.dictValue ? ' selected' : '') + '>' + child.dictLabel + '</option>';
});
selectHtml += '</select>';
return selectHtml;
}
// 列中获取不良等级的下拉改变数据
function onProcessBadGrade(selectElement, rowIndex) {
var processBadGradeValue = $(selectElement).val();
var tableData = $table.bootstrapTable('getData');
var newRow = tableData[rowIndex]; // 获取当前行数据
// 重新渲染成本小类的设备名称列
// 更新行数据
newRow.processBadGrade = processBadGradeValue;
$table.bootstrapTable('updateRow', {index: rowIndex, row: newRow});
}
// 自定义不良等级的格式化函数
function processBadGradeFormatter(value, row, index) {
var selectHtml = '<select class="form-control" onchange="onProcessBadGrade(this, ' + index + ')">';
// 添加默认选项
selectHtml += '<option value=""' + (value === undefined || value === '' ? ' selected' : '') + '>所有</option>';
processBadGradeDatas.forEach(function (child) {
selectHtml += '<option value="' + child.dictValue + '"' + (value === child.dictValue ? ' selected' : '') + '>' + child.dictLabel + '</option>';
});
selectHtml += '</select>';
return selectHtml;
function queryParams(params) {
var curParams = {
//传递查询参数
materialNo: materialNo,
refundsExchangesCode: refundsExchangesCode
}
return curParams;
}
</script>
</body>
</html>

54
ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/refundsExchanges.html

@ -67,7 +67,7 @@
<a id="addRefundsButton" class="btn btn-success" onclick="add()" shiro:hasPermission="quality:refundsExchanges:add">
<i class="fa fa-plus"></i> 添加退货单
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="quality:refundsExchanges:export">
<a class="btn btn-warning" onclick="exportExcel()" shiro:hasPermission="quality:refundsExchanges:export">
<i class="fa fa-download"></i> 导出
</a>
</div>
@ -282,6 +282,58 @@
$.modal.open("确认收货",url);
}
function exportExcel(formId) {
var refundsExchangesCodeData = [];
var selections = $("#bootstrap-table").bootstrapTable("getSelections");
if(selections.length === 0){
$.modal.confirm("确定导出所有退换货单吗?", function() {
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
var params = $("#bootstrap-table").bootstrapTable('getOptions');
var dataParam = $("#" + currentId).serializeArray();
dataParam.push({ "name": "orderByColumn", "value": params.sortName });
dataParam.push({ "name": "isAsc", "value": params.sortOrder });
$.modal.loading("正在导出数据,请稍后...");
$.post(prefix + '/exportAll', dataParam, function(result) {
if (result.code == web_status.SUCCESS) {
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
} else if (result.code == web_status.WARNING) {
$.modal.alertWarning(result.msg)
} else {
$.modal.alertError(result.msg);
}
$.modal.closeLoading();
});
});
}else {
//·拼接单号
for(let i=0;i<selections.length;i++){
refundsExchangesCodeData.push(selections[i].refundsExchangesCode);
}
$.modal.confirm("确定导出" + refundsExchangesCodeData + "吗?", function () {
var refundsExchangesCodes = JSON.stringify(refundsExchangesCodeData);
$.modal.loading("正在导出数据,请稍后...");
var config = {
url: prefix + '/export',
type: "post",
dataType: "json",
contentType: "application/json;charset=utf-8",
data: refundsExchangesCodes,
success: function(result) {
console.log(result);
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
$.modal.alertSuccess("导出成功!")
$.modal.closeLoading();
},
error: function (result){
$.modal.alertError(result.msg);
}
};
$.ajax(config)
// $.operate.saveJson(prefix + "/export", bomNos);
});
}
};
</script>
</body>
</html>

54
ruoyi-admin/src/main/resources/templates/quality/refundsExchanges/returnBeforeStorageDetail.html

@ -27,19 +27,19 @@
<div class="form-group">
<label class="col-sm-3 control-label">退换货单号:</label>
<div class="col-sm-8">
<input name="refundsExchangesCode" th:field="*{refundsExchangesCode}" class="form-control" type="text">
<input name="refundsExchangesCode" th:field="*{refundsExchangesCode}" class="form-control" type="text" disabled>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">关联单号:</label>
<div class="col-sm-8">
<input name="relatedOrderCode" th:field="*{relatedOrderCode}" class="form-control" type="text">
<input name="relatedOrderCode" th:field="*{relatedOrderCode}" class="form-control" type="text" disabled>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">品质单入库类型:</label>
<div class="col-sm-8">
<select name="warehouseStorageType" class="form-control m-b" th:with="type=${@dict.getType('warehouse_storage_type')}">
<select name="warehouseStorageType" class="form-control m-b" th:with="type=${@dict.getType('warehouse_storage_type')}" disabled>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{warehouseStorageType}"></option>
</select>
</div>
@ -61,6 +61,11 @@
var refundsExchangesCode = [[${qualityRefundsExchanges.refundsExchangesCode}]]
var qualityRefundsExchanges = [[${qualityRefundsExchanges}]];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var warehouseDeptDatas = [[${@dict.getType('warehouseDept')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var prefix = ctx + "quality/refundsExchanges";
$("#form-qualityRefundsExchanges-edit").validate({
focusCleanup: true
@ -105,14 +110,17 @@
$table.bootstrapTable({
data: supplierData,
columns: [{
checkbox: true
},
columns: [
{
title: '供应商ID',
field: 'supplierCode',
visible: false
},
{
title: '退换货单号',
field: 'refundsExchangesCode',
visible: false
},
{
title: '料号',
field: 'materialNo'
@ -123,9 +131,13 @@
{
title: '物料类型',
field: 'materialType',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{
title: '物料图片地址',
title: '物料图片',
field: 'materialPhotourl',
},
{
@ -143,22 +155,10 @@
{
title: '物料加工方式',
field: 'materialProcessMethod',
},
{
title: '订单数',
field: 'makeTotal',
},
{
title: '品质已合格数',
field: 'qualityHasqualifiedNum',
},
{
title: '本次到货数',
field: 'thisArrivedNum',
editable:{
type:'text'
},
required:true
align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{
title: '品质报告',
@ -166,7 +166,7 @@
formatter: function(value, row, index) {
// 这里直接使用row对象获取supplierCode,假设它是存在的
var actions = [];
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="qualityReport(\'' + row.materialNo + '\', \'' + row.supplierCode + '\')"><i class="fa fa-plus"></i>报告</a> ');
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="qualityReport(\'' + row.materialNo + '\', \'' + row.refundsExchangesCode + '\')">报告</a> ');
return actions.join('');
}
},
@ -182,12 +182,12 @@
/*品质报告*/
function qualityReport(materialNo, supplierCode) {
function qualityReport(materialNo, refundsExchangesCode) {
var queryParams = new URLSearchParams();
queryParams.append('materialNo', materialNo);
queryParams.append('supplierCode', encodeURIComponent(supplierCode));
queryParams.append('refundsExchangesCode', encodeURIComponent(refundsExchangesCode));
var url = ctx + 'quality/qualityOrder/qualityReport?' + queryParams.toString();
var url = ctx + 'quality/refundsExchanges/beforeQualityReportDetail?' + queryParams.toString();
$.modal.open("品质报告", url);
}
</script>

Loading…
Cancel
Save