diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOrderController.java index 1ee033c5..d9ad4192 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOrderController.java +++ b/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.common.core.domain.entity.SysUser; import com.ruoyi.process.general.service.IProcessService; +import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail; import com.ruoyi.system.service.ISysUserService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; @@ -195,20 +196,19 @@ public class AftersalesOrderController extends BaseController @ResponseBody public AjaxResult uploadReportSave(AftersalesOrder aftersalesOrder) { - return toAjax(aftersalesOrderService.updateAftersalesOrder(aftersalesOrder)); + return toAjax(aftersalesOrderService.updateUploadReport(aftersalesOrder)); } /** - * 查询选择设备列表 + * 查询售后通知单详情选择设备列表 */ @PostMapping("/optionDevices") @ResponseBody public TableDataInfo optionDevices(AftersalesOrder aftersalesOrder) { - startPage(); - List list = afterSalesShippingDeviceService.selectOptionDevices(aftersalesOrder.getMakeNo()); + List list = afterSalesShippingDeviceService.selectOptionDevices(aftersalesOrder.getAftersalesOrderCode()); return getDataTable(list); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAfterSalesShippingDeviceService.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAfterSalesShippingDeviceService.java index 131d382d..a8ebd7b3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAfterSalesShippingDeviceService.java +++ b/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.WarehouseAndAfterSalesDto; 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; /** @@ -93,7 +95,7 @@ public interface IAfterSalesShippingDeviceService * @param makeNo 生产单号 * @return */ - List selectOptionDevices(String makeNo); + List selectOptionDevices(String aftersalesOrderCode); /* diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOrderService.java index 1951b077..ad85d808 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOrderService.java @@ -33,7 +33,7 @@ public interface IAftersalesOrderService /** * 查询售后单列表 * - * @param aftersalesOrderVO 售后单 + * @param aftersalesOrder 售后单 * @return 售后单集合 */ public List selectAftersalesOrderList(AftersalesOrder aftersalesOrder); @@ -88,4 +88,9 @@ public interface IAftersalesOrderService * 销售售后通知单 审核后生成售后单 * */ void generateAftersalesOrderBySalesAftersalesNotice(SalesAftersalesNoticeVO tempSalesAftersalesNoticeVO); + + /** + * 修改保存售后报告 + */ + int updateUploadReport(AftersalesOrder aftersalesOrder); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AfterSalesShippingDeviceServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AfterSalesShippingDeviceServiceImpl.java index 440c3d55..6ee1932f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AfterSalesShippingDeviceServiceImpl.java +++ b/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.ShiroUtils; 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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -38,6 +41,9 @@ public class AfterSalesShippingDeviceServiceImpl implements IAfterSalesShippingD @Autowired private AftersalesComplaintNoticeMapper aftersalesComplaintNoticeMapper; + @Autowired + private SalesAftersalesNoticeDetailMapper aftersalesNoticeDetailMapper; + /** * 查询出货设备 * @@ -197,28 +203,9 @@ public class AfterSalesShippingDeviceServiceImpl implements IAfterSalesShippingD * 查询选择设备列表 * */ @Override - public List selectOptionDevices(String makeNo) { - List selectDeviceVos = new ArrayList<>(); - SelectDeviceVO selectDeviceVo = new SelectDeviceVO(); - 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; + public List selectOptionDevices(String aftersalesOrderCode) { + List salesAftersalesNoticeDetails = aftersalesNoticeDetailMapper.selectSalesAftersalesNoticeDetailListByCode(aftersalesOrderCode); + return salesAftersalesNoticeDetails; } /* diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOrderServiceImpl.java index e6f19eec..02dcbc35 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOrderServiceImpl.java +++ b/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 com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.process.general.service.IProcessService; 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.mapper.SalesAftersalesNoticeMapper; import com.ruoyi.system.domain.SysAttach; import com.ruoyi.system.domain.SysMakeOrder; import com.ruoyi.system.mapper.SysAttachMapper; @@ -49,6 +53,9 @@ public class AftersalesOrderServiceImpl implements IAftersalesOrderService @Autowired private SysMakeOrderMapper sysMakeOrderMapper; + @Autowired + private SalesAftersalesNoticeMapper salesAftersalesNoticeMapper; + /** * 查询售后单 * @@ -111,7 +118,7 @@ public class AftersalesOrderServiceImpl implements IAftersalesOrderService * @param aftersalesOrder 售后单 * @return 结果 */ - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public int updateAftersalesOrder(AftersalesOrder aftersalesOrder) { @@ -150,6 +157,17 @@ public class AftersalesOrderServiceImpl implements IAftersalesOrderService List fileIdList = Arrays.asList(fileIdStr.split(",")); 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); } @@ -235,4 +253,64 @@ public class AftersalesOrderServiceImpl implements IAftersalesOrderService 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 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 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); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/controller/SalesAftersalesNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/controller/SalesAftersalesNoticeController.java index c7ca877a..fc79db24 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/controller/SalesAftersalesNoticeController.java +++ b/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.process.general.service.IProcessService; import com.ruoyi.quality.domain.VO.CheckoutMaterialVO; +import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail; import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO; +import com.ruoyi.sales.service.ISalesAftersalesNoticeDetailService; import com.ruoyi.system.domain.SysSalesOrder; import com.ruoyi.system.domain.Vo.SelectAftersalesNoticeVO; 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.HttpSession; +import javax.xml.bind.annotation.W3CDomHandler; /** * 售后通知单Controller @@ -62,6 +65,8 @@ public class SalesAftersalesNoticeController extends BaseController @Autowired private ISysSalesOrderService sysSalesOrderService; + @Autowired + private ISalesAftersalesNoticeDetailService noticeDetailService; @RequiresPermissions("sales:afterSalesNotice:view") @GetMapping() @@ -115,9 +120,9 @@ public class SalesAftersalesNoticeController extends BaseController @ResponseBody public AjaxResult addSave(SalesAftersalesNotice salesAftersalesNotice) { - // 审核状态-待审核 - salesAftersalesNotice.setAuditStatus("0"); - salesAftersalesNoticeService.submitApply(salesAftersalesNotice); +// // 审核状态-待审核 +// salesAftersalesNotice.setAuditStatus("0"); +// salesAftersalesNoticeService.submitApply(salesAftersalesNotice); return AjaxResult.success(); } @@ -131,7 +136,7 @@ public class SalesAftersalesNoticeController extends BaseController @ResponseBody public AjaxResult startAftersalesSave(@RequestBody SysSalesOrder sysSalesOrder) { - + salesAftersalesNoticeService.submitApply(sysSalesOrder); return AjaxResult.success(); } @@ -239,6 +244,18 @@ public class SalesAftersalesNoticeController extends BaseController + /** + * 根据售后通知单号查询售后通知单详情数据 + * */ + @ResponseBody + @PostMapping("/getAfterSalesNoticeDetailList") + public TableDataInfo getAfterSalesNoticeDetailList(SalesAftersalesNoticeDetail salesAftersalesNoticeDetail){ + startPage(); + List list = noticeDetailService.selectAfterSalesNoticeDetailList(salesAftersalesNoticeDetail); + return getDataTable(list); + } + + /** * 修改售后通知单 */ @@ -298,4 +315,8 @@ public class SalesAftersalesNoticeController extends BaseController } + + + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesAftersalesNotice.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesAftersalesNotice.java index 0ea051ae..34dffa61 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesAftersalesNotice.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesAftersalesNotice.java @@ -28,6 +28,11 @@ public class SalesAftersalesNotice extends BaseEntity @Excel(name = "关联销售订单编号") private String salesOrderCode; + + /** 关联生产订单号 */ + @Excel(name = "关联生产订单号") + private String makeNo; + /** 用户ID */ @Excel(name = "用户ID") private Long userId; @@ -65,6 +70,7 @@ public class SalesAftersalesNotice extends BaseEntity private String enterpriseSum; /** 客户要求出发日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "客户要求出发日期") private Date startTime; @@ -140,7 +146,16 @@ public class SalesAftersalesNotice extends BaseEntity { return salesOrderCode; } - public void setUserId(Long userId) + + public String getMakeNo() { + return makeNo; + } + + public void setMakeNo(String makeNo) { + this.makeNo = makeNo; + } + + public void setUserId(Long userId) { this.userId = userId; } @@ -336,6 +351,7 @@ public class SalesAftersalesNotice extends BaseEntity .append("aftersalesNoticeId", getAftersalesNoticeId()) .append("aftersalesNoticeCode", getAftersalesNoticeCode()) .append("salesOrderCode", getSalesOrderCode()) + .append("makeNo", getMakeNo()) .append("userId", getUserId()) .append("auditStatus", getAuditStatus()) .append("aftersalesStatus", getAftersalesStatus()) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeDetailMapper.java index 70666ae7..6499d98f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeDetailMapper.java @@ -74,4 +74,9 @@ public interface SalesAftersalesNoticeDetailMapper * @return 结果 */ public int restoreSalesAftersalesNoticeDetailById(Long aftersalesNoticeDetailId); + + /** + * 根据售后通知单号查询售后通知单详情数据 + * */ + List selectSalesAftersalesNoticeDetailListByCode(String aftersalesNoticeCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeMapper.java index feaf93a2..231e2a26 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesAftersalesNoticeMapper.java @@ -80,4 +80,10 @@ public interface SalesAftersalesNoticeMapper * 根据售后单号查询销售售后通知单 * */ SalesAftersalesNoticeVO selectSalesAftersalesNoticeByCode(String aftersalesNoticeCode); + + /** + * 根据售后单号更新销售售后通知单数据 + * */ + int updateSalesAftersalesNoticeByCode(SalesAftersalesNotice salesAftersalesNotice); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeDetailService.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeDetailService.java index 1461517f..91fa10c3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeDetailService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeDetailService.java @@ -72,4 +72,9 @@ public interface ISalesAftersalesNoticeDetailService * @return */ int restoreSalesAftersalesNoticeDetailById(Long aftersalesNoticeDetailId); + + /** + * 根据售后通知单号查询售后通知单详情数据 + * */ + List selectAfterSalesNoticeDetailList(SalesAftersalesNoticeDetail salesAftersalesNoticeDetail); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeService.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeService.java index 3c0e5ceb..80b4f272 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesAftersalesNoticeService.java +++ b/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.sales.domain.SalesAftersalesNotice; import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO; +import com.ruoyi.system.domain.SysSalesOrder; import com.ruoyi.system.domain.Vo.SelectAftersalesNoticeVO; import org.activiti.engine.runtime.ProcessInstance; @@ -83,7 +84,7 @@ public interface ISalesAftersalesNoticeService /** * 审批流程启动 * */ - ProcessInstance submitApply(SalesAftersalesNotice salesAftersalesNotice); + ProcessInstance submitApply(SysSalesOrder sysSalesOrder); /** * 根据售后单号查询销售售后通知单 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeDetailServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeDetailServiceImpl.java index 99d987bd..6a270785 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeDetailServiceImpl.java +++ b/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 com.ruoyi.common.utils.DateUtils; 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.stereotype.Service; import com.ruoyi.sales.mapper.SalesAftersalesNoticeDetailMapper; @@ -16,6 +18,7 @@ import com.ruoyi.common.core.text.Convert; * @author 刘晓旭 * @date 2024-07-22 */ +@Slf4j @Service public class SalesAftersalesNoticeDetailServiceImpl implements ISalesAftersalesNoticeDetailService { @@ -123,4 +126,17 @@ public class SalesAftersalesNoticeDetailServiceImpl implements ISalesAftersalesN { return salesAftersalesNoticeDetailMapper.restoreSalesAftersalesNoticeDetailById(aftersalesNoticeDetailId); } + + /** + * 根据售后通知单号查询售后通知单详情数据 + * */ + @Override + public List selectAfterSalesNoticeDetailList(SalesAftersalesNoticeDetail salesAftersalesNoticeDetail) { + + String aftersalesNoticeCode = salesAftersalesNoticeDetail.getAftersalesNoticeCode(); + if (StringUtils.isEmpty(aftersalesNoticeCode)){ + log.warn("与售后通知单详情关联的售后通知单号为空:{}",aftersalesNoticeCode); + } + return salesAftersalesNoticeDetailMapper.selectSalesAftersalesNoticeDetailListByCode(aftersalesNoticeCode); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeServiceImpl.java index 2b7322f6..1f0b5bb2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesAftersalesNoticeServiceImpl.java +++ b/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.process.general.service.IProcessService; import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; +import com.ruoyi.sales.domain.SalesAftersalesNoticeDetail; 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.Vo.SelectAftersalesNoticeVO; +import com.ruoyi.system.mapper.SysMakeOrderMapper; import com.ruoyi.system.mapper.SysSalesOrderChildMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.service.ISysRoleService; @@ -67,6 +72,12 @@ public class SalesAftersalesNoticeServiceImpl implements ISalesAftersalesNoticeS @Autowired private SysSalesOrderChildMapper sysSalesOrderChildMapper; + @Autowired + private SalesAftersalesNoticeDetailMapper aftersalesNoticeDetailMapper; + + @Autowired + private SysMakeOrderMapper sysMakeOrderMapper; + /** * 查询售后通知单 * @@ -222,15 +233,38 @@ public class SalesAftersalesNoticeServiceImpl implements ISalesAftersalesNoticeS @Transactional(rollbackFor = Exception.class) @Override - public ProcessInstance submitApply(SalesAftersalesNotice salesAftersalesNotice) { - - + public ProcessInstance submitApply(SysSalesOrder sysSalesOrder) { 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.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); + + List selectAftersalesNoticeVOList = sysSalesOrder.getSelectAftersalesNoticeVOList(); + + //插入售后通知单子表数据 + insertAftersalesNoticeDetailByList(loginName, aftersalesNoticeCode, selectAftersalesNoticeVOList); + + // 启动流程 String applyTitle = user.getUserName()+"发起了售后单提交审批-"+DateUtils.dateTimeNow(); String instanceType = "submit"; @@ -248,6 +282,27 @@ public class SalesAftersalesNoticeServiceImpl implements ISalesAftersalesNoticeS return processInstance; } + private void insertAftersalesNoticeDetailByList(String loginName, String aftersalesNoticeCode, List 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); + } + } + /** * 根据售后单号查询销售售后通知单 * */ diff --git a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOrderMapper.xml index 90d9e7c5..2a09d841 100644 --- a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOrderMapper.xml @@ -56,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and aftersales_name like concat('%', #{aftersalesName}, '%') and create_time between #{params.beginCreateTime} and #{params.endCreateTime} + order by create_time desc - + + + + + insert into sales_aftersales_notice_detail diff --git a/ruoyi-admin/src/main/resources/mapper/sales/SalesAftersalesNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/sales/SalesAftersalesNoticeMapper.xml index 277d0b3a..464c38e8 100644 --- a/ruoyi-admin/src/main/resources/mapper/sales/SalesAftersalesNoticeMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/sales/SalesAftersalesNoticeMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -38,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - 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
- +
- +
- +
- +
@@ -54,10 +54,10 @@
- +
- +
@@ -128,6 +128,7 @@ \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/sales/afterSalesNotice/taskYwzgVerify.html b/ruoyi-admin/src/main/resources/templates/sales/afterSalesNotice/taskYwzgVerify.html index f74613a7..b668636d 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/afterSalesNotice/taskYwzgVerify.html +++ b/ruoyi-admin/src/main/resources/templates/sales/afterSalesNotice/taskYwzgVerify.html @@ -22,44 +22,9 @@
+
- -
- -
-
-
- -
-
- - -
-
-
-
- -
-
- - -
-
-
-
- -
- -
-
-
- -
- -
-
-
- +
@@ -70,24 +35,6 @@
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
@@ -106,6 +53,12 @@
+
+ +
+ +
+
@@ -122,15 +75,26 @@
- - +
+
+
+

选择设备

+
+
+
+
\ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/salesOrder/startAftersales.html b/ruoyi-admin/src/main/resources/templates/system/salesOrder/startAftersales.html index bf3b8505..6ea344d4 100644 --- a/ruoyi-admin/src/main/resources/templates/system/salesOrder/startAftersales.html +++ b/ruoyi-admin/src/main/resources/templates/system/salesOrder/startAftersales.html @@ -35,21 +35,21 @@
- +
- +
- +
- +
- +
- +