From 296dc215273d4ac8cfa106af256df3a3c052654e Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Fri, 26 Apr 2024 10:26:06 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=E5=94=AE=E5=90=8E=E7=AE=A1=E7=90=86:=20?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=8D=95=20=E6=96=B0=E5=A2=9E=E6=B4=BE?= =?UTF-8?q?=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AftersalesOrderController.java | 64 +++++ .../aftersales/domain/vo/SelectDeviceVO.java | 211 +++++++++++++++ .../AfterSalesShippingDeviceMapper.java | 9 + .../AftersalesComplaintNoticeMapper.java | 9 + .../IAfterSalesShippingDeviceService.java | 8 + .../AfterSalesShippingDeviceServiceImpl.java | 37 +++ .../AfterSalesShippingDeviceMapper.xml | 7 +- .../AftersalesComplaintNoticeMapper.xml | 5 + .../aftersalesOrder/aftersalesOrder.html | 19 ++ .../aftersalesOrder/sendOrders.html | 252 ++++++++++++++++++ 10 files changed, 620 insertions(+), 1 deletion(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/SelectDeviceVO.java create mode 100644 ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/sendOrders.html 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 7db083ba..6accaaf6 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 @@ -1,6 +1,11 @@ package com.ruoyi.aftersales.controller; import java.util.List; + +import com.ruoyi.aftersales.domain.vo.SelectDeviceVO; +import com.ruoyi.aftersales.service.IAfterSalesShippingDeviceService; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.service.ISysUserService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -34,6 +39,13 @@ public class AftersalesOrderController extends BaseController @Autowired private IAftersalesOrderService aftersalesOrderService; + @Autowired + private IAfterSalesShippingDeviceService afterSalesShippingDeviceService; + + + @Autowired + private ISysUserService sysUserService; + @RequiresPermissions("aftersales:aftersalesOrder:view") @GetMapping() public String aftersalesOrder() @@ -54,6 +66,8 @@ public class AftersalesOrderController extends BaseController return getDataTable(list); } + + /** * 导出售后单列表 */ @@ -112,6 +126,56 @@ public class AftersalesOrderController extends BaseController return toAjax(aftersalesOrderService.updateAftersalesOrder(aftersalesOrder)); } + + /** + * 派单 + */ + @GetMapping("/sendOrders/{aftersalesOrderId}") + public String sendOrders(@PathVariable("aftersalesOrderId") Long aftersalesOrderId, ModelMap mmap) + { + AftersalesOrder aftersalesOrder = aftersalesOrderService.selectAftersalesOrderById(aftersalesOrderId); + mmap.put("sendOrders", aftersalesOrder); + return prefix + "/sendOrders"; + } + + /** + * 保存派单 + */ + @RequiresPermissions("aftersales:aftersalesOrder:sendOrders") + @Log(title = "售后单", businessType = BusinessType.UPDATE) + @PostMapping("/sendOrders") + @ResponseBody + public AjaxResult sendOrdersSave(AftersalesOrder aftersalesOrder) + { + return toAjax(aftersalesOrderService.updateAftersalesOrder(aftersalesOrder)); + } + + /** + * 查询选择设备列表 + */ + @RequiresPermissions("aftersales:aftersalesOrder:list") + @PostMapping("/optionDevices") + @ResponseBody + public TableDataInfo optionDevices(AftersalesOrder aftersalesOrder) + { + + startPage(); + List list = afterSalesShippingDeviceService.selectOptionDevices(aftersalesOrder.getMakeNo()); + return getDataTable(list); + } + + + /** + * 查找所有的工程员 + * */ + @ResponseBody + @PostMapping("/getAftersalesStaffList") + public AjaxResult getAftersalesStaffList(String roleKey){ + List aftersalesStaffList = sysUserService.getSpecificRoleList(roleKey); + return AjaxResult.success(aftersalesStaffList); + } + + /** * 删除售后单 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/SelectDeviceVO.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/SelectDeviceVO.java new file mode 100644 index 00000000..6165b3a3 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/SelectDeviceVO.java @@ -0,0 +1,211 @@ +package com.ruoyi.aftersales.domain.vo; + +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + +/** + * 选择设备Vo类 + * */ +public class SelectDeviceVO extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 售后数量 */ + private String deliveryGoodsNum; + + /** 紧急程度 */ + private String emergencyDegree; + + /** 售后问题 */ + + private String complaintProblem; + + /** 是否结案 */ + private String closingProcedures; + + /** 售后报告 */ + private String adverseReportUrl; + + /** SN号(产品序列号) */ + private String snCode; + + /** 料号 */ + @Excel(name = "料号") + private String materialNo; + + /** 物料名称 */ + @Excel(name = "物料名称") + private String materialName; + + /** 物料类型 */ + @Excel(name = "物料类型") + private String materialType; + + /** 物料图片地址 */ + @Excel(name = "物料图片地址") + private String materialPhotourl; + + /** 物料品牌 */ + @Excel(name = "物料品牌") + private String materialBrand; + + /** 物料单位 */ + @Excel(name = "物料单位") + private String materialUnit; + + /** 物料描述 */ + @Excel(name = "物料描述") + private String materialDescribe; + + + + + + + public void setDeliveryGoodsNum(String deliveryGoodsNum) + { + this.deliveryGoodsNum = deliveryGoodsNum; + } + + public String getDeliveryGoodsNum() + { + return deliveryGoodsNum; + } + public void setEmergencyDegree(String emergencyDegree) + { + this.emergencyDegree = emergencyDegree; + } + + public String getEmergencyDegree() + { + return emergencyDegree; + } + public void setComplaintProblem(String complaintProblem) + { + this.complaintProblem = complaintProblem; + } + + public String getComplaintProblem() + { + return complaintProblem; + } + public void setClosingProcedures(String closingProcedures) + { + this.closingProcedures = closingProcedures; + } + + public String getClosingProcedures() + { + return closingProcedures; + } + public void setAdverseReportUrl(String adverseReportUrl) + { + this.adverseReportUrl = adverseReportUrl; + } + + public String getAdverseReportUrl() + { + return adverseReportUrl; + } + + public void setSnCode(String snCode) + { + this.snCode = snCode; + } + + public String getSnCode() + { + return snCode; + } + + public void setMaterialNo(String materialNo) + { + this.materialNo = materialNo; + } + + public String getMaterialNo() + { + return materialNo; + } + public void setMaterialName(String materialName) + { + this.materialName = materialName; + } + + public String getMaterialName() + { + return materialName; + } + public void setMaterialType(String materialType) + { + this.materialType = materialType; + } + + public String getMaterialType() + { + return materialType; + } + public void setMaterialPhotourl(String materialPhotourl) + { + this.materialPhotourl = materialPhotourl; + } + + public String getMaterialPhotourl() + { + return materialPhotourl; + } + public void setMaterialBrand(String materialBrand) + { + this.materialBrand = materialBrand; + } + + public String getMaterialBrand() + { + return materialBrand; + } + public void setMaterialUnit(String materialUnit) + { + this.materialUnit = materialUnit; + } + + public String getMaterialUnit() + { + return materialUnit; + } + public void setMaterialDescribe(String materialDescribe) + { + this.materialDescribe = materialDescribe; + } + + public String getMaterialDescribe() + { + return materialDescribe; + } + + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("deliveryGoodsNum", getDeliveryGoodsNum()) + .append("emergencyDegree", getEmergencyDegree()) + .append("complaintProblem", getComplaintProblem()) + .append("closingProcedures", getClosingProcedures()) + .append("adverseReportUrl", getAdverseReportUrl()) + .append("snCode", getSnCode()) + .append("materialNo", getMaterialNo()) + .append("materialName", getMaterialName()) + .append("materialType", getMaterialType()) + .append("materialPhotourl", getMaterialPhotourl()) + .append("materialBrand", getMaterialBrand()) + .append("materialUnit", getMaterialUnit()) + .append("materialDescribe", getMaterialDescribe()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java index b2d710d2..e61d9f19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java @@ -19,6 +19,15 @@ public interface AfterSalesShippingDeviceMapper */ public AfterSalesShippingDevice selectAfterSalesShippingDeviceById(Long shippingDeviceCode); + + /** + * 查询选择设备 + * + * @param makeNo 关联生产订单号 + * @return 选择设备信息 + */ + public AfterSalesShippingDevice selectShippingDeviceByMakeNo(String makeNo); + /** * 查询出货设备列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeMapper.java index 21519605..1d82a64f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeMapper.java @@ -19,6 +19,15 @@ public interface AftersalesComplaintNoticeMapper */ public AftersalesComplaintNotice selectAftersalesComplaintNoticeById(Long complaintNoticeId); + /** + * 查询售后单中选择设备有关的售后客诉通知单 + * + * @param makeNo 关联生产订单号 + * @return 售后客诉通知单 + */ + public AftersalesComplaintNotice selectComplaintNoticeByMakeNo(String makeNo); + + /** * 查询售后客诉通知单列表 * 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 12dd1e68..f9e0cfe6 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 @@ -2,6 +2,7 @@ package com.ruoyi.aftersales.service; import java.util.List; import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; +import com.ruoyi.aftersales.domain.vo.SelectDeviceVO; /** * 出货设备Service接口 @@ -72,4 +73,11 @@ public interface IAfterSalesShippingDeviceService * @return */ int restoreAfterSalesShippingDeviceById(Long shippingDeviceCode); + + /** + * 查询选择设备列表 + * @param makeNo 生产单号 + * @return + */ + List selectOptionDevices(String makeNo); } 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 b51cbc13..5d496b66 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 @@ -1,8 +1,14 @@ package com.ruoyi.aftersales.service.impl; +import java.util.ArrayList; import java.util.List; + +import com.ruoyi.aftersales.domain.AftersalesComplaintNotice; +import com.ruoyi.aftersales.domain.vo.SelectDeviceVO; +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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper; @@ -22,6 +28,9 @@ public class AfterSalesShippingDeviceServiceImpl implements IAfterSalesShippingD @Autowired private AfterSalesShippingDeviceMapper afterSalesShippingDeviceMapper; + @Autowired + private AftersalesComplaintNoticeMapper aftersalesComplaintNoticeMapper; + /** * 查询出货设备 * @@ -123,4 +132,32 @@ public class AfterSalesShippingDeviceServiceImpl implements IAfterSalesShippingD { return afterSalesShippingDeviceMapper.restoreAfterSalesShippingDeviceById(shippingDeviceCode); } + + /** + * 查询选择设备列表 + * */ + @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; + } } diff --git a/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml b/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml index b230b1ba..7c2a1058 100644 --- a/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml @@ -74,7 +74,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where shipping_device_code = #{shippingDeviceCode} - + + + insert into aftersales_shipping_device diff --git a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesComplaintNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesComplaintNoticeMapper.xml index 67b39b51..3183811c 100644 --- a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesComplaintNoticeMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesComplaintNoticeMapper.xml @@ -46,6 +46,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where complaint_notice_id = #{complaintNoticeId} + + insert into aftersales_complaint_notice diff --git a/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/aftersalesOrder.html b/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/aftersalesOrder.html index a24a4bb9..dc99496a 100644 --- a/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/aftersalesOrder.html +++ b/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/aftersalesOrder.html @@ -73,6 +73,7 @@ var removeFlag = [[${@permission.hasPermi('aftersales:aftersalesOrder:remove')}]]; var cancelFlag = [[${@permission.hasPermi('aftersales:aftersalesOrder:cancel')}]]; var restoreFlag = [[${@permission.hasPermi('aftersales:aftersalesOrder:restore')}]]; + var sendOrdersFlag = [[${@permission.hasPermi('aftersales:aftersalesOrder:sendOrders')}]]; var aftersalesStatusDatas = [[${@dict.getType('sales_aftersales_status')}]]; var prefix = ctx + "aftersales/aftersalesOrder"; @@ -85,6 +86,7 @@ cancelUrl: prefix + "/cancel/{id}", restoreUrl: prefix + "/restore/{id}", exportUrl: prefix + "/export", + sendOrdersUrl: prefix + "/sendOrders/{id}", modalName: "售后单", columns: [{ checkbox: true @@ -169,6 +171,7 @@ var actions = []; actions.push('编辑 '); actions.push('删除 '); + actions.push('派单 '); if(row.delFlag == '0'){ actions.push('作废 '); }else{ @@ -180,6 +183,22 @@ }; $.table.init(options); }); + + /*派单*/ + function sendOrders(aftersalesOrderId) { + // 在这里编写派单操作的逻辑,使用传入的aftersalesOrderId参数 + + // 示例逻辑: + // 1. 确认用户操作 + if (confirm('确认要派单吗?')) { + var url = ctx + 'aftersales/aftersalesOrder/sendOrders/'+aftersalesOrderId; + + console.log(url); + $.modal.open("派单",url); + } + } + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/sendOrders.html b/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/sendOrders.html new file mode 100644 index 00000000..464169c3 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/sendOrders.html @@ -0,0 +1,252 @@ + + + + + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+ +
+
+

选择设备

+
+
+
+
+

派单

+ +
+ +
+
+ +
+ +
+ + + + + + \ No newline at end of file