1550076451 před 1 rokem
rodič
revize
46da7c9089

+ 6 - 63
zwrx-api/src/main/java/api/controller/order/WorkOrderController.java

@@ -3,6 +3,7 @@ package api.controller.order;
3 3
 import api.entity.database.order.*;
4 4
 import api.entity.database.system.Dept;
5 5
 import api.entity.input.order.FeedbackInput;
6
+import api.entity.input.order.QueryWorkOrderInput;
6 7
 import api.entity.input.order.VisitInput;
7 8
 import api.service.order.*;
8 9
 import api.service.system.IConfigService;
@@ -57,70 +58,12 @@ public class WorkOrderController extends BaseController {
57 58
     @ApiOperation("工单列表")
58 59
     @Log(title = "查询工单列表",businessType = BusinessType.QUERY)
59 60
     @GetMapping
60
-    public AjaxResult getList(WorkOrder input, PageInput pageInput) {
61
-        LambdaQueryWrapper<WorkOrder> qw = new LambdaQueryWrapper();
62
-        qw.eq(input.getId() != null && input.getId() > 0, WorkOrder::getId, input.getId());
63
-        qw.like(!StringHelper.isEmpty(input.getWorkOrderId()), WorkOrder::getWorkOrderId, input.getWorkOrderId());
64
-        qw.like(!StringHelper.isEmpty(input.getResult()), WorkOrder::getResult, input.getResult());
65
-        qw.eq(input.getWorkState() != null && input.getWorkState() > 0, WorkOrder::getWorkState, input.getWorkState());
66
-        qw.eq(input.getReloadState() != null && input.getReloadState() > 0, WorkOrder::getReloadState, input.getReloadState());
67
-        qw.eq(input.getLimitTime() != null , WorkOrder::getLimitTime, input.getLimitTime());
68
-        qw.like(!StringHelper.isEmpty(input.getCreateUser()), WorkOrder::getCreateUser, input.getCreateUser());
69
-        qw.like(!StringHelper.isEmpty(input.getCreateUserName()), WorkOrder::getCreateUserName, input.getCreateUserName());
70
-        qw.eq(input.getEnableTime() != null , WorkOrder::getEnableTime, input.getEnableTime());
71
-        qw.eq(input.getIsDelete() != null && input.getIsDelete() > 0, WorkOrder::getIsDelete, input.getIsDelete());
72
-        qw.eq(input.getDeleteTime() != null , WorkOrder::getDeleteTime, input.getDeleteTime());
73
-        qw.like(!StringHelper.isEmpty(input.getDeleteUser()), WorkOrder::getDeleteUser, input.getDeleteUser());
74
-        qw.eq(input.getCloseTime() != null , WorkOrder::getCloseTime, input.getCloseTime());
75
-        qw.like(!StringHelper.isEmpty(input.getCloseUser()), WorkOrder::getCloseUser, input.getCloseUser());
76
-        qw.like(!StringHelper.isEmpty(input.getDealUser()), WorkOrder::getDealUser, input.getDealUser());
77
-        qw.eq(input.getDealTime() != null , WorkOrder::getDealTime, input.getDealTime());
78
-        qw.eq(input.getIsSatisfied() != null && input.getIsSatisfied() > 0, WorkOrder::getIsSatisfied, input.getIsSatisfied());
79
-        qw.eq(input.getMainWorkOrder() != null && input.getMainWorkOrder() > 0, WorkOrder::getMainWorkOrder, input.getMainWorkOrder());
80
-        qw.eq(input.getIsReturn() != null && input.getIsReturn() > 0, WorkOrder::getIsReturn, input.getIsReturn());
81
-        qw.eq(input.getSubmitTime() != null , WorkOrder::getSubmitTime, input.getSubmitTime());
82
-        qw.like(!StringHelper.isEmpty(input.getAssignUser()), WorkOrder::getAssignUser, input.getAssignUser());
83
-        qw.eq(input.getAssignTime() != null , WorkOrder::getAssignTime, input.getAssignTime());
84
-        qw.eq(input.getAssignId() != null && input.getAssignId() > 0, WorkOrder::getAssignId, input.getAssignId());
85
-        qw.eq(input.getIsReload() != null && input.getIsReload() > 0, WorkOrder::getIsReload, input.getIsReload());
86
-        qw.like(!StringHelper.isEmpty(input.getMainDeptId()), WorkOrder::getMainDeptId, input.getMainDeptId());
87
-        qw.like(!StringHelper.isEmpty(input.getDealDeptId()), WorkOrder::getDealDeptId, input.getDealDeptId());
88
-        qw.like(!StringHelper.isEmpty(input.getMainDeptId3()), WorkOrder::getMainDeptId3, input.getMainDeptId3());
89
-        qw.eq(input.getIsUnsuccessful() != null && input.getIsUnsuccessful() > 0, WorkOrder::getIsUnsuccessful, input.getIsUnsuccessful());
90
-        qw.like(!StringHelper.isEmpty(input.getUnsuccessful()), WorkOrder::getUnsuccessful, input.getUnsuccessful());
91
-        qw.eq(input.getUnsuccessfulState() != null && input.getUnsuccessfulState() > 0, WorkOrder::getUnsuccessfulState, input.getUnsuccessfulState());
92
-        qw.eq(input.getIsOpen() != null && input.getIsOpen() > 0, WorkOrder::getIsOpen, input.getIsOpen());
93
-        qw.eq(input.getRePush() != null && input.getRePush() > 0, WorkOrder::getRePush, input.getRePush());
94
-        qw.like(!StringHelper.isEmpty(input.getAdditionalReply()), WorkOrder::getAdditionalReply, input.getAdditionalReply());
95
-        qw.eq(input.getIsMedia() != null && input.getIsMedia() > 0, WorkOrder::getIsMedia, input.getIsMedia());
96
-        qw.eq(input.getIsSendBack() != null && input.getIsSendBack() > 0, WorkOrder::getIsSendBack, input.getIsSendBack());
97
-        qw.eq(input.getSpotCheck() != null && input.getSpotCheck() > 0, WorkOrder::getSpotCheck, input.getSpotCheck());
98
-        qw.eq(input.getRemind() != null && input.getRemind() > 0, WorkOrder::getRemind, input.getRemind());
99
-        qw.eq(input.getUnsuccessfulTime() != null , WorkOrder::getUnsuccessfulTime, input.getUnsuccessfulTime());
100
-        qw.like(!StringHelper.isEmpty(input.getNoResult()), WorkOrder::getNoResult, input.getNoResult());
101
-        qw.eq(input.getOrderSign() != null && input.getOrderSign() > 0, WorkOrder::getOrderSign, input.getOrderSign());
102
-        qw.eq(input.getIsEncryption() != null && input.getIsEncryption() > 0, WorkOrder::getIsEncryption, input.getIsEncryption());
103
-        qw.eq(input.getPublicComment() != null && input.getPublicComment() > 0, WorkOrder::getPublicComment, input.getPublicComment());
104
-        qw.eq(input.getSmsTime() != null , WorkOrder::getSmsTime, input.getSmsTime());
105
-        qw.eq(input.getAdditionalReplyTime() != null , WorkOrder::getAdditionalReplyTime, input.getAdditionalReplyTime());
106
-        qw.eq(input.getNoExamine() != null && input.getNoExamine() > 0, WorkOrder::getNoExamine, input.getNoExamine());
107
-        qw.eq(input.getIsVisit() != null && input.getIsVisit() > 0, WorkOrder::getIsVisit, input.getIsVisit());
108
-        qw.eq(input.getVisitSatisfied() != null && input.getVisitSatisfied() > 0, WorkOrder::getVisitSatisfied, input.getVisitSatisfied());
109
-        qw.eq(input.getCompletionStatus() != null && input.getCompletionStatus() > 0, WorkOrder::getCompletionStatus, input.getCompletionStatus());
110
-        qw.eq(input.getIsSupervise() != null && input.getIsSupervise() > 0, WorkOrder::getIsSupervise, input.getIsSupervise());
111
-        qw.eq(input.getIsEnabled() != null && input.getIsEnabled() > 0, WorkOrder::getIsEnabled, input.getIsEnabled());
112
-        qw.eq(input.getIsBusiness() != null && input.getIsBusiness() > 0, WorkOrder::getIsBusiness, input.getIsBusiness());
113
-        qw.eq(input.getSuperviseState() != null && input.getSuperviseState() > 0, WorkOrder::getSuperviseState, input.getSuperviseState());
114
-        qw.eq(input.getSource() != null && input.getSource() > 0, WorkOrder::getSource, input.getSource());
115
-        qw.like(!StringHelper.isEmpty(input.getAuditContent()), WorkOrder::getAuditContent, input.getAuditContent());
116
-        qw.eq(input.getCreateTime() != null , WorkOrder::getCreateTime, input.getCreateTime());
61
+    public AjaxResult getList(QueryWorkOrderInput input, PageInput pageInput) throws IllegalAccessException {
62
+        LambdaQueryWrapper<WorkOrder> qw = new LambdaQueryWrapper<>();
63
+        qw.orderByDesc(WorkOrder::getId);
117 64
         Page<WorkOrder> page = GetPage(pageInput);
118
-        if (page != null) {
119
-            IPage<WorkOrder> iPage = workorderService.getListPage(page, qw);
120
-            return Success("成功", iPage.getRecords(), iPage.getTotal());
121
-        } else {
122
-            return Success("成功", workorderService.getList(qw));
123
-        }
65
+        IPage<WorkOrder> iPage = workorderService.SelectWorkOrderList(page,input);
66
+        return Success("成功",iPage.getRecords());
124 67
     }
125 68
     @ApiOperation("查询工单详情")
126 69
     @Log(title = "查询工单详情",businessType = BusinessType.QUERY)

+ 1 - 3
zwrx-entity/src/main/java/api/entity/database/order/SubmeterOrder.java

@@ -74,8 +74,7 @@ public class SubmeterOrder {
74 74
     /** 来电人姓名(对网络单位隐藏) */
75 75
     @ApiModelProperty("来电人姓名(对网络单位隐藏)")
76 76
     private String cusName;
77
-    /** 来电人性别(男,女,未知)
78
-     */
77
+    /** 来电人性别(男,女,未知)*/
79 78
     @ApiModelProperty("来电人性别(男,女,未知) ")
80 79
     private Long cusSex;
81 80
     /** 来电人电话(对网络单位隐藏)*/
@@ -84,7 +83,6 @@ public class SubmeterOrder {
84 83
     /** 来电人电话后四位*/
85 84
     @ApiModelProperty("来电人电话后四位")
86 85
     private String cusPhoneEncryption;
87
-
88 86
     /** 来电人地址 */
89 87
     @ApiModelProperty("来电人地址")
90 88
     private String cusAddress;

+ 0 - 3
zwrx-entity/src/main/java/api/entity/database/order/WorkOrder.java

@@ -66,9 +66,6 @@ public class WorkOrder {
66 66
     /** 处理人 */
67 67
     @ApiModelProperty("处理人")
68 68
     private String dealUser;
69
-    /** 处理部门 */
70
-    @ApiModelProperty("处理部门")
71
-    private String dealDept;
72 69
     /** 处理时间 */
73 70
     @ApiModelProperty("处理时间")
74 71
     private Date dealTime;

+ 90 - 0
zwrx-entity/src/main/java/api/entity/input/order/QueryWorkOrderInput.java

@@ -0,0 +1,90 @@
1
+package api.entity.input.order;
2
+
3
+
4
+import api.util.annotation.FieldCompare;
5
+import api.util.annotation.FieldParameter;
6
+import api.util.enums.FieldCompareType;
7
+import io.swagger.annotations.ApiModel;
8
+import io.swagger.annotations.ApiModelProperty;
9
+import lombok.Data;
10
+import org.hibernate.loader.collection.OneToManyJoinWalker;
11
+import org.springframework.format.annotation.DateTimeFormat;
12
+
13
+import java.math.BigDecimal;
14
+import java.util.Date;
15
+
16
+@Data
17
+@ApiModel(value = "筛选项", description = "筛选项")
18
+public class QueryWorkOrderInput {
19
+    /** 工单id */
20
+    @ApiModelProperty("工单id")
21
+    private Long id;
22
+    /** 信息来源 */
23
+    @ApiModelProperty("信息来源")
24
+    private Long infoSource;
25
+    /** 形式分类(信息类别) */
26
+    @ApiModelProperty("形式分类(信息类别)")
27
+    private Long infoType;
28
+    /** 标签 */
29
+    @ApiModelProperty("标签")
30
+    private Long label;
31
+    /** 反映区域 */
32
+    @ApiModelProperty("反映区域")
33
+    private Long sourceArea;
34
+    @ApiModelProperty("是否保密(0:否1:是)")
35
+    private Long isProtect;
36
+    /** 来电人姓名(对网络单位隐藏) */
37
+    @ApiModelProperty("来电人姓名")
38
+    private String cusName;
39
+    /** 来电人性别(男,女,未知)*/
40
+    @ApiModelProperty("来电人性别")
41
+    private Long cusSex;
42
+    /** 电话号码*/
43
+    @ApiModelProperty("电话号码")
44
+    @FieldCompare(fieldType = FieldCompareType.or,
45
+     parameter = {@FieldParameter(parameter = "cusPhone"),
46
+             @FieldParameter(fieldType = FieldCompareType.like,parameter = "cusPhoneEncryption"),
47
+             @FieldParameter(fieldType = FieldCompareType.like,parameter = "conPhoneEncryption"),
48
+             @FieldParameter(parameter = "conPhone")} )
49
+    private String phone;
50
+    /** 联系人姓名 */
51
+    @ApiModelProperty("联系人姓名")
52
+    @FieldCompare(fieldType = FieldCompareType.eq)
53
+    private String conName;
54
+    /** 标题 */
55
+    @ApiModelProperty("标题")
56
+    @FieldCompare(fieldType = FieldCompareType.like)
57
+    private String comTitle;
58
+    /** 内容 */
59
+    @ApiModelProperty("内容")
60
+    @FieldCompare(fieldType = FieldCompareType.like)
61
+    private String comContent;
62
+    /** 是否直办(及时答复)0:否,1:是 */
63
+    @ApiModelProperty("是否直办(及时答复)0:否,1:是")
64
+    private Long isResult;
65
+    /** 反映类别 */
66
+    @ApiModelProperty("反映类别")
67
+    private Long dicKey;
68
+    /** 紧急程度1普通2紧急 */
69
+    @ApiModelProperty("紧急程度1普通2紧急")
70
+    private Long level;
71
+    /** 工单内容 */
72
+    @ApiModelProperty("工单内容")
73
+    @FieldCompare(fieldType = FieldCompareType.like)
74
+    private String content;
75
+    @ApiModelProperty("处理结果(及时答复结果)")
76
+    @FieldCompare(fieldType = FieldCompareType.like)
77
+    private String result;
78
+
79
+    @ApiModelProperty("开始时间")
80
+    @FieldCompare(fieldType = FieldCompareType.ge,singleParameter ="createTime")
81
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
82
+    private Date StartTime;
83
+    /** 关键字 */
84
+    @ApiModelProperty("结束时间")
85
+    @FieldCompare(fieldType = FieldCompareType.le,singleParameter ="createTime")
86
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
87
+    private Date EndTime;
88
+}
89
+
90
+

+ 61 - 0
zwrx-entity/src/main/java/api/entity/view/order/WorkOrderView.java

@@ -0,0 +1,61 @@
1
+package api.entity.view.order;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
5
+import io.swagger.annotations.ApiModelProperty;
6
+import lombok.Data;
7
+
8
+import java.util.Date;
9
+
10
+@Data
11
+public class WorkOrderView {
12
+    /** id */
13
+    @ApiModelProperty("工单id")
14
+    private Long id;
15
+    /** 工单编号 */
16
+    @ApiModelProperty("工单编号")
17
+    private String workOrderId;
18
+    /** 处理结果(及时答复结果) */
19
+    @ApiModelProperty("处理结果(及时答复结果)")
20
+    private String result;
21
+    /** 工单状态 */
22
+    @ApiModelProperty("工单状态")
23
+    private Long workState;
24
+    /** 登记人工号 */
25
+    @ApiModelProperty("登记人工号")
26
+    private String createUser;
27
+    /** 登记人姓名 */
28
+    @ApiModelProperty("登记人姓名")
29
+    private String createUserName;
30
+    /** 是否督办工单0否1是 */
31
+    @ApiModelProperty("是否督办工单0否1是")
32
+    private Long isSupervise;
33
+    /** 工单时限 */
34
+    @ApiModelProperty("工单时限")
35
+    private Date limitTime;
36
+    /** 主办单位多个单位逗号分隔 */
37
+    @ApiModelProperty("主办单位多个单位逗号分隔")
38
+    private String mainDeptId;
39
+    /** 其他来源工单编号 */
40
+    @ApiModelProperty("其他来源工单编号")
41
+    private String otherOrderId;
42
+    /** 标题 */
43
+    @ApiModelProperty("标题")
44
+    private String comTitle;
45
+    /** 内容 */
46
+    @ApiModelProperty("内容")
47
+    private String comContent;
48
+    /** 工单内容 */
49
+    @ApiModelProperty("工单内容")
50
+    private String content;
51
+    /** 通话记录id */
52
+    @ApiModelProperty("通话记录id")
53
+    private Long callRecordId;
54
+    /** 留言记录id */
55
+    @ApiModelProperty("留言记录id")
56
+    private Long leaveRecordId;
57
+    /** (关联工单主id,判断是否是关联工单) */
58
+    @ApiModelProperty("(关联工单主id,判断是否是关联工单)")
59
+    private Long mainWorkOrder;
60
+
61
+}

+ 7 - 0
zwrx-mapper/src/main/java/api/mapper/order/WorkOrderMapper.java

@@ -1,8 +1,13 @@
1 1
 package api.mapper.order;
2 2
 
3
+import api.entity.database.system.User;
4
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
3 5
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 6
 import api.entity.database.order.WorkOrder;
7
+import com.baomidou.mybatisplus.core.metadata.IPage;
8
+import com.baomidou.mybatisplus.core.toolkit.Constants;
5 9
 import org.apache.ibatis.annotations.Mapper;
10
+import org.apache.ibatis.annotations.Param;
6 11
 
7 12
 @Mapper
8 13
 public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
@@ -10,4 +15,6 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
10 15
     public String SelectWorkOrderId(long source,String time);
11 16
     //生成办理时限
12 17
     public String SelectLimitTime(long day);
18
+    //分页工单列表
19
+    public IPage<WorkOrder> SelectWorkOrderList(IPage<WorkOrder> page, String sql);
13 20
 }

+ 32 - 0
zwrx-mapper/src/main/resources/mapper/order/WorkOrderMapper.xml

@@ -11,7 +11,39 @@
11 11
     <select id="SelectLimitTime" resultType="String" >
12 12
         select  GetLimit(#{day})
13 13
     </select>
14
+    <resultMap type="api.entity.view.order.WorkOrderView" id="WorkOrderResult">
15
+        <id property="id" column="id"/>
16
+        <result property="workOrderId" column="work_order_id"/>
17
+        <result property="workState" column="work_state"/>
18
+        <result property="createUser" column="create_user"/>
19
+        <result property="createUserName" column="create_user_name"/>
20
+        <result property="isSupervise" column="is_supervise"/>
21
+        <result property="limitTime" column="limit_time"/>
22
+        <result property="result" column="result"/>
23
+        <result property="mainDeptId" column="main_dept_id"/>
24
+        <result property="otherOrderId" column="other_order_id"/>
25
+        <result property="comTitle" column="com_title"/>
26
+        <result property="content" column="content"/>
27
+        <result property="callRecordId" column="call_record_id"/>
28
+        <result property="leaveRecordId" column="leave_record_id"/>
29
+        <result property="mainWorkOrder" column="main_work_order"/>
30
+        <result property="comContent" column="com_content"/>
31
+    </resultMap>
14 32
 
33
+    <sql id="selectWorkOrderVo">
34
+        select w.id,w.work_order_id,w.work_state,w.create_user,w.create_user_name,w.is_supervise
35
+        ,w.limit_time,w.result,w.main_dept_id,
36
+        s.other_order_id,s.com_title,s.content,s.call_record_id,s.leave_record_id,w.main_work_order,s.com_content
37
+        from
38
+        bus_work_order w
39
+        inner join   bus_work_order_submeter s
40
+        where w.id=s.id and w.is_delete=0
41
+    </sql>
42
+
43
+    <select id="SelectWorkOrderList"  resultMap="WorkOrderResult">
44
+        <include refid="selectWorkOrderVo"/>
45
+        ${sql}
46
+    </select>
15 47
 
16 48
 
17 49
 </mapper>

+ 5 - 0
zwrx-service/src/main/java/api/service/order/IWorkOrderService.java

@@ -2,17 +2,22 @@ package api.service.order;
2 2
 
3 3
 import api.entity.database.order.*;
4 4
 import api.entity.database.system.Dept;
5
+import api.entity.input.PageInput;
5 6
 import api.entity.input.order.FeedbackInput;
7
+import api.entity.input.order.QueryWorkOrderInput;
6 8
 import api.entity.input.order.VisitInput;
7 9
 import api.entity.input.order.WorkOrderInput;
8 10
 import api.entity.view.system.UserView;
9 11
 import api.service.IBaseService;
12
+import com.baomidou.mybatisplus.core.metadata.IPage;
10 13
 import org.springframework.web.bind.annotation.PathVariable;
11 14
 
12 15
 import java.util.Date;
13 16
 import java.util.List;
14 17
 
15 18
 public interface IWorkOrderService extends IBaseService<WorkOrder> {
19
+    IPage<WorkOrder> SelectWorkOrderList(IPage<WorkOrder> page,QueryWorkOrderInput input) throws IllegalAccessException;
20
+
16 21
     //添加/修改工单信息
17 22
     boolean  operateWorkOrder(WorkOrderInput input, UserView User,long type);
18 23
     //提交工单

+ 7 - 0
zwrx-service/src/main/java/api/service/order/impl/BusAssignInfoServiceImpl.java

@@ -2,6 +2,7 @@ package api.service.order.impl;
2 2
 
3 3
 import api.entity.database.order.*;
4 4
 import api.entity.database.system.Dept;
5
+import api.entity.database.system.User;
5 6
 import api.entity.input.order.FeedbackInput;
6 7
 import api.entity.view.system.UserView;
7 8
 import api.mapper.order.BusAssignInfoMapper;
@@ -13,9 +14,13 @@ import api.util.enums.BoolType;
13 14
 import api.util.enums.WorkSource;
14 15
 import api.util.enums.WorkState;
15 16
 import api.util.helper.StringHelper;
17
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
16 18
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
17 19
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
20
+import com.baomidou.mybatisplus.core.metadata.IPage;
21
+import com.baomidou.mybatisplus.core.toolkit.Constants;
18 22
 import lombok.var;
23
+import org.apache.ibatis.annotations.Param;
19 24
 import org.springframework.beans.factory.annotation.Autowired;
20 25
 import org.springframework.stereotype.Service;
21 26
 import org.springframework.transaction.annotation.Transactional;
@@ -51,6 +56,8 @@ public class BusAssignInfoServiceImpl extends BaseServiceImpl<BusAssignInfoMappe
51 56
     private IBusDelayTimeService busDelayTimeService;
52 57
     @Autowired
53 58
     private IConfigService configService;
59
+
60
+
54 61
     //查收工单
55 62
     @Override
56 63
     public boolean receiveWorkOrder(List<Long> ids, UserView User) {

+ 140 - 3
zwrx-service/src/main/java/api/service/order/impl/WorkOrderServiceImpl.java

@@ -3,15 +3,19 @@ package api.service.order.impl;
3 3
 import api.entity.database.order.*;
4 4
 import api.entity.database.system.Dept;
5 5
 import api.entity.database.system.Dic;
6
+import api.entity.database.system.User;
7
+import api.entity.input.PageInput;
8
+import api.entity.input.order.QueryWorkOrderInput;
6 9
 import api.entity.input.order.VisitInput;
7 10
 import api.entity.input.order.WorkOrderInput;
8 11
 import api.entity.view.system.UserView;
9 12
 import api.mapper.order.WorkOrderMapper;
10
-import api.mapper.system.DicMapper;
11 13
 import api.service.call.ICallLogService;
12 14
 import api.service.order.*;
13 15
 import api.service.BaseServiceImpl;
14 16
 import api.service.system.*;
17
+import api.util.annotation.FieldCompare;
18
+import api.util.annotation.FieldParameter;
15 19
 import api.util.enums.*;
16 20
 import api.util.helper.HttpHelper;
17 21
 import api.util.helper.SecretHelper;
@@ -19,13 +23,14 @@ import api.util.helper.StringHelper;
19 23
 import com.alibaba.fastjson2.JSON;
20 24
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
21 25
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
26
+import com.baomidou.mybatisplus.core.metadata.IPage;
22 27
 import lombok.var;
23
-import org.elasticsearch.ElasticsearchSecurityException;
24 28
 import org.springframework.beans.factory.annotation.Autowired;
25 29
 import org.springframework.stereotype.Service;
26 30
 import org.springframework.transaction.annotation.Transactional;
27 31
 import org.springframework.web.bind.annotation.PathVariable;
28 32
 
33
+import java.lang.reflect.Field;
29 34
 import java.text.SimpleDateFormat;
30 35
 import java.time.DayOfWeek;
31 36
 import java.time.LocalDate;
@@ -90,6 +95,125 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
90 95
     //乡镇表
91 96
     @Autowired
92 97
     private IAreaChildrenService areaChildrenService;
98
+    @Override
99
+    public IPage<WorkOrder> SelectWorkOrderList(IPage<WorkOrder> page,QueryWorkOrderInput input) throws IllegalAccessException {
100
+        Field[] fields = input.getClass().getDeclaredFields();
101
+        StringBuilder sql= new StringBuilder();
102
+        //遍历属性
103
+        for (Field field : fields) {
104
+            //通过setAccessible()设置为true,允许通过反射访问私有变量
105
+            field.setAccessible(true);
106
+            //获取属性值
107
+            Object value = field.get(input);
108
+            //获取属性名
109
+            String name = field.getName();
110
+            //获取字段类型
111
+            Class<?> type = field.getType();
112
+            FieldCompare annotation = field.getAnnotation(FieldCompare.class);
113
+            String compare=" = ";String singleParameter="";
114
+            FieldParameter[] parameter = null;
115
+            if (annotation != null) {
116
+                //获取比较方式默认等于
117
+                compare=annotation.fieldType().getValue();
118
+                singleParameter=annotation.singleParameter();
119
+                if(annotation.fieldType()==FieldCompareType.or)
120
+                {
121
+                    parameter=annotation.parameter();
122
+                }
123
+            }
124
+            String start="'";String end="'";
125
+            if (Date.class.isAssignableFrom(field.getType())) {
126
+                if (value!=null&&StringHelper.isNotEmpty(singleParameter))
127
+                {
128
+                    if(hasField(WorkOrder.class,singleParameter))
129
+                    {
130
+                        sql.append(" and w.").append(convert(singleParameter)).append(compare).append(start).append(value).append(end);
131
+                    }
132
+                    else   if(hasField(SubmeterOrder.class,singleParameter))
133
+                    {
134
+                        sql.append(" and S.").append(convert(singleParameter)).append(compare).append(start).append(value).append(end);
135
+                    }
136
+                }
137
+                else
138
+                {
139
+                    continue;
140
+                }
141
+                continue;
142
+            }
143
+            else   if (type.getName().equals("java.lang.Long"))
144
+            {
145
+                if (value!=null&&(Long)value>0L)
146
+                {
147
+                    if(StringHelper.isNotEmpty(singleParameter))
148
+                    {
149
+                        name=singleParameter;
150
+                    }
151
+                    if(hasField(WorkOrder.class,name))
152
+                    {
153
+                        sql.append(" and w.").append(convert(name)).append(compare).append(value);
154
+                    }
155
+                    else   if(hasField(SubmeterOrder.class,name))
156
+                    {
157
+                        sql.append(" and s.").append(convert(name)).append(compare).append(value);
158
+                    }
159
+                }
160
+                else
161
+                {
162
+                    continue;
163
+                }
164
+            }
165
+            if (type.getName().equals("java.lang.String"))
166
+            {
167
+
168
+                if (value!=null&&StringHelper.isNotEmpty(value.toString()))
169
+                {
170
+                    if (Objects.equals(compare, "or"))
171
+                    {
172
+                        sql.append(" and ").append("(");
173
+                        if (parameter != null)
174
+                        {
175
+                            for (int i = 0; i < parameter.length; i++) {
176
+                               if (i>0)
177
+                               {
178
+                                   sql.append(" or ");
179
+                               }
180
+                               String contrast=parameter[i].fieldType().getValue();
181
+                               if (Objects.equals(contrast, FieldCompareType.like.getValue()))
182
+                               {
183
+                                   start="'%";end ="%'";
184
+                               }
185
+                               if(hasField(WorkOrder.class,parameter[i].parameter()))
186
+                               {
187
+                                    sql.append("  w.").append(convert(parameter[i].parameter())).append(contrast).append(start).append(value).append(end);
188
+                               }
189
+                               else   if(hasField(SubmeterOrder.class,parameter[i].parameter()))
190
+                               {
191
+                                    sql.append("  s.").append(convert(parameter[i].parameter())).append(contrast).append(start).append(value).append(end);
192
+                               }
193
+                            }
194
+                        }
195
+                        sql.append(")");
196
+                    }
197
+                    else
198
+                    {
199
+                        if (Objects.equals(compare, FieldCompareType.like.getValue()))
200
+                        {
201
+                            start=" '%";end ="%'";
202
+                        }
203
+                        if(hasField(WorkOrder.class,name))
204
+                        {
205
+                            sql.append(" and w.").append(convert(name)).append(compare).append(start).append(value).append(end);
206
+                        }
207
+                        else   if(hasField(SubmeterOrder.class,name))
208
+                        {
209
+                            sql.append(" and s.").append(convert(name)).append(compare).append(start).append(value).append(end);
210
+                        }
211
+                    }
212
+               }
213
+            }
214
+        }
215
+      return orderMapper.SelectWorkOrderList(page, String.valueOf(sql));
216
+    }
93 217
     //添加/修改工单信息
94 218
     @Override
95 219
     public boolean operateWorkOrder(WorkOrderInput input, UserView User,long type) {
@@ -285,7 +409,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
285 409
             Order.setContent(input.getContent());//工单内容
286 410
             if (StringHelper.isEmpty(input.getContent()))
287 411
             {
288
-                input.setContent(input.getComContent()); //工单内容默认来电内容
412
+                Order.setContent(input.getComContent()); //工单内容默认来电内容
289 413
             }
290 414
             Order.setVisitType(input.getVisitType());//0正常回访1无需回访
291 415
             Order.setTownship(input.getTownship());
@@ -2024,5 +2148,18 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
2024 2148
 
2025 2149
 
2026 2150
     }
2151
+    // 使用正则表达式匹配大写字母,并将其替换为小写加下划线
2152
+    private static String convert(String str) {
2153
+        return str.replaceAll("([a-z])([A-Z])", "$1_$2").toLowerCase();
2154
+    }
2155
+    //判断字段是否在类中
2156
+    public static boolean hasField(Class<?> clazz, String fieldName) {
2157
+        try {
2158
+            clazz.getDeclaredField(fieldName); // 尝试获取字段
2159
+            return true; // 如果没有抛出异常,则字段存在
2160
+        } catch (NoSuchFieldException e) {
2161
+            return false; // 字段不存在
2162
+        }
2163
+    }
2027 2164
 
2028 2165
 }

+ 22 - 0
zwrx-util/src/main/java/api/util/annotation/FieldCompare.java

@@ -0,0 +1,22 @@
1
+package api.util.annotation;
2
+
3
+import api.util.enums.FieldCompareType;
4
+
5
+
6
+import java.lang.annotation.ElementType;
7
+import java.lang.annotation.Retention;
8
+import java.lang.annotation.RetentionPolicy;
9
+import java.lang.annotation.Target;
10
+import java.util.List;
11
+
12
+@Target({ElementType.METHOD, ElementType.FIELD})
13
+@Retention(RetentionPolicy.RUNTIME)
14
+public @interface FieldCompare {
15
+    //比较值
16
+    FieldCompareType fieldType()  default FieldCompareType.eq;
17
+    //多参数
18
+    FieldParameter [] parameter() default {};
19
+    //单参数
20
+    String  singleParameter() default "";
21
+
22
+}

+ 18 - 0
zwrx-util/src/main/java/api/util/annotation/FieldParameter.java

@@ -0,0 +1,18 @@
1
+package api.util.annotation;
2
+
3
+import api.util.enums.FieldCompareType;
4
+
5
+import java.lang.annotation.ElementType;
6
+import java.lang.annotation.Retention;
7
+import java.lang.annotation.RetentionPolicy;
8
+import java.lang.annotation.Target;
9
+
10
+@Target({ElementType.METHOD, ElementType.FIELD})
11
+@Retention(RetentionPolicy.RUNTIME)
12
+public @interface FieldParameter {
13
+
14
+    //比较值
15
+    FieldCompareType fieldType()  default FieldCompareType.eq;
16
+    //参数
17
+    String parameter() default "";
18
+}

+ 30 - 0
zwrx-util/src/main/java/api/util/enums/FieldCompareType.java

@@ -0,0 +1,30 @@
1
+package api.util.enums;
2
+
3
+import io.swagger.annotations.ApiModelProperty;
4
+
5
+public enum FieldCompareType {
6
+    @ApiModelProperty("大于")
7
+    gt(" > "),
8
+    @ApiModelProperty("大于等于")
9
+    ge(" >= "),
10
+    @ApiModelProperty("小于")
11
+    lt(" < "),
12
+    @ApiModelProperty("小于等于")
13
+    le(" <= "),
14
+    @ApiModelProperty("等于")
15
+    eq(" = "),
16
+    @ApiModelProperty("或")
17
+    or(" or "),
18
+    @ApiModelProperty("模糊")
19
+    like(" like ");
20
+
21
+    private final String value;
22
+    FieldCompareType(String value)
23
+    {
24
+        this.value=value;
25
+    }
26
+
27
+    public  String getValue(){
28
+        return value;
29
+    }
30
+}