Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev
zhangsiqi 7 months ago
parent
commit
61ad141e13
  1. 8
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOrderController.java
  2. 4
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAfterSalesShippingDeviceService.java
  3. 7
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOrderService.java
  4. 31
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AfterSalesShippingDeviceServiceImpl.java
  5. 80
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOrderServiceImpl.java
  6. 29
      ruoyi-admin/src/main/java/com/ruoyi/sales/controller/SalesAftersalesNoticeController.java
  7. 16
      ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesAftersalesNotice.java
  8. 5
      ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeDetailMapper.java
  9. 6
      ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeMapper.java
  10. 5
      ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeDetailService.java
  11. 3
      ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeService.java
  12. 16
      ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeDetailServiceImpl.java
  13. 63
      ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeServiceImpl.java
  14. 1
      ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOrderMapper.xml
  15. 7
      ruoyi-admin/src/main/resources/mapper/sales/SalesAftersalesNoticeDetailMapper.xml
  16. 45
      ruoyi-admin/src/main/resources/mapper/sales/SalesAftersalesNoticeMapper.xml
  17. 25
      ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/aftersalesOrder.html
  18. 73
      ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/detail.html
  19. 45
      ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/sendOrders.html
  20. 42
      ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/uploadReport.html
  21. 4
      ruoyi-admin/src/main/resources/templates/erp/material/add.html
  22. 58
      ruoyi-admin/src/main/resources/templates/erp/material/material.html
  23. 157
      ruoyi-admin/src/main/resources/templates/sales/afterSalesNotice/taskYwjlVerify.html
  24. 150
      ruoyi-admin/src/main/resources/templates/sales/afterSalesNotice/taskYwzgVerify.html
  25. 12
      ruoyi-admin/src/main/resources/templates/system/salesOrder/startAftersales.html

8
ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOrderController.java

@ -6,6 +6,7 @@ import com.ruoyi.aftersales.domain.vo.SelectDeviceVO;
import com.ruoyi.aftersales.service.IAfterSalesShippingDeviceService; import com.ruoyi.aftersales.service.IAfterSalesShippingDeviceService;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
@ -195,20 +196,19 @@ public class AftersalesOrderController extends BaseController
@ResponseBody @ResponseBody
public AjaxResult uploadReportSave(AftersalesOrder aftersalesOrder) public AjaxResult uploadReportSave(AftersalesOrder aftersalesOrder)
{ {
return toAjax(aftersalesOrderService.updateAftersalesOrder(aftersalesOrder)); return toAjax(aftersalesOrderService.updateUploadReport(aftersalesOrder));
} }
/** /**
* 查询选择设备列表 * 查询售后通知单详情选择设备列表
*/ */
@PostMapping("/optionDevices") @PostMapping("/optionDevices")
@ResponseBody @ResponseBody
public TableDataInfo optionDevices(AftersalesOrder aftersalesOrder) public TableDataInfo optionDevices(AftersalesOrder aftersalesOrder)
{ {
startPage(); startPage();
List<SelectDeviceVO> list = afterSalesShippingDeviceService.selectOptionDevices(aftersalesOrder.getMakeNo()); List<SalesAftersalesNoticeDetail> list = afterSalesShippingDeviceService.selectOptionDevices(aftersalesOrder.getAftersalesOrderCode());
return getDataTable(list); return getDataTable(list);
} }

4
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAfterSalesShippingDeviceService.java

@ -7,6 +7,8 @@ import com.ruoyi.aftersales.domain.dto.AfterSalesMakeOrderDto;
import com.ruoyi.aftersales.domain.dto.AfterSalesShippingDeviceEditDto; import com.ruoyi.aftersales.domain.dto.AfterSalesShippingDeviceEditDto;
import com.ruoyi.aftersales.domain.dto.WarehouseAndAfterSalesDto; import com.ruoyi.aftersales.domain.dto.WarehouseAndAfterSalesDto;
import com.ruoyi.aftersales.domain.vo.SelectDeviceVO; import com.ruoyi.aftersales.domain.vo.SelectDeviceVO;
import com.ruoyi.sales.domain.SalesAftersalesNotice;
import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail;
import com.ruoyi.system.dto.SysEquipDetailDto; import com.ruoyi.system.dto.SysEquipDetailDto;
/** /**
@ -93,7 +95,7 @@ public interface IAfterSalesShippingDeviceService
* @param makeNo 生产单号 * @param makeNo 生产单号
* @return * @return
*/ */
List<SelectDeviceVO> selectOptionDevices(String makeNo); List<SalesAftersalesNoticeDetail> selectOptionDevices(String aftersalesOrderCode);
/* /*

7
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOrderService.java

@ -33,7 +33,7 @@ public interface IAftersalesOrderService
/** /**
* 查询售后单列表 * 查询售后单列表
* *
* @param aftersalesOrderVO 售后单 * @param aftersalesOrder 售后单
* @return 售后单集合 * @return 售后单集合
*/ */
public List<AftersalesOrder> selectAftersalesOrderList(AftersalesOrder aftersalesOrder); public List<AftersalesOrder> selectAftersalesOrderList(AftersalesOrder aftersalesOrder);
@ -88,4 +88,9 @@ public interface IAftersalesOrderService
* 销售售后通知单 审核后生成售后单 * 销售售后通知单 审核后生成售后单
* */ * */
void generateAftersalesOrderBySalesAftersalesNotice(SalesAftersalesNoticeVO tempSalesAftersalesNoticeVO); void generateAftersalesOrderBySalesAftersalesNotice(SalesAftersalesNoticeVO tempSalesAftersalesNoticeVO);
/**
* 修改保存售后报告
*/
int updateUploadReport(AftersalesOrder aftersalesOrder);
} }

31
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AfterSalesShippingDeviceServiceImpl.java

@ -13,6 +13,9 @@ import com.ruoyi.aftersales.mapper.AftersalesComplaintNoticeMapper;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.sales.domain.SalesAftersalesNotice;
import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail;
import com.ruoyi.sales.mapper.SalesAftersalesNoticeDetailMapper;
import com.ruoyi.system.dto.SysEquipDetailDto; import com.ruoyi.system.dto.SysEquipDetailDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -38,6 +41,9 @@ public class AfterSalesShippingDeviceServiceImpl implements IAfterSalesShippingD
@Autowired @Autowired
private AftersalesComplaintNoticeMapper aftersalesComplaintNoticeMapper; private AftersalesComplaintNoticeMapper aftersalesComplaintNoticeMapper;
@Autowired
private SalesAftersalesNoticeDetailMapper aftersalesNoticeDetailMapper;
/** /**
* 查询出货设备 * 查询出货设备
* *
@ -197,28 +203,9 @@ public class AfterSalesShippingDeviceServiceImpl implements IAfterSalesShippingD
* 查询选择设备列表 * 查询选择设备列表
* */ * */
@Override @Override
public List<SelectDeviceVO> selectOptionDevices(String makeNo) { public List<SalesAftersalesNoticeDetail> selectOptionDevices(String aftersalesOrderCode) {
List<SelectDeviceVO> selectDeviceVos = new ArrayList<>(); List<SalesAftersalesNoticeDetail> salesAftersalesNoticeDetails = aftersalesNoticeDetailMapper.selectSalesAftersalesNoticeDetailListByCode(aftersalesOrderCode);
SelectDeviceVO selectDeviceVo = new SelectDeviceVO(); return salesAftersalesNoticeDetails;
AfterSalesShippingDevice afterSalesShippingDevice = afterSalesShippingDeviceMapper.selectShippingDeviceByMakeNo(makeNo);
if (StringUtils.isNotNull(afterSalesShippingDevice)){
selectDeviceVo.setMaterialNo(afterSalesShippingDevice.getMaterialNo());
selectDeviceVo.setMaterialPhotourl(afterSalesShippingDevice.getMaterialPhotourl());
selectDeviceVo.setMaterialName(afterSalesShippingDevice.getMaterialName());
selectDeviceVo.setMaterialType(afterSalesShippingDevice.getMaterialType());
selectDeviceVo.setMaterialUnit(afterSalesShippingDevice.getMaterialUnit());
selectDeviceVo.setMaterialBrand(afterSalesShippingDevice.getMaterialBrand());
selectDeviceVo.setMaterialDescribe(afterSalesShippingDevice.getMaterialDescribe());
selectDeviceVo.setSnCode(afterSalesShippingDevice.getSnCode());
}
AftersalesComplaintNotice aftersalesComplaintNotice = aftersalesComplaintNoticeMapper.selectComplaintNoticeByMakeNo(makeNo);
if (StringUtils.isNotNull(aftersalesComplaintNotice)){
selectDeviceVo.setComplaintProblem(aftersalesComplaintNotice.getRemark());
}
selectDeviceVos.add(selectDeviceVo);
return selectDeviceVos;
} }
/* /*

80
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOrderServiceImpl.java

@ -3,12 +3,16 @@ package com.ruoyi.aftersales.service.impl;
import java.util.*; import java.util.*;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper;
import com.ruoyi.sales.domain.SalesAftersalesNotice;
import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail;
import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO; import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO;
import com.ruoyi.sales.mapper.SalesAftersalesNoticeMapper;
import com.ruoyi.system.domain.SysAttach; import com.ruoyi.system.domain.SysAttach;
import com.ruoyi.system.domain.SysMakeOrder; import com.ruoyi.system.domain.SysMakeOrder;
import com.ruoyi.system.mapper.SysAttachMapper; import com.ruoyi.system.mapper.SysAttachMapper;
@ -49,6 +53,9 @@ public class AftersalesOrderServiceImpl implements IAftersalesOrderService
@Autowired @Autowired
private SysMakeOrderMapper sysMakeOrderMapper; private SysMakeOrderMapper sysMakeOrderMapper;
@Autowired
private SalesAftersalesNoticeMapper salesAftersalesNoticeMapper;
/** /**
* 查询售后单 * 查询售后单
* *
@ -111,7 +118,7 @@ public class AftersalesOrderServiceImpl implements IAftersalesOrderService
* @param aftersalesOrder 售后单 * @param aftersalesOrder 售后单
* @return 结果 * @return 结果
*/ */
@Transactional @Transactional(rollbackFor = Exception.class)
@Override @Override
public int updateAftersalesOrder(AftersalesOrder aftersalesOrder) public int updateAftersalesOrder(AftersalesOrder aftersalesOrder)
{ {
@ -150,6 +157,17 @@ public class AftersalesOrderServiceImpl implements IAftersalesOrderService
List<String> fileIdList = Arrays.asList(fileIdStr.split(",")); List<String> fileIdList = Arrays.asList(fileIdStr.split(","));
attachFileService.updateAttachIdByIdList(attachId,fileIdList); attachFileService.updateAttachIdByIdList(attachId,fileIdList);
} }
//更新销售售后通知单的售后状态
SalesAftersalesNotice salesAftersalesNotice = new SalesAftersalesNotice();
salesAftersalesNotice.setAftersalesStatus("1");
salesAftersalesNotice.setAftersalesNoticeCode(aftersalesOrder.getAftersalesOrderCode());
salesAftersalesNotice.setStartTime(aftersalesOrder.getStartDate());
int updateNoticeResult = salesAftersalesNoticeMapper.updateSalesAftersalesNoticeByCode(salesAftersalesNotice);
if (updateNoticeResult <= 0){
throw new BusinessException("更新售后通知单数据失败");
}
//设置售后状态为售后中
aftersalesOrder.setAftersalesStatus("1");
return aftersalesOrderMapper.updateAftersalesOrder(aftersalesOrder); return aftersalesOrderMapper.updateAftersalesOrder(aftersalesOrder);
} }
@ -235,4 +253,64 @@ public class AftersalesOrderServiceImpl implements IAftersalesOrderService
aftersalesOrderMapper.insertAftersalesOrder(aftersalesOrder); aftersalesOrderMapper.insertAftersalesOrder(aftersalesOrder);
} }
/**
* 修改保存售后报告
*
* @param aftersalesOrder 售后单
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int updateUploadReport(AftersalesOrder aftersalesOrder) {
String loginName = ShiroUtils.getLoginName();
aftersalesOrder.setUpdateBy(loginName);
aftersalesOrder.setUpdateTime(DateUtils.getNowDate());
Long aftersalesOrderId = aftersalesOrder.getAftersalesOrderId();
String fileIdStr = aftersalesOrder.getFileIdStr();
Long attachId = null;
if (StringUtils.isNotEmpty(fileIdStr)){
SysAttach tempSysAttach = new SysAttach();
tempSysAttach.setSourceType("aftersalesOrder");
tempSysAttach.setSourceSubType("photo");
tempSysAttach.setRelId(aftersalesOrderId);
List<SysAttach> sysAttaches = attachService.selectSysAttachList(tempSysAttach);
if (StringUtils.isEmpty(sysAttaches)){
// 保存新的文件附件关联
SysAttach newSysAttach = new SysAttach();
newSysAttach.setCreateBy(loginName);
newSysAttach.setCreateTime(new Date());
newSysAttach.setSourceType("aftersalesOrder");
newSysAttach.setSourceSubType("photo");
newSysAttach.setRelId(aftersalesOrderId);
attachService.insertSysAttach(newSysAttach);
// 假设insert后可以通过某种方式(如返回值)获取到新生成的ID,这里需要根据实际情况调整
attachId = newSysAttach.getId(); // 确保这里能正确获取到ID
}else {
// 更新已存在的附件信息
SysAttach sysAttachToUpdate = sysAttaches.get(0); // 假设只有一条记录,或按需处理多条
sysAttachToUpdate.setUpdateBy(loginName);
sysAttachToUpdate.setUpdateTime(new Date());
attachService.updateSysAttach(sysAttachToUpdate); // 假定有一个通用的更新方法
attachId = sysAttachToUpdate.getId();
}
//更新附件与文件关联
List<String> fileIdList = Arrays.asList(fileIdStr.split(","));
attachFileService.updateAttachIdByIdList(attachId,fileIdList);
}
//更新销售售后通知单的售后状态
SalesAftersalesNotice salesAftersalesNotice = new SalesAftersalesNotice();
salesAftersalesNotice.setAftersalesStatus("2");
salesAftersalesNotice.setAftersalesNoticeCode(aftersalesOrder.getAftersalesOrderCode());
salesAftersalesNotice.setStartTime(aftersalesOrder.getStartDate());
int updateNoticeResult = salesAftersalesNoticeMapper.updateSalesAftersalesNoticeByCode(salesAftersalesNotice);
if (updateNoticeResult <= 0){
throw new BusinessException("更新售后通知单数据失败");
}
//设置售后状态为售后中
aftersalesOrder.setAftersalesStatus("2");
return aftersalesOrderMapper.updateAftersalesOrder(aftersalesOrder);
}
} }

29
ruoyi-admin/src/main/java/com/ruoyi/sales/controller/SalesAftersalesNoticeController.java

@ -6,7 +6,9 @@ import java.util.List;
import com.ruoyi.aftersales.service.IAftersalesOrderService; import com.ruoyi.aftersales.service.IAftersalesOrderService;
import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.quality.domain.VO.CheckoutMaterialVO; import com.ruoyi.quality.domain.VO.CheckoutMaterialVO;
import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail;
import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO; import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO;
import com.ruoyi.sales.service.ISalesAftersalesNoticeDetailService;
import com.ruoyi.system.domain.SysSalesOrder; import com.ruoyi.system.domain.SysSalesOrder;
import com.ruoyi.system.domain.Vo.SelectAftersalesNoticeVO; import com.ruoyi.system.domain.Vo.SelectAftersalesNoticeVO;
import com.ruoyi.system.service.ISysSalesOrderService; import com.ruoyi.system.service.ISysSalesOrderService;
@ -31,6 +33,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import javax.xml.bind.annotation.W3CDomHandler;
/** /**
* 售后通知单Controller * 售后通知单Controller
@ -62,6 +65,8 @@ public class SalesAftersalesNoticeController extends BaseController
@Autowired @Autowired
private ISysSalesOrderService sysSalesOrderService; private ISysSalesOrderService sysSalesOrderService;
@Autowired
private ISalesAftersalesNoticeDetailService noticeDetailService;
@RequiresPermissions("sales:afterSalesNotice:view") @RequiresPermissions("sales:afterSalesNotice:view")
@GetMapping() @GetMapping()
@ -115,9 +120,9 @@ public class SalesAftersalesNoticeController extends BaseController
@ResponseBody @ResponseBody
public AjaxResult addSave(SalesAftersalesNotice salesAftersalesNotice) public AjaxResult addSave(SalesAftersalesNotice salesAftersalesNotice)
{ {
// 审核状态-待审核 // // 审核状态-待审核
salesAftersalesNotice.setAuditStatus("0"); // salesAftersalesNotice.setAuditStatus("0");
salesAftersalesNoticeService.submitApply(salesAftersalesNotice); // salesAftersalesNoticeService.submitApply(salesAftersalesNotice);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -131,7 +136,7 @@ public class SalesAftersalesNoticeController extends BaseController
@ResponseBody @ResponseBody
public AjaxResult startAftersalesSave(@RequestBody SysSalesOrder sysSalesOrder) public AjaxResult startAftersalesSave(@RequestBody SysSalesOrder sysSalesOrder)
{ {
salesAftersalesNoticeService.submitApply(sysSalesOrder);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -239,6 +244,18 @@ public class SalesAftersalesNoticeController extends BaseController
/**
* 根据售后通知单号查询售后通知单详情数据
* */
@ResponseBody
@PostMapping("/getAfterSalesNoticeDetailList")
public TableDataInfo getAfterSalesNoticeDetailList(SalesAftersalesNoticeDetail salesAftersalesNoticeDetail){
startPage();
List<SalesAftersalesNoticeDetail> list = noticeDetailService.selectAfterSalesNoticeDetailList(salesAftersalesNoticeDetail);
return getDataTable(list);
}
/** /**
* 修改售后通知单 * 修改售后通知单
*/ */
@ -298,4 +315,8 @@ public class SalesAftersalesNoticeController extends BaseController
} }
} }

16
ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesAftersalesNotice.java

@ -28,6 +28,11 @@ public class SalesAftersalesNotice extends BaseEntity
@Excel(name = "关联销售订单编号") @Excel(name = "关联销售订单编号")
private String salesOrderCode; private String salesOrderCode;
/** 关联生产订单号 */
@Excel(name = "关联生产订单号")
private String makeNo;
/** 用户ID */ /** 用户ID */
@Excel(name = "用户ID") @Excel(name = "用户ID")
private Long userId; private Long userId;
@ -65,6 +70,7 @@ public class SalesAftersalesNotice extends BaseEntity
private String enterpriseSum; private String enterpriseSum;
/** 客户要求出发日期 */ /** 客户要求出发日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "客户要求出发日期") @Excel(name = "客户要求出发日期")
private Date startTime; private Date startTime;
@ -140,6 +146,15 @@ public class SalesAftersalesNotice extends BaseEntity
{ {
return salesOrderCode; return salesOrderCode;
} }
public String getMakeNo() {
return makeNo;
}
public void setMakeNo(String makeNo) {
this.makeNo = makeNo;
}
public void setUserId(Long userId) public void setUserId(Long userId)
{ {
this.userId = userId; this.userId = userId;
@ -336,6 +351,7 @@ public class SalesAftersalesNotice extends BaseEntity
.append("aftersalesNoticeId", getAftersalesNoticeId()) .append("aftersalesNoticeId", getAftersalesNoticeId())
.append("aftersalesNoticeCode", getAftersalesNoticeCode()) .append("aftersalesNoticeCode", getAftersalesNoticeCode())
.append("salesOrderCode", getSalesOrderCode()) .append("salesOrderCode", getSalesOrderCode())
.append("makeNo", getMakeNo())
.append("userId", getUserId()) .append("userId", getUserId())
.append("auditStatus", getAuditStatus()) .append("auditStatus", getAuditStatus())
.append("aftersalesStatus", getAftersalesStatus()) .append("aftersalesStatus", getAftersalesStatus())

5
ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeDetailMapper.java

@ -74,4 +74,9 @@ public interface SalesAftersalesNoticeDetailMapper
* @return 结果 * @return 结果
*/ */
public int restoreSalesAftersalesNoticeDetailById(Long aftersalesNoticeDetailId); public int restoreSalesAftersalesNoticeDetailById(Long aftersalesNoticeDetailId);
/**
* 根据售后通知单号查询售后通知单详情数据
* */
List<SalesAftersalesNoticeDetail> selectSalesAftersalesNoticeDetailListByCode(String aftersalesNoticeCode);
} }

6
ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeMapper.java

@ -80,4 +80,10 @@ public interface SalesAftersalesNoticeMapper
* 根据售后单号查询销售售后通知单 * 根据售后单号查询销售售后通知单
* */ * */
SalesAftersalesNoticeVO selectSalesAftersalesNoticeByCode(String aftersalesNoticeCode); SalesAftersalesNoticeVO selectSalesAftersalesNoticeByCode(String aftersalesNoticeCode);
/**
* 根据售后单号更新销售售后通知单数据
* */
int updateSalesAftersalesNoticeByCode(SalesAftersalesNotice salesAftersalesNotice);
} }

5
ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeDetailService.java

@ -72,4 +72,9 @@ public interface ISalesAftersalesNoticeDetailService
* @return * @return
*/ */
int restoreSalesAftersalesNoticeDetailById(Long aftersalesNoticeDetailId); int restoreSalesAftersalesNoticeDetailById(Long aftersalesNoticeDetailId);
/**
* 根据售后通知单号查询售后通知单详情数据
* */
List<SalesAftersalesNoticeDetail> selectAfterSalesNoticeDetailList(SalesAftersalesNoticeDetail salesAftersalesNoticeDetail);
} }

3
ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeService.java

@ -5,6 +5,7 @@ import java.util.List;
import com.ruoyi.aftersales.domain.AftersalesOrder; import com.ruoyi.aftersales.domain.AftersalesOrder;
import com.ruoyi.sales.domain.SalesAftersalesNotice; import com.ruoyi.sales.domain.SalesAftersalesNotice;
import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO; import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO;
import com.ruoyi.system.domain.SysSalesOrder;
import com.ruoyi.system.domain.Vo.SelectAftersalesNoticeVO; import com.ruoyi.system.domain.Vo.SelectAftersalesNoticeVO;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
@ -83,7 +84,7 @@ public interface ISalesAftersalesNoticeService
/** /**
* 审批流程启动 * 审批流程启动
* */ * */
ProcessInstance submitApply(SalesAftersalesNotice salesAftersalesNotice); ProcessInstance submitApply(SysSalesOrder sysSalesOrder);
/** /**
* 根据售后单号查询销售售后通知单 * 根据售后单号查询销售售后通知单

16
ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeDetailServiceImpl.java

@ -3,6 +3,8 @@ package com.ruoyi.sales.service.impl;
import java.util.List; import java.util.List;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.sales.mapper.SalesAftersalesNoticeDetailMapper; import com.ruoyi.sales.mapper.SalesAftersalesNoticeDetailMapper;
@ -16,6 +18,7 @@ import com.ruoyi.common.core.text.Convert;
* @author 刘晓旭 * @author 刘晓旭
* @date 2024-07-22 * @date 2024-07-22
*/ */
@Slf4j
@Service @Service
public class SalesAftersalesNoticeDetailServiceImpl implements ISalesAftersalesNoticeDetailService public class SalesAftersalesNoticeDetailServiceImpl implements ISalesAftersalesNoticeDetailService
{ {
@ -123,4 +126,17 @@ public class SalesAftersalesNoticeDetailServiceImpl implements ISalesAftersalesN
{ {
return salesAftersalesNoticeDetailMapper.restoreSalesAftersalesNoticeDetailById(aftersalesNoticeDetailId); return salesAftersalesNoticeDetailMapper.restoreSalesAftersalesNoticeDetailById(aftersalesNoticeDetailId);
} }
/**
* 根据售后通知单号查询售后通知单详情数据
* */
@Override
public List<SalesAftersalesNoticeDetail> selectAfterSalesNoticeDetailList(SalesAftersalesNoticeDetail salesAftersalesNoticeDetail) {
String aftersalesNoticeCode = salesAftersalesNoticeDetail.getAftersalesNoticeCode();
if (StringUtils.isEmpty(aftersalesNoticeCode)){
log.warn("与售后通知单详情关联的售后通知单号为空:{}",aftersalesNoticeCode);
}
return salesAftersalesNoticeDetailMapper.selectSalesAftersalesNoticeDetailListByCode(aftersalesNoticeCode);
}
} }

63
ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeServiceImpl.java

@ -12,9 +12,14 @@ import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper;
import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail;
import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO; import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO;
import com.ruoyi.sales.mapper.SalesAftersalesNoticeDetailMapper;
import com.ruoyi.system.domain.SysMakeOrder;
import com.ruoyi.system.domain.SysSalesOrder;
import com.ruoyi.system.domain.SysSalesOrderChild; import com.ruoyi.system.domain.SysSalesOrderChild;
import com.ruoyi.system.domain.Vo.SelectAftersalesNoticeVO; import com.ruoyi.system.domain.Vo.SelectAftersalesNoticeVO;
import com.ruoyi.system.mapper.SysMakeOrderMapper;
import com.ruoyi.system.mapper.SysSalesOrderChildMapper; import com.ruoyi.system.mapper.SysSalesOrderChildMapper;
import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysRoleService;
@ -67,6 +72,12 @@ public class SalesAftersalesNoticeServiceImpl implements ISalesAftersalesNoticeS
@Autowired @Autowired
private SysSalesOrderChildMapper sysSalesOrderChildMapper; private SysSalesOrderChildMapper sysSalesOrderChildMapper;
@Autowired
private SalesAftersalesNoticeDetailMapper aftersalesNoticeDetailMapper;
@Autowired
private SysMakeOrderMapper sysMakeOrderMapper;
/** /**
* 查询售后通知单 * 查询售后通知单
* *
@ -222,15 +233,38 @@ public class SalesAftersalesNoticeServiceImpl implements ISalesAftersalesNoticeS
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public ProcessInstance submitApply(SalesAftersalesNotice salesAftersalesNotice) { public ProcessInstance submitApply(SysSalesOrder sysSalesOrder) {
SysUser user = ShiroUtils.getSysUser(); SysUser user = ShiroUtils.getSysUser();
String loginName = ShiroUtils.getLoginName();
SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(sysSalesOrder.getSalesOrderCode());
SalesAftersalesNotice salesAftersalesNotice = new SalesAftersalesNotice();
// 审核状态-待审核
salesAftersalesNotice.setAuditStatus("0");
//待派单
salesAftersalesNotice.setAftersalesStatus("0");
String aftersalesNoticeCode = redisCache.generateBillNo("SH");
salesAftersalesNotice.setApplyUser(user.getLoginName()); salesAftersalesNotice.setApplyUser(user.getLoginName());
salesAftersalesNotice.setApplyTime(DateUtils.getNowDate()); salesAftersalesNotice.setApplyTime(DateUtils.getNowDate());
salesAftersalesNotice.setAftersalesNoticeCode(redisCache.generateBillNo("SH")); salesAftersalesNotice.setAftersalesNoticeCode(aftersalesNoticeCode);
salesAftersalesNotice.setMakeNo(sysMakeOrder.getMakeNo());
salesAftersalesNotice.setSalesOrderCode(sysSalesOrder.getSalesOrderCode());
salesAftersalesNotice.setEnterpriseCode(sysSalesOrder.getEnterpriseCode());
salesAftersalesNotice.setEnterpriseName(sysSalesOrder.getEnterpriseName());
salesAftersalesNotice.setCompanyAddress(sysSalesOrder.getDeliveryAddress());
salesAftersalesNotice.setCustomerContact(sysSalesOrder.getCustomerContact());
salesAftersalesNotice.setContactNumber(sysSalesOrder.getContactNumber());
salesAftersalesNotice.setRemark(sysSalesOrder.getRemark());
salesAftersalesNotice.setCreateBy(loginName);
salesAftersalesNotice.setCreateTime(new Date());
// 保存 // 保存
insertSalesAftersalesNotice(salesAftersalesNotice); insertSalesAftersalesNotice(salesAftersalesNotice);
List<SelectAftersalesNoticeVO> selectAftersalesNoticeVOList = sysSalesOrder.getSelectAftersalesNoticeVOList();
//插入售后通知单子表数据
insertAftersalesNoticeDetailByList(loginName, aftersalesNoticeCode, selectAftersalesNoticeVOList);
// 启动流程 // 启动流程
String applyTitle = user.getUserName()+"发起了售后单提交审批-"+DateUtils.dateTimeNow(); String applyTitle = user.getUserName()+"发起了售后单提交审批-"+DateUtils.dateTimeNow();
String instanceType = "submit"; String instanceType = "submit";
@ -248,6 +282,27 @@ public class SalesAftersalesNoticeServiceImpl implements ISalesAftersalesNoticeS
return processInstance; return processInstance;
} }
private void insertAftersalesNoticeDetailByList(String loginName, String aftersalesNoticeCode, List<SelectAftersalesNoticeVO> selectAftersalesNoticeVOList) {
for (SelectAftersalesNoticeVO selectAftersalesNoticeVO : selectAftersalesNoticeVOList) {
SalesAftersalesNoticeDetail salesAftersalesNoticeDetail = new SalesAftersalesNoticeDetail();
salesAftersalesNoticeDetail.setAftersalesNoticeCode(aftersalesNoticeCode);
salesAftersalesNoticeDetail.setMaterialNo(selectAftersalesNoticeVO.getMaterialNo());
salesAftersalesNoticeDetail.setMaterialBrand(selectAftersalesNoticeVO.getMaterialBrand());
salesAftersalesNoticeDetail.setMaterialName(selectAftersalesNoticeVO.getMaterialName());
salesAftersalesNoticeDetail.setMaterialType(selectAftersalesNoticeVO.getMaterialType());
salesAftersalesNoticeDetail.setMaterialUnit(selectAftersalesNoticeVO.getMaterialUnit());
salesAftersalesNoticeDetail.setMaterialProcessMethod(selectAftersalesNoticeVO.getMaterialProcessMethod());
salesAftersalesNoticeDetail.setMaterialDescribe(selectAftersalesNoticeVO.getMaterialDescribe());
salesAftersalesNoticeDetail.setShippedGoodsSum(selectAftersalesNoticeVO.getShippedGoodsSum());
salesAftersalesNoticeDetail.setSnCode(selectAftersalesNoticeVO.getSnCode());
salesAftersalesNoticeDetail.setAftersalesProblem(selectAftersalesNoticeVO.getAftersalesProblem());
salesAftersalesNoticeDetail.setEmergencyDegree(selectAftersalesNoticeVO.getEmergencyDegree());
salesAftersalesNoticeDetail.setCreateBy(loginName);
salesAftersalesNoticeDetail.setCreateTime(new Date());
aftersalesNoticeDetailMapper.insertSalesAftersalesNoticeDetail(salesAftersalesNoticeDetail);
}
}
/** /**
* 根据售后单号查询销售售后通知单 * 根据售后单号查询销售售后通知单
* */ * */

1
ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOrderMapper.xml

@ -56,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="aftersalesName != null and aftersalesName != ''"> and aftersales_name like concat('%', #{aftersalesName}, '%')</if> <if test="aftersalesName != null and aftersalesName != ''"> and aftersales_name like concat('%', #{aftersalesName}, '%')</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if> <if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if>
</where> </where>
order by create_time desc
</select> </select>
<select id="selectAftersalesOrderById" parameterType="Long" resultMap="AftersalesOrderResult"> <select id="selectAftersalesOrderById" parameterType="Long" resultMap="AftersalesOrderResult">

7
ruoyi-admin/src/main/resources/mapper/sales/SalesAftersalesNoticeDetailMapper.xml

@ -48,6 +48,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where aftersales_notice_detail_id = #{aftersalesNoticeDetailId} where aftersales_notice_detail_id = #{aftersalesNoticeDetailId}
</select> </select>
<select id="selectSalesAftersalesNoticeDetailListByCode" parameterType="String" resultMap="SalesAftersalesNoticeDetailResult">
<include refid="selectSalesAftersalesNoticeDetailVo"/>
where aftersales_notice_code = #{aftersalesNoticeCode}
</select>
<insert id="insertSalesAftersalesNoticeDetail" parameterType="SalesAftersalesNoticeDetail" useGeneratedKeys="true" keyProperty="aftersalesNoticeDetailId"> <insert id="insertSalesAftersalesNoticeDetail" parameterType="SalesAftersalesNoticeDetail" useGeneratedKeys="true" keyProperty="aftersalesNoticeDetailId">
insert into sales_aftersales_notice_detail insert into sales_aftersales_notice_detail
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">

45
ruoyi-admin/src/main/resources/mapper/sales/SalesAftersalesNoticeMapper.xml

@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="aftersalesNoticeId" column="aftersales_notice_id" /> <result property="aftersalesNoticeId" column="aftersales_notice_id" />
<result property="aftersalesNoticeCode" column="aftersales_notice_code" /> <result property="aftersalesNoticeCode" column="aftersales_notice_code" />
<result property="salesOrderCode" column="sales_order_code" /> <result property="salesOrderCode" column="sales_order_code" />
<result property="makeNo" column="make_no" />
<result property="userId" column="user_id" /> <result property="userId" column="user_id" />
<result property="auditStatus" column="audit_status" /> <result property="auditStatus" column="audit_status" />
<result property="aftersalesStatus" column="aftersales_status" /> <result property="aftersalesStatus" column="aftersales_status" />
@ -38,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectSalesAftersalesNoticeVo"> <sql id="selectSalesAftersalesNoticeVo">
select aftersales_notice_id, aftersales_notice_code, sales_order_code, user_id, audit_status, aftersales_status, business_members, aftersales_members, enterprise_code, enterprise_name, material_sum, enterprise_sum, start_time, customer_contact, contact_number, company_address, create_by, create_time, update_by, update_time, instance_id, instance_type, submit_instance_id, apply_title, apply_time, apply_user, cancel_instance_id, restore_instance_id, remark from sales_aftersales_notice select aftersales_notice_id, aftersales_notice_code, sales_order_code, make_no, user_id, audit_status, aftersales_status, business_members, aftersales_members, enterprise_code, enterprise_name, material_sum, enterprise_sum, start_time, customer_contact, contact_number, company_address, create_by, create_time, update_by, update_time, instance_id, instance_type, submit_instance_id, apply_title, apply_time, apply_user, cancel_instance_id, restore_instance_id, remark from sales_aftersales_notice
</sql> </sql>
<select id="selectSalesAftersalesNoticeList" parameterType="SalesAftersalesNoticeVO" resultMap="SalesAftersalesNoticeResult"> <select id="selectSalesAftersalesNoticeList" parameterType="SalesAftersalesNoticeVO" resultMap="SalesAftersalesNoticeResult">
@ -55,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="enterpriseName != null and enterpriseName != ''"> and enterprise_name like concat('%', #{enterpriseName}, '%')</if> <if test="enterpriseName != null and enterpriseName != ''"> and enterprise_name like concat('%', #{enterpriseName}, '%')</if>
<if test="params.beginUpdateTime != null and params.beginUpdateTime != '' and params.endUpdateTime != null and params.endUpdateTime != ''"> and update_time between #{params.beginUpdateTime} and #{params.endUpdateTime}</if> <if test="params.beginUpdateTime != null and params.beginUpdateTime != '' and params.endUpdateTime != null and params.endUpdateTime != ''"> and update_time between #{params.beginUpdateTime} and #{params.endUpdateTime}</if>
</where> </where>
order by create_time desc
</select> </select>
<select id="selectSalesAftersalesNoticeById" parameterType="Long" resultMap="SalesAftersalesNoticeResult"> <select id="selectSalesAftersalesNoticeById" parameterType="Long" resultMap="SalesAftersalesNoticeResult">
@ -73,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="aftersalesNoticeCode != null">aftersales_notice_code,</if> <if test="aftersalesNoticeCode != null">aftersales_notice_code,</if>
<if test="salesOrderCode != null">sales_order_code,</if> <if test="salesOrderCode != null">sales_order_code,</if>
<if test="makeNo != null">make_no,</if>
<if test="userId != null">user_id,</if> <if test="userId != null">user_id,</if>
<if test="auditStatus != null">audit_status,</if> <if test="auditStatus != null">audit_status,</if>
<if test="aftersalesStatus != null">aftersales_status,</if> <if test="aftersalesStatus != null">aftersales_status,</if>
@ -103,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="aftersalesNoticeCode != null">#{aftersalesNoticeCode},</if> <if test="aftersalesNoticeCode != null">#{aftersalesNoticeCode},</if>
<if test="salesOrderCode != null">#{salesOrderCode},</if> <if test="salesOrderCode != null">#{salesOrderCode},</if>
<if test="makeNo != null">#{makeNo},</if>
<if test="userId != null">#{userId},</if> <if test="userId != null">#{userId},</if>
<if test="auditStatus != null">#{auditStatus},</if> <if test="auditStatus != null">#{auditStatus},</if>
<if test="aftersalesStatus != null">#{aftersalesStatus},</if> <if test="aftersalesStatus != null">#{aftersalesStatus},</if>
@ -137,6 +141,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="aftersalesNoticeCode != null">aftersales_notice_code = #{aftersalesNoticeCode},</if> <if test="aftersalesNoticeCode != null">aftersales_notice_code = #{aftersalesNoticeCode},</if>
<if test="salesOrderCode != null">sales_order_code = #{salesOrderCode},</if> <if test="salesOrderCode != null">sales_order_code = #{salesOrderCode},</if>
<if test="makeNo != null">make_no = #{makeNo},</if>
<if test="userId != null">user_id = #{userId},</if> <if test="userId != null">user_id = #{userId},</if>
<if test="auditStatus != null">audit_status = #{auditStatus},</if> <if test="auditStatus != null">audit_status = #{auditStatus},</if>
<if test="aftersalesStatus != null">aftersales_status = #{aftersalesStatus},</if> <if test="aftersalesStatus != null">aftersales_status = #{aftersalesStatus},</if>
@ -167,6 +172,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where aftersales_notice_id = #{aftersalesNoticeId} where aftersales_notice_id = #{aftersalesNoticeId}
</update> </update>
<update id="updateSalesAftersalesNoticeByCode" parameterType="SalesAftersalesNoticeVO">
update sales_aftersales_notice
<trim prefix="SET" suffixOverrides=",">
<if test="aftersalesNoticeCode != null">aftersales_notice_code = #{aftersalesNoticeCode},</if>
<if test="salesOrderCode != null">sales_order_code = #{salesOrderCode},</if>
<if test="makeNo != null">make_no = #{makeNo},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="auditStatus != null">audit_status = #{auditStatus},</if>
<if test="aftersalesStatus != null">aftersales_status = #{aftersalesStatus},</if>
<if test="businessMembers != null">business_members = #{businessMembers},</if>
<if test="aftersalesMembers != null">aftersales_members = #{aftersalesMembers},</if>
<if test="enterpriseCode != null">enterprise_code = #{enterpriseCode},</if>
<if test="enterpriseName != null">enterprise_name = #{enterpriseName},</if>
<if test="materialSum != null">material_sum = #{materialSum},</if>
<if test="enterpriseSum != null">enterprise_sum = #{enterpriseSum},</if>
<if test="startTime != null">start_time = #{startTime},</if>
<if test="customerContact != null">customer_contact = #{customerContact},</if>
<if test="contactNumber != null">contact_number = #{contactNumber},</if>
<if test="companyAddress != null">company_address = #{companyAddress},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="instanceId != null">instance_id = #{instanceId},</if>
<if test="instanceType != null">instance_type = #{instanceType},</if>
<if test="submitInstanceId != null">submit_instance_id = #{submitInstanceId},</if>
<if test="applyTitle != null">apply_title = #{applyTitle},</if>
<if test="applyTime != null">apply_time = #{applyTime},</if>
<if test="applyUser != null">apply_user = #{applyUser},</if>
<if test="cancelInstanceId != null">cancel_instance_id = #{cancelInstanceId},</if>
<if test="restoreInstanceId != null">restore_instance_id = #{restoreInstanceId},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where aftersales_notice_code = #{aftersalesNoticeCode}
</update>
<delete id="deleteSalesAftersalesNoticeById" parameterType="Long"> <delete id="deleteSalesAftersalesNoticeById" parameterType="Long">
delete from sales_aftersales_notice where aftersales_notice_id = #{aftersalesNoticeId} delete from sales_aftersales_notice where aftersales_notice_id = #{aftersalesNoticeId}
</delete> </delete>

25
ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/aftersalesOrder.html

@ -141,7 +141,12 @@
{ {
title: '客户要求出发日期', title: '客户要求出发日期',
field: 'startDate', field: 'startDate',
//——修改——获取日期列的值进行转换
// formatter: function (value, row, index) {
// return changeDateFormat(value)
// }
}, },
{ {
title: '公司地址', title: '公司地址',
field: 'companyAddress', field: 'companyAddress',
@ -180,9 +185,14 @@
// 编辑 // 编辑
// actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i> 编辑</a> '); // actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i> 编辑</a> ');
actions.push('<a class="btn btn-success btn-xs ' + sendOrdersFlag + '" href="javascript:void(0)" onclick="sendOrders(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>派单</a> '); if (row.aftersalesStatus == 0){
actions.push('<a class="btn btn-success btn-xs ' + sendOrdersFlag + '" href="javascript:void(0)" onclick="sendOrders(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>派单</a> ');
}
if (row.aftersalesStatus == 1) {
actions.push('<a class="btn btn-success btn-xs ' + uploadReportFlag + '" href="javascript:void(0)" onclick="uploadReport(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>上传报告</a> '); actions.push('<a class="btn btn-success btn-xs ' + uploadReportFlag + '" href="javascript:void(0)" onclick="uploadReport(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>上传报告</a> ');
// 详情 }
// 详情
actions.push('<a class="btn btn-success btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>详情</a> '); actions.push('<a class="btn btn-success btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>详情</a> ');
return actions.join(''); return actions.join('');
} }
@ -224,6 +234,17 @@
$.modal.open("上传报告",url); $.modal.open("上传报告",url);
} }
//修改——转换日期格式(时间戳转换为datetime格式)
// function changeDateFormat(cellval) {
// if (cellval != null) {
// var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));
// var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
// var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
// return date.getFullYear() + "-" + month + "-" + currentDate;
// }
// }
</script> </script>
</body> </body>
</html> </html>

73
ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/detail.html

@ -12,15 +12,15 @@
<form class="form-horizontal m" id="form-aftersalesOrder-edit" th:object="${detail}"> <form class="form-horizontal m" id="form-aftersalesOrder-edit" th:object="${detail}">
<input name="aftersalesOrderId" th:field="*{aftersalesOrderId}" type="hidden"> <input name="aftersalesOrderId" th:field="*{aftersalesOrderId}" type="hidden">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">售单号:</label> <label class="col-sm-4 control-label">单号:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text" readonly> <input name="aftersalesOrderCode" th:field="*{aftersalesOrderCode}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">生产单号:</label> <label class="col-sm-4 control-label">销售单号:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="makeNo" th:field="*{makeNo}" class="form-control" type="text" readonly> <input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text" readonly>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -54,10 +54,10 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">客户要求出发日期:</label> <label class="col-sm-3 control-label">客户要求出发日期:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="input-group date"> <div class="input-group date">
<input name="startDate" class="form-control" th:value="*{startDate}" placeholder="yyyy-mm-dd" type="text" readonly> <input name="startDate" th:value="${#dates.format(detail.startDate, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" disabled>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div> </div>
</div> </div>
@ -128,6 +128,7 @@
<script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script> <script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script>
<script th:inline="javascript"> <script th:inline="javascript">
var emergencyDegreeDatas = [[${@dict.getType('aftersales_emergency_degree')}]];
var prefix = ctx + "aftersales/aftersalesOrder"; var prefix = ctx + "aftersales/aftersalesOrder";
var detail = [[${detail}]]; var detail = [[${detail}]];
@ -257,11 +258,6 @@
columns: [{ columns: [{
checkbox: true checkbox: true
}, },
{
title: '出货设备编号',
field: 'shippingDeviceCode',
visible: false
},
{ {
title: '料号', title: '料号',
field: 'materialNo', field: 'materialNo',
@ -291,20 +287,23 @@
field: 'materialDescribe', field: 'materialDescribe',
}, },
{ {
title: '流水号', title: '售后数量',
field: 'deviceRunningNumber', field: 'shippedGoodsSum',
}, },
{ {
title: '生产图片', title: '设备SN',
field: 'makePhotourl', field: 'snCode',
}, },
{ {
title: 'SN号', title: '售后问题',
field: 'snCode', field: 'aftersalesProblem',
}, },
{ {
title: '售后图片', title: '紧急程度',
field: 'aftersalesPhotourl', field: 'emergencyDegree',
formatter: function(value, row, index) {
return $.table.selectDictLabel(emergencyDegreeDatas, value);
}
}, },
] ]
}; };
@ -324,11 +323,11 @@
} }
} }
// $("input[name='startDate']").datetimepicker({ $("input[name='startDate']").datetimepicker({
// format: "yyyy-mm-dd", format: "yyyy-mm-dd",
// minView: "month", minView: "month",
// autoclose: true autoclose: true
// }); });
$(function() { $(function() {
var options = { var options = {
url: prefix + "/optionDevices", url: prefix + "/optionDevices",
@ -342,11 +341,6 @@
columns: [{ columns: [{
checkbox: true checkbox: true
}, },
{
title: '出货设备编号',
field: 'shippingDeviceCode',
visible: false
},
{ {
title: '料号', title: '料号',
field: 'materialNo', field: 'materialNo',
@ -376,20 +370,23 @@
field: 'materialDescribe', field: 'materialDescribe',
}, },
{ {
title: '流水号', title: '已出库数量',
field: 'deviceRunningNumber', field: 'shippedGoodsSum',
}, },
{ {
title: '生产图片', title: '设备SN',
field: 'makePhotourl', field: 'snCode',
}, },
{ {
title: 'SN号', title: '售后问题',
field: 'snCode', field: 'aftersalesProblem',
}, },
{ {
title: '售后图片', title: '紧急程度',
field: 'aftersalesPhotourl', field: 'emergencyDegree',
formatter: function(value, row, index) {
return $.table.selectDictLabel(emergencyDegreeDatas, value);
}
}, },
] ]
}; };
@ -398,7 +395,7 @@
function queryParams(params) { function queryParams(params) {
var curParams = { var curParams = {
// 传递参数查询参数 // 传递参数查询参数
makeNo: detail.makeNo aftersalesOrderCode: detail.aftersalesOrderCode
}; };
return curParams; return curParams;
} }

45
ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/sendOrders.html

@ -10,15 +10,15 @@
<form class="form-horizontal m" id="form-aftersalesOrder-edit" th:object="${sendOrders}"> <form class="form-horizontal m" id="form-aftersalesOrder-edit" th:object="${sendOrders}">
<input name="aftersalesOrderId" th:field="*{aftersalesOrderId}" type="hidden"> <input name="aftersalesOrderId" th:field="*{aftersalesOrderId}" type="hidden">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">售单号:</label> <label class="col-sm-4 control-label">单号:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text"> <input name="aftersalesOrderCode" th:field="*{aftersalesOrderCode}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">生产单号:</label> <label class="col-sm-4 control-label">销售单号:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="makeNo" th:field="*{makeNo}" class="form-control" type="text"> <input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -52,14 +52,15 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">客户要求出发日期:</label> <label class="col-sm-3 control-label">客户要求出发日期:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="input-group date"> <div class="input-group date">
<input name="startDate" class="form-control" th:value="*{startDate}" placeholder="yyyy-mm-dd" type="text"> <input name="startDate" th:value="${#dates.format(sendOrders.startDate, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">备注:</label> <label class="col-sm-4 control-label">备注:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -92,6 +93,9 @@
<th:block th:include="include :: summernote-js" /> <th:block th:include="include :: summernote-js" />
<script th:inline="javascript"> <script th:inline="javascript">
var prefix = ctx + "aftersales/aftersalesOrder"; var prefix = ctx + "aftersales/aftersalesOrder";
var emergencyDegreeDatas = [[${@dict.getType('aftersales_emergency_degree')}]];
var sendOrders = [[${sendOrders}]]; var sendOrders = [[${sendOrders}]];
$("#form-aftersalesOrder-edit").validate({ $("#form-aftersalesOrder-edit").validate({
focusCleanup: true focusCleanup: true
@ -99,7 +103,7 @@
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-aftersalesOrder-edit').serialize()); $.operate.save(prefix + "/sendOrders", $('#form-aftersalesOrder-edit').serialize());
} }
} }
@ -109,6 +113,7 @@
autoclose: true autoclose: true
}); });
$(function() { $(function() {
$('.summernote').each(function(i) { $('.summernote').each(function(i) {
$('#' + this.id).summernote({ $('#' + this.id).summernote({
@ -160,11 +165,6 @@
columns: [{ columns: [{
checkbox: true checkbox: true
}, },
{
title: '出货设备编号',
field: 'shippingDeviceCode',
visible: false
},
{ {
title: '料号', title: '料号',
field: 'materialNo', field: 'materialNo',
@ -194,20 +194,23 @@
field: 'materialDescribe', field: 'materialDescribe',
}, },
{ {
title: '流水号', title: '售后数量',
field: 'deviceRunningNumber', field: 'shippedGoodsSum',
}, },
{ {
title: '生产图片', title: '设备SN',
field: 'makePhotourl', field: 'snCode',
}, },
{ {
title: 'SN号', title: '售后问题',
field: 'snCode', field: 'aftersalesProblem',
}, },
{ {
title: '售后图片', title: '紧急程度',
field: 'aftersalesPhotourl', field: 'emergencyDegree',
formatter: function(value, row, index) {
return $.table.selectDictLabel(emergencyDegreeDatas, value);
}
}, },
] ]
}; };
@ -216,7 +219,7 @@
function queryParams(params) { function queryParams(params) {
var curParams = { var curParams = {
// 传递参数查询参数 // 传递参数查询参数
makeNo: sendOrders.makeNo aftersalesOrderCode: sendOrders.aftersalesOrderCode
}; };
return curParams; return curParams;
} }

42
ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/uploadReport.html

@ -12,15 +12,15 @@
<form class="form-horizontal m" id="form-aftersalesOrder-edit" th:object="${uploadReport}"> <form class="form-horizontal m" id="form-aftersalesOrder-edit" th:object="${uploadReport}">
<input name="aftersalesOrderId" th:field="*{aftersalesOrderId}" type="hidden"> <input name="aftersalesOrderId" th:field="*{aftersalesOrderId}" type="hidden">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">售单号:</label> <label class="col-sm-4 control-label">单号:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text"> <input name="aftersalesOrderCode" th:field="*{aftersalesOrderCode}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">生产单号:</label> <label class="col-sm-4 control-label">销售单号:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="makeNo" th:field="*{makeNo}" class="form-control" type="text"> <input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -54,10 +54,10 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">客户要求出发日期:</label> <label class="col-sm-3 control-label">客户要求出发日期:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="input-group date"> <div class="input-group date">
<input name="startDate" class="form-control" th:value="*{startDate}" placeholder="yyyy-mm-dd" type="text"> <input name="startDate" th:value="${#dates.format(uploadReport.startDate, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div> </div>
</div> </div>
@ -128,7 +128,7 @@
<script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script> <script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script>
<script th:inline="javascript"> <script th:inline="javascript">
var emergencyDegreeDatas = [[${@dict.getType('aftersales_emergency_degree')}]];
var prefix = ctx + "aftersales/aftersalesOrder"; var prefix = ctx + "aftersales/aftersalesOrder";
var uploadReport = [[${uploadReport}]]; var uploadReport = [[${uploadReport}]];
$("#form-aftersalesOrder-edit").validate({ $("#form-aftersalesOrder-edit").validate({
@ -202,11 +202,6 @@
columns: [{ columns: [{
checkbox: true checkbox: true
}, },
{
title: '出货设备编号',
field: 'shippingDeviceCode',
visible: false
},
{ {
title: '料号', title: '料号',
field: 'materialNo', field: 'materialNo',
@ -236,20 +231,23 @@
field: 'materialDescribe', field: 'materialDescribe',
}, },
{ {
title: '流水号', title: '售后数量',
field: 'deviceRunningNumber', field: 'shippedGoodsSum',
}, },
{ {
title: '生产图片', title: '设备SN',
field: 'makePhotourl', field: 'snCode',
}, },
{ {
title: 'SN号', title: '售后问题',
field: 'snCode', field: 'aftersalesProblem',
}, },
{ {
title: '售后图片', title: '紧急程度',
field: 'aftersalesPhotourl', field: 'emergencyDegree',
formatter: function(value, row, index) {
return $.table.selectDictLabel(emergencyDegreeDatas, value);
}
}, },
] ]
}; };
@ -265,7 +263,7 @@
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-aftersalesOrder-edit').serialize()); $.operate.save(prefix + "/uploadReport", $('#form-aftersalesOrder-edit').serialize());
} }
} }
@ -382,7 +380,7 @@
function queryParams(params) { function queryParams(params) {
var curParams = { var curParams = {
// 传递参数查询参数 // 传递参数查询参数
makeNo: uploadReport.makeNo aftersalesOrderCode: uploadReport.aftersalesOrderCode
}; };
return curParams; return curParams;
} }

4
ruoyi-admin/src/main/resources/templates/erp/material/add.html

@ -55,9 +55,9 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">品牌:</label> <label class="col-sm-3 control-label is-required">品牌:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="brand" class="form-control" type="text"/> <input name="brand" class="form-control" type="text" required/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">

58
ruoyi-admin/src/main/resources/templates/erp/material/material.html

@ -133,56 +133,56 @@
columns: [ columns: [
{checkbox: true}, {checkbox: true},
{title: '主键ID',field: 'id',visible: false}, {title: '主键ID',field: 'id',visible: false},
{title: '料号',field: 'materialNo',},
{title: '物料名称',field: 'materialName',},
{title: '描述',field: 'describe',},
{title: '品牌',field: 'brand',},
{title: '半成品类型',field: 'processMethod',
formatter: function(value, row, index) {return $.table.selectDictLabel(processMethodDatas, value);}
},
{title: '单位',field: 'unit',
formatter: function(value, row, index) {return $.table.selectDictLabel(sysUnitClassDatas, value);}
},
{title: '图片',field: 'photoUrl',
formatter: function(value, row, index) {return $.table.imageView(value);}
},
{title: '<span style="color: red;">申请人</span>',field: 'applyUserName',
formatter: function(value, row, index) {return '<span style="color: red;">' + (value ? value : "-") + '</span>';}
},
{title: '申请时间',field: 'applyTime',},
{title: '上次更新时间',field: 'updateTime',},
{title: '当前状态',field: 'taskName',align: 'center',
formatter: function(value, row, index) {return '<span class="badge badge-primary">' + value + '</span>';}
},
{title: '流程实例ID',field: 'instanceId',visible: false}, {title: '流程实例ID',field: 'instanceId',visible: false},
{title: '流程提交实例ID',field: 'submitInstanceId',visible: false}, {title: '流程提交实例ID',field: 'submitInstanceId',visible: false},
{title: '流程作废实例ID',field: 'cancelInstanceId',visible: false}, {title: '流程作废实例ID',field: 'cancelInstanceId',visible: false},
{title: '流程恢复实例ID',field: 'restoreInstanceId',visible: false}, {title: '流程恢复实例ID',field: 'restoreInstanceId',visible: false},
{title: '流程实例类型',field: 'instanceTypeName',visible: false}, {title: '流程实例类型',field: 'instanceTypeName',visible: false},
{title: '申请人ID',field: 'applyUser',visible: false}, {title: '申请人ID',field: 'applyUser',visible: false},
{title: '<span style="color: red;">申请人</span>',field: 'applyUserName',
formatter: function(value, row, index) {return '<span style="color: red;">' + (value ? value : "-") + '</span>';}
},
{title: '申请时间',field: 'applyTime',},
{title: '当前任务ID',field: 'taskId',visible: false}, {title: '当前任务ID',field: 'taskId',visible: false},
{title: '待办用户ID',field: 'todoUserId', visible: false}, {title: '待办用户ID',field: 'todoUserId', visible: false},
{title: '当前任务名称',field: 'taskName',align: 'center', {title: '审核状态',field: 'auditStatus',visible: false,
formatter: function(value, row, index) {return '<span class="badge badge-primary">' + value + '</span>';}
},
{title: '审核状态',field: 'auditStatus',
formatter: function(value, row, index) {return $.table.selectDictLabel(auditStatusDatas, value);} formatter: function(value, row, index) {return $.table.selectDictLabel(auditStatusDatas, value);}
}, },
{title: '使用状态',field: 'useStatus', {title: '使用状态',field: 'useStatus',visible: false,
formatter: function(value, row, index) {return $.table.selectDictLabel(useStatusDatas, value);} formatter: function(value, row, index) {return $.table.selectDictLabel(useStatusDatas, value);}
}, },
{title: '工程员',field: 'businessMembers',visible: false}, {title: '工程员',field: 'businessMembers',visible: false},
{title: '料号',field: 'materialNo',}, {title: '关联bom号',field: 'bomNo',visible: false},
{title: '关联bom号',field: 'bomNo',}, {title: '物料类型',field: 'materialType',visible: false,
{title: '图片',field: 'photoUrl',
formatter: function(value, row, index) {return $.table.imageView(value);}
},
{title: '物料名称',field: 'materialName',},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {return $.table.selectCategoryLabel(materialTypeDatas, value);} formatter: function(value, row, index) {return $.table.selectCategoryLabel(materialTypeDatas, value);}
}, },
{title: '单位',field: 'unit', {title: '利润率',field: '',hidden: roes,visible: false},
formatter: function(value, row, index) {return $.table.selectDictLabel(sysUnitClassDatas, value);}
},
{title: '品牌',field: 'brand',},
{title: '描述',field: 'describe',},
{title: '利润率',field: '',hidden: roes},
{title: '是否有技术团队',field: 'havaProductTem',visible: false, {title: '是否有技术团队',field: 'havaProductTem',visible: false,
formatter:function (value, row, index){return $.table.selectDictLabel(haveProductTem,value);} formatter:function (value, row, index){return $.table.selectDictLabel(haveProductTem,value);}
}, },
{title: '技术团队id',field: 'productItem',visible: false,}, {title: '技术团队id',field: 'productItem',visible: false,},
{title: '技术团队名称',field: 'itemName',visible: false}, {title: '技术团队名称',field: 'itemName',visible: false},
{title: '录入时间',field: 'createTime',}, {title: '录入时间',field: 'createTime',visible: false},
{title: '更新人',field: 'updateBy',}, {title: '更新人',field: 'updateBy',visible: false},
{title: '上次更新时间',field: 'updateTime',},
{title: '删除标志', field: 'delFlag',visible: false}, {title: '删除标志', field: 'delFlag',visible: false},
{title: '半成品类型',field: 'processMethod', {title: '入库部门', field: 'warehouseDept',visible: false,
formatter: function(value, row, index) {return $.table.selectDictLabel(processMethodDatas, value);}
},
{title: '入库部门', field: 'warehouseDept',
formatter: function(value, row, index) {return $.table.selectDictLabel(warehouseDeptDatas, value);} formatter: function(value, row, index) {return $.table.selectDictLabel(warehouseDeptDatas, value);}
}, },
{title: '操作',align: 'center', {title: '操作',align: 'center',

157
ruoyi-admin/src/main/resources/templates/sales/afterSalesNotice/taskYwjlVerify.html

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > <html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head> <head>
<th:block th:include="include :: header('修改售后通知单')" /> <th:block th:include="include :: header('售后通知单经理审批')" />
<th:block th:include="include :: datetimepicker-css" /> <th:block th:include="include :: datetimepicker-css" />
</head> </head>
<body class="white-bg"> <body class="white-bg">
@ -22,44 +22,9 @@
<input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text"> <input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">用户ID:</label> <label class="col-sm-3 control-label">客户ID:</label>
<div class="col-sm-8">
<input name="userId" th:field="*{userId}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">审核状态:</label>
<div class="col-sm-8">
<div class="radio-box" th:each="dict : ${@dict.getType('auditStatus')}">
<input type="radio" th:id="${'auditStatus_' + dict.dictCode}" name="auditStatus" th:value="${dict.dictValue}" th:field="*{auditStatus}">
<label th:for="${'auditStatus_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">售后状态:</label>
<div class="col-sm-8">
<div class="radio-box" th:each="dict : ${@dict.getType('sales_aftersales_status')}">
<input type="radio" th:id="${'aftersalesStatus_' + dict.dictCode}" name="aftersalesStatus" th:value="${dict.dictValue}" th:field="*{aftersalesStatus}">
<label th:for="${'aftersalesStatus_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">业务人员:</label>
<div class="col-sm-8">
<input name="businessMembers" th:field="*{businessMembers}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">售后人员:</label>
<div class="col-sm-8">
<input name="aftersalesMembers" th:field="*{aftersalesMembers}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户代码:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="enterpriseCode" th:field="*{enterpriseCode}" class="form-control" type="text"> <input name="enterpriseCode" th:field="*{enterpriseCode}" class="form-control" type="text">
</div> </div>
@ -70,24 +35,6 @@
<input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text"> <input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">物料数合计:</label>
<div class="col-sm-8">
<input name="materialSum" th:field="*{materialSum}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数量合计:</label>
<div class="col-sm-8">
<input name="enterpriseSum" th:field="*{enterpriseSum}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户要求出发日期:</label>
<div class="col-sm-8">
<input name="startTime" th:field="*{startTime}" class="form-control" type="text">
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">联系人:</label> <label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -106,6 +53,12 @@
<input name="companyAddress" th:field="*{companyAddress}" class="form-control" type="text"> <input name="companyAddress" th:field="*{companyAddress}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">客户要求出发日期:</label>
<div class="col-sm-8">
<input name="startTime" th:field="*{startTime}" class="form-control" type="text">
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">备注信息:</label> <label class="col-sm-3 control-label">备注信息:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -122,19 +75,31 @@
</select> </select>
</div> </div>
</div> </div>
</form> </form>
<div class="container">
<div class="row">
<div class="col-sm-12 select-table table-striped">
<h3 class="mb-4">选择设备</h3>
<table id="bootstrap-table"></table>
</div>
</div>
</div>
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" /> <th:block th:include="include :: datetimepicker-js" />
<script th:src="@{/js/activiti.js}"></script> <script th:src="@{/js/activiti.js}"></script>
<script th:inline="javascript"> <script th:inline="javascript">
var prefix = ctx + "sales/afterSalesNotice"; var prefix = ctx + "sales/afterSalesNotice";
var emergencyDegreeDatas = [[${@dict.getType('aftersales_emergency_degree')}]];
$("#form-afterSalesNotice-ywjl").validate({ $("#form-afterSalesNotice-ywjl").validate({
focusCleanup: true focusCleanup: true
}); });
var afterSalesNotice = [[${formData}]]
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
if ($('textarea[name="comment"]').val()) { if ($('textarea[name="comment"]').val()) {
@ -150,6 +115,82 @@
minView: "month", minView: "month",
autoclose: true autoclose: true
}); });
$(function() {
var options = {
url: prefix + "/getAfterSalesNoticeDetailList",
modalName: "出货设备",
showColumns: false,
pagination: false,
showToggle: false,
showRefresh:false,
showSearch:false,
queryParams:queryParams,
columns: [{
checkbox: true
},
{
title: '料号',
field: 'materialNo',
},
{
title: '图片',
field: 'materialPhotourl',
},
{
title: '物料名称',
field: 'materialName',
},
{
title: '物料类型',
field: 'materialType',
},
{
title: '单位',
field: 'materialUnit',
},
{
title: '品牌',
field: 'materialBrand',
},
{
title: '描述',
field: 'materialDescribe',
},
{
title: '已出库数量',
field: 'shippedGoodsSum',
},
{
title: '设备SN',
field: 'snCode',
},
{
title: '售后问题',
field: 'aftersalesProblem',
},
{
title: '紧急程度',
field: 'emergencyDegree',
formatter: function(value, row, index) {
return $.table.selectDictLabel(emergencyDegreeDatas, value);
}
},
]
};
$.table.init(options);
})
function queryParams(params) {
var curParams = {
// 传递参数查询参数
aftersalesNoticeCode: afterSalesNotice.aftersalesNoticeCode
};
return curParams;
}
</script> </script>
</body> </body>
</html> </html>

150
ruoyi-admin/src/main/resources/templates/sales/afterSalesNotice/taskYwzgVerify.html

@ -22,44 +22,9 @@
<input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text"> <input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">用户ID:</label> <label class="col-sm-3 control-label">客户ID:</label>
<div class="col-sm-8">
<input name="userId" th:field="*{userId}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">审核状态:</label>
<div class="col-sm-8">
<div class="radio-box" th:each="dict : ${@dict.getType('auditStatus')}">
<input type="radio" th:id="${'auditStatus_' + dict.dictCode}" name="auditStatus" th:value="${dict.dictValue}" th:field="*{auditStatus}">
<label th:for="${'auditStatus_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">售后状态:</label>
<div class="col-sm-8">
<div class="radio-box" th:each="dict : ${@dict.getType('sales_aftersales_status')}">
<input type="radio" th:id="${'aftersalesStatus_' + dict.dictCode}" name="aftersalesStatus" th:value="${dict.dictValue}" th:field="*{aftersalesStatus}">
<label th:for="${'aftersalesStatus_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">业务人员:</label>
<div class="col-sm-8">
<input name="businessMembers" th:field="*{businessMembers}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">售后人员:</label>
<div class="col-sm-8">
<input name="aftersalesMembers" th:field="*{aftersalesMembers}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户代码:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="enterpriseCode" th:field="*{enterpriseCode}" class="form-control" type="text"> <input name="enterpriseCode" th:field="*{enterpriseCode}" class="form-control" type="text">
</div> </div>
@ -70,24 +35,6 @@
<input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text"> <input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">物料数合计:</label>
<div class="col-sm-8">
<input name="materialSum" th:field="*{materialSum}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数量合计:</label>
<div class="col-sm-8">
<input name="enterpriseSum" th:field="*{enterpriseSum}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户要求出发日期:</label>
<div class="col-sm-8">
<input name="startTime" th:field="*{startTime}" class="form-control" type="text">
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">联系人:</label> <label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -106,6 +53,12 @@
<input name="companyAddress" th:field="*{companyAddress}" class="form-control" type="text"> <input name="companyAddress" th:field="*{companyAddress}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">客户要求出发日期:</label>
<div class="col-sm-8">
<input name="startTime" th:field="*{startTime}" class="form-control" type="text">
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">备注信息:</label> <label class="col-sm-3 control-label">备注信息:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -122,15 +75,26 @@
</select> </select>
</div> </div>
</div> </div>
</form> </form>
<div class="container">
<div class="row">
<div class="col-sm-12 select-table table-striped">
<h3 class="mb-4">选择设备</h3>
<table id="bootstrap-table"></table>
</div>
</div>
</div>
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" /> <th:block th:include="include :: datetimepicker-js" />
<script th:src="@{/js/activiti.js}"></script> <script th:src="@{/js/activiti.js}"></script>
<script th:inline="javascript"> <script th:inline="javascript">
var prefix = ctx + "sales/afterSalesNotice"; var prefix = ctx + "sales/afterSalesNotice";
var emergencyDegreeDatas = [[${@dict.getType('aftersales_emergency_degree')}]];
var afterSalesNotice = [[${formData}]]
$("#form-afterSalesNotice-ywzg").validate({ $("#form-afterSalesNotice-ywzg").validate({
focusCleanup: true focusCleanup: true
}); });
@ -150,6 +114,78 @@
minView: "month", minView: "month",
autoclose: true autoclose: true
}); });
$(function() {
var options = {
url: prefix + "/getAfterSalesNoticeDetailList",
modalName: "出货设备",
showColumns: false,
pagination: false,
showToggle: false,
showRefresh:false,
showSearch:false,
queryParams:queryParams,
columns: [{
checkbox: true
},
{
title: '料号',
field: 'materialNo',
},
{
title: '图片',
field: 'materialPhotourl',
},
{
title: '物料名称',
field: 'materialName',
},
{
title: '物料类型',
field: 'materialType',
},
{
title: '单位',
field: 'materialUnit',
},
{
title: '品牌',
field: 'materialBrand',
},
{
title: '描述',
field: 'materialDescribe',
},
{
title: '已出库数量',
field: 'shippedGoodsSum',
},
{
title: '设备SN',
field: 'snCode',
},
{
title: '售后问题',
field: 'aftersalesProblem',
},
{
title: '紧急程度',
field: 'emergencyDegree',
formatter: function(value, row, index) {
return $.table.selectDictLabel(emergencyDegreeDatas, value);
}
},
]
};
$.table.init(options);
})
function queryParams(params) {
var curParams = {
// 传递参数查询参数
aftersalesNoticeCode: afterSalesNotice.aftersalesNoticeCode
};
return curParams;
}
</script> </script>
</body> </body>
</html> </html>

12
ruoyi-admin/src/main/resources/templates/system/salesOrder/startAftersales.html

@ -35,21 +35,21 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">收货联系人:</label> <label class="col-sm-3 control-label">联系人:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="customerDelivery" th:field="*{customerDelivery}" class="form-control" type="text" disabled> <input name="customerDelivery" th:field="*{customerContact}" class="form-control" type="text" readonly>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">收货电话:</label> <label class="col-sm-3 control-label">联系人电话:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="deliveryPhone" th:field="*{deliveryPhone}" class="form-control" type="text" disabled> <input name="deliveryPhone" th:field="*{contactNumber}" class="form-control" type="text" readonly>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">收货地址:</label> <label class="col-sm-3 control-label">公司地址:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="deliveryAddress" th:field="*{deliveryAddress}" class="form-control" type="text" disabled> <input name="deliveryAddress" th:field="*{deliveryAddress}" class="form-control" type="text" readonly>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">

Loading…
Cancel
Save