Эх сурвалжийг харах

代理商系统创建工单、关闭工单

marxjaw 3 сар өмнө
parent
commit
42979f3497

+ 50 - 0
yt-agent/agent-service/src/main/java/com/ytpm/controller/WorkorderController.java

@@ -0,0 +1,50 @@
+package com.ytpm.controller;
+
+import com.ytpm.agent.param.WorkorderParam;
+import com.ytpm.agent.view.AgentUserInfo;
+import com.ytpm.general.Result;
+import com.ytpm.service.WorkorderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+
+/**
+ * @author Administrator
+ * @date 2025/7/31 17:20
+ */
+@Api(tags = "工单管理")
+@RestController
+@RequestMapping("/workorder")
+public class WorkorderController {
+
+    @Resource
+    private WorkorderService workorderService;
+
+    /**
+     * 创建工单
+     */
+    @ApiOperation("创建工单")
+    @PostMapping("/create")
+    public Result<String> createWorkorder(@RequestBody WorkorderParam param,@ApiIgnore @AuthenticationPrincipal AgentUserInfo user) {
+        param.setCreateUserId(user.getUserId());
+        return workorderService.createWorkorder(param);
+    }
+
+    /**
+     * 关闭工单
+     */
+    @ApiOperation("关闭工单")
+    @GetMapping("/close")
+    public Result<String> closeWorkorder(@RequestParam(name = "workorderId")String workorderId, @ApiIgnore @AuthenticationPrincipal AgentUserInfo user) {
+        return workorderService.closeWorkorder(workorderId,user.getUserId());
+    }
+}

+ 15 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AgentAttachMapper.java

@@ -0,0 +1,15 @@
+package com.ytpm.dao;
+
+import com.ytpm.agent.model.YtPlatformAttach;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface AgentAttachMapper {
+    /**
+     * 批量插入附件
+     */
+    void batchInsert(@Param("dataList") List<YtPlatformAttach> dataList);
+}

+ 24 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/WorkorderMapper.java

@@ -0,0 +1,24 @@
+package com.ytpm.dao;
+
+import com.ytpm.agent.model.YtWorkorder;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface WorkorderMapper {
+
+    /**
+     * 创建工单
+     */
+    void insert(YtWorkorder ytWorkorder);
+
+    /**
+     * 主键查询
+     */
+    YtWorkorder selectPrimary(@Param("workorderId") String workorderId);
+
+    /**
+     * 工单修改
+     */
+    void updateById(YtWorkorder workorder);
+}

+ 16 - 0
yt-agent/agent-service/src/main/java/com/ytpm/service/WorkorderService.java

@@ -0,0 +1,16 @@
+package com.ytpm.service;
+
+import com.ytpm.agent.param.WorkorderParam;
+import com.ytpm.general.Result;
+
+public interface WorkorderService {
+    /**
+     * 创建工单
+     */
+    Result<String> createWorkorder(WorkorderParam param);
+
+    /**
+     * 关闭工单
+     */
+    Result<String> closeWorkorder(String workorderId, String userId);
+}

+ 83 - 0
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/WorkorderServiceImpl.java

@@ -0,0 +1,83 @@
+package com.ytpm.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.IdUtil;
+import com.ytpm.agent.model.YtPlatformAttach;
+import com.ytpm.agent.model.YtWorkorder;
+import com.ytpm.agent.param.AttachParam;
+import com.ytpm.agent.param.WorkorderParam;
+import com.ytpm.dao.AgentAttachMapper;
+import com.ytpm.dao.WorkorderMapper;
+import com.ytpm.general.RepMessage;
+import com.ytpm.general.Result;
+import com.ytpm.service.WorkorderService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author Marx
+ * @date 2025/7/31 17:22
+ */
+@Service
+public class WorkorderServiceImpl implements WorkorderService {
+
+    @Resource
+    private WorkorderMapper workorderMapper;
+    @Resource
+    private AgentAttachMapper attachMapper;
+
+    /**
+     * 创建工单
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result<String> createWorkorder(WorkorderParam param) {
+        YtWorkorder ytWorkorder = new YtWorkorder();
+        BeanUtils.copyProperties(param, ytWorkorder);
+        ytWorkorder.setWorkorderId(IdUtil.fastSimpleUUID());
+        workorderMapper.insert(ytWorkorder);
+        if(CollUtil.isNotEmpty(param.getAttachList())){
+            List<AttachParam> attachList = param.getAttachList();
+            List<YtPlatformAttach> dataList = new ArrayList<>();
+            YtPlatformAttach attach;
+            for (AttachParam attachParam : attachList) {
+                attach = new YtPlatformAttach();
+                BeanUtils.copyProperties(attachParam, attach);
+                attach.setTargetType(1);
+                attach.setTargetId(ytWorkorder.getWorkorderId());
+                attach.setUploadTime(new Date());
+                attach.setAttachId(IdUtil.getSnowflakeNextIdStr());
+                attach.setUploadUserId(param.getCreateUserId());
+                dataList.add(attach);
+            }
+            attachMapper.batchInsert(dataList);
+        }
+        return Result.resultOk(RepMessage.SAVE_SUCCESS);
+    }
+
+    /**
+     * 关闭工单
+     */
+    @Override
+    public Result<String> closeWorkorder(String workorderId, String userId) {
+        YtWorkorder old = workorderMapper.selectPrimary(workorderId);
+        if(Objects.isNull(old)){
+            return Result.resultErr(RepMessage.OBJECT_NOT_EXIST);
+        }
+        YtWorkorder workorder = new YtWorkorder();
+        workorder.setWorkorderId(workorderId);
+        workorder.setWorkorderStatus(1);
+        workorder.setProcessor(userId);
+        workorder.setFinishTime(new Date());
+        workorder.setRemark("代理商主动关闭");
+        workorderMapper.updateById(workorder);
+        return Result.resultOk(RepMessage.MODIFY_SUCCESS);
+    }
+}

+ 32 - 0
yt-agent/agent-service/src/main/resources/mapper/AgentAttachMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ytpm.dao.AgentAttachMapper">
+
+    <insert id="batchInsert">
+        insert into yt_platform_attach
+        (
+         attach_id,
+         attach_name,
+         url,
+         size,
+         target_type,
+         target_id,
+         upload_time,
+         upload_user_id
+        )
+        values
+        <foreach collection="dataList" separator="," item="item">
+            (
+            #{item.attachId},
+            #{item.attachName},
+            #{item.url},
+            #{item.size},
+            #{item.targetType},
+            #{item.targetId},
+            #{item.uploadTime},
+            #{item.uploadUserId}
+            )
+        </foreach>
+
+    </insert>
+</mapper>

+ 71 - 0
yt-agent/agent-service/src/main/resources/mapper/WorkorderMapper.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ytpm.dao.WorkorderMapper">
+
+    <insert id="insert">
+        insert into yt_work_order
+        (
+         workorder_id,
+         title,
+         content,
+         processor,
+         remark,
+         finish_time,
+         create_user_id,
+         create_time,
+         update_user_id,
+         update_time,
+         available
+        )
+        values
+        (
+          #{workorderId},
+          #{title},
+          #{content},
+          #{processor},
+          #{remark},
+          #{finishTime},
+          #{createUserId},
+          #{createTime},
+          #{updateUserId},
+          #{updateTime},
+          #{available}
+        )
+    </insert>
+    <update id="updateById">
+        update yt_work_order
+        <set>
+            <if test="title !=null">
+                title = #{title},
+            </if>
+            <if test="content !=null">
+                content = #{content},
+            </if>
+            <if test="processor !=null">
+                processor = #{processor},
+            </if>
+            <if test="remark !=null">
+                remark = #{remark},
+            </if>
+            <if test="finishTime !=null">
+                finish_time = #{finishTime},
+            </if>
+            <if test="updateUserId !=null">
+                update_user_id = #{updateUserId},
+            </if>
+            <if test="updateTime !=null">
+                update_time = #{updateTime},
+            </if>
+            <if test="available !=null">
+                available = #{available}
+            </if>
+        </set>
+        where workorder_id = #{workorderId}
+    </update>
+    <select id="selectPrimary" resultType="com.ytpm.agent.model.YtWorkorder">
+        select
+            workorder_id, title, content, workorder_status, remark, processor, finish_time, create_user_id, create_time, update_user_id, update_time, available
+        from yt_work_order
+        where workorder_id = #{workorderId}
+    </select>
+</mapper>

+ 38 - 0
yt-common/src/main/java/com/ytpm/agent/model/YtPlatformAttach.java

@@ -0,0 +1,38 @@
+package com.ytpm.agent.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @author Marx
+ * @date 2025/7/31 17:14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("平台附件信息")
+public class YtPlatformAttach {
+    @ApiModelProperty("附件ID")
+    private String attachId;
+    @ApiModelProperty("附件名称")
+    private String attachName;
+    @ApiModelProperty("附加链接")
+    private String url;
+    @ApiModelProperty("附件大小(kb)")
+    private int size;
+    @ApiModelProperty("文件类型")
+    private int targetType;
+    @ApiModelProperty("文件所属业务ID")
+    private String targetId;
+    @ApiModelProperty("上传时间")
+    private Date uploadTime;
+    @ApiModelProperty("上传人")
+    private String uploadUserId;
+}

+ 37 - 0
yt-common/src/main/java/com/ytpm/agent/model/YtWorkorder.java

@@ -0,0 +1,37 @@
+package com.ytpm.agent.model;
+
+import com.ytpm.general.BaseParam;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @author marx
+ * @date 2025/7/31 17:04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("系统工单信息")
+public class YtWorkorder extends BaseParam {
+    @ApiModelProperty("工单ID")
+    private String workorderId;
+    @ApiModelProperty("工单标题")
+    private String title;
+    @ApiModelProperty("工单内容")
+    private String content;
+    @ApiModelProperty("工单状态")
+    private int workorderStatus;
+    @ApiModelProperty("处理人")
+    private String processor;
+    @ApiModelProperty("备注")
+    private String remark;
+    @ApiModelProperty("完成时间")
+    private Date finishTime;
+}

+ 38 - 0
yt-common/src/main/java/com/ytpm/agent/param/AttachParam.java

@@ -0,0 +1,38 @@
+package com.ytpm.agent.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @author Marx
+ * @date 2025/7/31 17:18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("平台附件信息表单")
+public class AttachParam {
+    @ApiModelProperty("附件ID")
+    private String attachId;
+    @ApiModelProperty("附件名称")
+    private String attachName;
+    @ApiModelProperty("附加链接")
+    private String url;
+    @ApiModelProperty("附件大小(kb)")
+    private int size;
+    @ApiModelProperty("文件类型")
+    private int targetType;
+    @ApiModelProperty("文件所属业务ID")
+    private String targetId;
+    @ApiModelProperty("上传时间")
+    private Date uploadTime;
+    @ApiModelProperty("上传人")
+    private String uploadUserId;
+}

+ 40 - 0
yt-common/src/main/java/com/ytpm/agent/param/WorkorderParam.java

@@ -0,0 +1,40 @@
+package com.ytpm.agent.param;
+
+import com.ytpm.general.BaseParam;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Marx
+ * @date 2025/7/31 17:12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("代理商提交表单")
+public class WorkorderParam extends BaseParam {
+    @ApiModelProperty("工单ID")
+    private String workorderId;
+    @ApiModelProperty("工单标题")
+    private String title;
+    @ApiModelProperty("工单内容")
+    private String content;
+    @ApiModelProperty("工单状态")
+    private int workorderStatus;
+    @ApiModelProperty("处理人")
+    private String processor;
+    @ApiModelProperty("备注")
+    private String remark;
+    @ApiModelProperty("完成时间")
+    private Date finishTime;
+    @ApiModelProperty("附件列表")
+    private List<AttachParam> attachList;
+}