Browse Source

Merge branch 'master' of http://101.36.160.140:21044/delivery-warehouse-java/delivery-depot-admin into liuj_pc_dev

liujing-123 2 weeks ago
parent
commit
b24b5cf8d0

+ 29 - 0
delivery-framework/delivery-spring-boot-starter-web/src/main/java/com/unis/framework/jackson/core/databind/StringLocalDateTimeSerializer.java

@@ -0,0 +1,29 @@
1
+package com.unis.framework.jackson.core.databind;
2
+
3
+import com.fasterxml.jackson.core.JsonGenerator;
4
+import com.fasterxml.jackson.databind.JsonSerializer;
5
+import com.fasterxml.jackson.databind.SerializerProvider;
6
+
7
+import java.io.IOException;
8
+import java.time.LocalDateTime;
9
+import java.time.format.DateTimeFormatter;
10
+
11
+import static com.unis.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
12
+
13
+/**
14
+ * 自定义序列化器:
15
+ *  LocalDateTime类型对象返回给前端时,返回的时间格式为:yyyy-MM-dd HH:mm:ss
16
+ *  应用:在需要转换的字段上添加:@JsonSerialize(using = CustomLocalDateTimeSerializer.class) // 使用自定义序列化器
17
+ */
18
+public class StringLocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
19
+    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
20
+
21
+    @Override
22
+    public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
23
+        if (value != null) {
24
+            gen.writeString(value.format(formatter));
25
+        } else {
26
+            gen.writeNull();
27
+        }
28
+    }
29
+}

+ 1 - 1
delivery-module-core/delivery-module-core-biz/src/main/java/com/unis/module/coding/controller/admin/task/TaskController.java

@@ -88,7 +88,7 @@ public class TaskController {
88 88
 
89 89
     @PostMapping("/setDkxxByKqId")
90 90
     @Operation(summary = "打卡(传 id 是变更(传图片),不传 id 是新增")
91
-    public CommonResult<Boolean> setDkxxByKqId(@RequestBody TaskDkxxSaveVO saveVO) {
91
+    public CommonResult<TaskDkxxRespVO> setDkxxByKqId(@RequestBody TaskDkxxSaveVO saveVO) {
92 92
         return success(taskService.setDkxxByKqId(saveVO));
93 93
     }
94 94
 

+ 3 - 0
delivery-module-core/delivery-module-core-biz/src/main/java/com/unis/module/coding/controller/admin/task/vo/TaskDkxxRespVO.java

@@ -1,6 +1,8 @@
1 1
 package com.unis.module.coding.controller.admin.task.vo;
2 2
 
3 3
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
4
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
5
+import com.unis.framework.jackson.core.databind.StringLocalDateTimeSerializer;
4 6
 import io.swagger.v3.oas.annotations.media.Schema;
5 7
 import lombok.Data;
6 8
 
@@ -21,6 +23,7 @@ public class TaskDkxxRespVO {
21 23
     private Long userId;
22 24
 
23 25
     @Schema(description = "打卡时间")
26
+    @JsonSerialize(using = StringLocalDateTimeSerializer.class) // 使用自定义序列化器
24 27
     private LocalDateTime dksj;
25 28
 
26 29
     @Schema(description = "打卡地点")

+ 1 - 1
delivery-module-core/delivery-module-core-biz/src/main/java/com/unis/module/coding/service/task/TaskService.java

@@ -29,7 +29,7 @@ public interface TaskService {
29 29
 
30 30
     TaskDkxxRespVO getDkxxByKqId(TaskPageReqVO reqVO);
31 31
 
32
-    Boolean setDkxxByKqId(TaskDkxxSaveVO saveVO);
32
+    TaskDkxxRespVO setDkxxByKqId(TaskDkxxSaveVO saveVO);
33 33
 
34 34
     Boolean getStoreroom(TaskPageReqVO reqVO);
35 35
 

+ 37 - 26
delivery-module-core/delivery-module-core-biz/src/main/java/com/unis/module/coding/service/task/TaskServiceImpl.java

@@ -39,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
39 39
 import org.springframework.validation.annotation.Validated;
40 40
 
41 41
 import javax.annotation.Resource;
42
+import java.time.LocalDateTime;
42 43
 import java.util.ArrayList;
43 44
 import java.util.List;
44 45
 import java.util.Set;
@@ -83,9 +84,7 @@ public class TaskServiceImpl implements TaskService {
83 84
         addParamDeptIds(pageReqVO);
84 85
 
85 86
         IPage<TaskRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
86
-        dkMapper.getTaskList(page, pageReqVO);
87
-
88
-        return page;
87
+        return dkMapper.getTaskList(page, pageReqVO);
89 88
     }
90 89
 
91 90
     @Override
@@ -118,7 +117,6 @@ public class TaskServiceImpl implements TaskService {
118 117
     public Boolean getTasks(TaskPageReqVO reqVO) {
119 118
 
120 119
         //校验是登录人可选的任务
121
-        reqVO.setListType(TaskPageReqVO.LIST_TYPE_TASK1);
122 120
         verifyTask(reqVO);
123 121
 
124 122
         Long loginUserId = SecurityFrameworkUtils.getLoginUserIdNotNull();
@@ -130,7 +128,7 @@ public class TaskServiceImpl implements TaskService {
130 128
         if(roleCodes.contains(RoleCodeEnum.PROVINCIAL_VERIFICATION_PERSONNEL.getCode())) {
131 129
             reqVO.getKqIds().forEach(kqId -> {
132 130
                 ProvinceDO provinceDO = new ProvinceDO()
133
-                        .setHyState(reqVO.getHyState() == null ? DeliveryHyState.WAIT_HY.getCode() : reqVO.getHyState())
131
+                        .setHyState(reqVO.getHyState())
134 132
                         .setHyryId(SecurityFrameworkUtils.getLoginUserId())
135 133
                         .setHyryName(SecurityFrameworkUtils.getLoginUserNickname());
136 134
                 provinceMapper.updateByKqId(provinceDO, kqId);
@@ -140,7 +138,7 @@ public class TaskServiceImpl implements TaskService {
140 138
         if(roleCodes.contains(RoleCodeEnum.BANK_VERIFICATION_PERSONNEL.getCode())) {
141 139
             reqVO.getKqIds().forEach(kqId -> {
142 140
                 BankDO bankDO = new BankDO()
143
-                        .setHyState(reqVO.getHyState() == null ? DeliveryHyState.WAIT_HY.getCode() : reqVO.getHyState())
141
+                        .setHyState(reqVO.getHyState())
144 142
                         .setHyryId(SecurityFrameworkUtils.getLoginUserId())
145 143
                         .setHyryName(SecurityFrameworkUtils.getLoginUserNickname());
146 144
                 bankMapper.updateByKqId(bankDO, kqId);
@@ -254,37 +252,45 @@ public class TaskServiceImpl implements TaskService {
254 252
         return BeanUtils.toBean(dkDO, TaskDkxxRespVO.class);
255 253
     }
256 254
 
255
+    /**
256
+     * 打卡(传 id 是变更(传图片),不传 id 是新增
257
+     * @param saveVO 打卡对象
258
+     * @return 结果
259
+     */
257 260
     @Override
258 261
     @Transactional(rollbackFor = Exception.class)
259
-    public Boolean setDkxxByKqId(TaskDkxxSaveVO saveVO) {
262
+    public TaskDkxxRespVO setDkxxByKqId(TaskDkxxSaveVO saveVO) {
260 263
 
261 264
         if(ObjectUtils.isEmpty(saveVO) || ObjectUtils.isEmpty(saveVO.getKqId())) {
262 265
             throw exception(ErrorCodeConstants.APP_PARAM_ERROR);
263 266
         }
264
-        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
267
+        Long loginUserId = SecurityFrameworkUtils.getLoginUserIdNotNull();
265 268
         DkDO dkDO = dkMapper.selectByKqIdAndUserId(saveVO.getKqId(), loginUserId);
269
+        synchronized (loginUserId){ //上锁 避免重复提交
270
+            if(ObjectUtils.isEmpty(saveVO.getId())) {
271
+                if(ObjectUtils.isNotEmpty(dkDO)) {
272
+                    throw exception(ErrorCodeConstants.APP_TASK_RECEIVE_ERROR_RETRY);
273
+                }
266 274
 
267
-        if(ObjectUtils.isEmpty(saveVO.getId())) {
268
-            if(ObjectUtils.isNotEmpty(dkDO)) {
269
-                throw exception(ErrorCodeConstants.APP_TASK_RECEIVE_ERROR_RETRY);
270
-            }
271
-
272
-            // 查询登录人角色标识,填充[打卡类型]
273
-            setDkType(saveVO, loginUserId);
275
+                // 查询登录人角色标识,填充[打卡类型]
276
+                setDkType(saveVO, loginUserId);
274 277
 
275
-            //新增
276
-            DkDO saveDo = getDkDO(saveVO, loginUserId);
277
-            dkMapper.insert(saveDo);
278
-        } else {
279
-            //变更
280
-            if(ObjectUtils.isNotEmpty(dkDO) && dkDO.getId().equals(saveVO.getId())) {
281
-                dkMapper.updateById(BeanUtils.toBean(saveVO, DkDO.class));
278
+                //新增
279
+                DkDO saveDo = getDkDO(saveVO, loginUserId);
280
+                dkMapper.insert(saveDo);
281
+                return BeanUtils.toBean(saveDo, TaskDkxxRespVO.class); //返回打卡对象
282 282
             } else {
283
-                throw exception(ErrorCodeConstants.APP_PARAM_ERROR);
283
+                //变更
284
+                if(ObjectUtils.isNotEmpty(dkDO) && dkDO.getId().equals(saveVO.getId())) {
285
+                    DkDO updateDo = BeanUtils.toBean(saveVO, DkDO.class);
286
+                    updateDo.setDksj(LocalDateTime.now());
287
+                    dkMapper.updateById(updateDo);
288
+                    return BeanUtils.toBean(updateDo, TaskDkxxRespVO.class);
289
+                } else {
290
+                    throw exception(ErrorCodeConstants.APP_PARAM_ERROR);
291
+                }
284 292
             }
285 293
         }
286
-
287
-        return null;
288 294
     }
289 295
 
290 296
     @Override
@@ -319,6 +325,7 @@ public class TaskServiceImpl implements TaskService {
319 325
         DkDO saveDo = BeanUtils.toBean(saveVO, DkDO.class);
320 326
         saveDo.setId(YitIdHelper.nextId());// 雪花id
321 327
         saveDo.setUserId(loginUserId);
328
+        saveDo.setDksj(LocalDateTime.now());
322 329
         return saveDo;
323 330
     }
324 331
 
@@ -335,6 +342,10 @@ public class TaskServiceImpl implements TaskService {
335 342
     }
336 343
 
337 344
     private void verifyTask(TaskPageReqVO reqVO) {
345
+        if(reqVO.getKqIds() == null || reqVO.getKqIds().isEmpty()
346
+                || reqVO.getHyState() == null || reqVO.getListType() == null){
347
+            throw exception(ErrorCodeConstants.APP_PARAM_ERROR);
348
+        }
338 349
 
339 350
         TaskPageReqVO pageReqVO = new TaskPageReqVO();
340 351
         pageReqVO.setKqIds(reqVO.getKqIds());
@@ -343,7 +354,7 @@ public class TaskServiceImpl implements TaskService {
343 354
 
344 355
         IPage<TaskRespVO> taskList = getTaskList(pageReqVO);
345 356
 
346
-        if(taskList.getTotal() != reqVO.getKqIds().size()) {
357
+        if(taskList.getRecords().size() != reqVO.getKqIds().size()) {
347 358
             throw exception(ErrorCodeConstants.APP_TASK_RECEIVE_ERROR);
348 359
         }
349 360
     }

+ 0 - 8
delivery-module-core/delivery-module-core-biz/src/main/resources/mapper/dk/DkMapper.xml

@@ -1,15 +1,7 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<!--suppress SqlNoDataSourceInspection -->
4 3
 <mapper namespace="com.unis.module.coding.dal.mysql.dk.DkMapper">
5 4
 
6
-    <!--
7
-        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
8
-        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
9
-        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
10
-        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
11
-     -->
12
-
13 5
     <select id="getTaskList" resultType="com.unis.module.coding.controller.admin.task.vo.TaskRespVO">
14 6
         SELECT
15 7
             dk.ID AS kqId,

+ 49 - 17
delivery-module-core/delivery-module-core-biz/src/main/resources/mapper/dwxx/DwxxMapper.xml

@@ -65,17 +65,28 @@
65 65
         <where>
66 66
             cd.bz is null
67 67
             and cd.qyxz!='10'
68
-            and cd.DELETED=0   and (t1.cfnum!=0   or  t2.yxcfnum!=0)
68
+            and cd.DELETED=0
69
+            <choose>
70
+                <when test=" (pageReqVO.cflx!=null and pageReqVO.cflx!='')
71
+                         or (pageReqVO.cfzt!=null and pageReqVO.cfzt!='')
72
+                         or (pageReqVO.cfStart!=null and pageReqVO.cfStart !='')
73
+                         or (pageReqVO.cfEnd!=null and pageReqVO.cfEnd !='') ">
74
+                    and t1.cfnum !=0
75
+                </when>
76
+                <otherwise>
77
+                   and  (t1.cfnum !=0  or t2.yxcfnum !=0)
78
+                </otherwise>
79
+            </choose>
69 80
             <if test="pageReqVO.areaCode!=null and pageReqVO.areaCode!=''">
70 81
                 and ck.xzqhdm like #{pageReqVO.areaCode}
71 82
             </if>
72
-            <if test="pageReqVO.kqStart!=null and pageReqVO.kqStart!='' and pageReqVO.kqEnd!=null and pageReqVO.kqEnd!=''">
73
-                and t1.sjcrNum between #{pageReqVO.kqStart} and #{pageReqVO.kqEnd}
83
+            <if test="pageReqVO.kqStart!=null and pageReqVO.kqEnd!=null ">
84
+                and IFNULL(t1.sjcrNum, 0)between #{pageReqVO.kqStart} and #{pageReqVO.kqEnd}
74 85
             </if>
75
-            <if test="pageReqVO.kqStart!=null and pageReqVO.kqStart!='' and (pageReqVO.kqEnd==null or pageReqVO.kqEnd=='')">
86
+            <if test="pageReqVO.kqStart!=null  and pageReqVO.kqEnd==null ">
76 87
                 and t1.sjcrNum <![CDATA[>=]]>  #{pageReqVO.kqStart}
77 88
             </if>
78
-            <if test="(pageReqVO.kqStart==null or pageReqVO.kqStart=='') and pageReqVO.kqEnd!=null and pageReqVO.kqEnd!=''">
89
+            <if test="pageReqVO.kqStart==null  and pageReqVO.kqEnd!=null ">
79 90
                 and t1.sjcrNum <![CDATA[<=]]>  #{pageReqVO.kqEnd}
80 91
             </if>           
81 92
             <if test="pageReqVO.dwmc!=null and pageReqVO.dwmc!=''">
@@ -115,7 +126,7 @@
115 126
                     <if test="pageReqVO.cfzt!=null and pageReqVO.cfzt!=''">
116 127
                         and cc.CAZT=#{pageReqVO.cfzt}
117 128
                     </if>
118
-                    <if test="pageReqVO.cfStart!=null and cfStart.cfStart!='' and pageReqVO.cfEnd!=null and pageReqVO.cfEnd!=''">
129
+                    <if test="pageReqVO.cfStart!=null and pageReqVO.cfStart!='' and pageReqVO.cfEnd!=null and pageReqVO.cfEnd!=''">
119 130
                         and cc.SJCR between #{pageReqVO.cfStart} and #{pageReqVO.cfEnd}
120 131
                     </if>
121 132
                     <if test="(pageReqVO.cfStart == null or pageReqVO.cfStart == '') and pageReqVO.cfEnd != null and pageReqVO.cfEnd != ''">
@@ -139,13 +150,24 @@
139 150
         <where>
140 151
             cd.qyxz!='10'
141 152
             and cd.DELETED=0
142
-            <if test="pageReqVO.kqStart!=null and pageReqVO.kqStart!='' and pageReqVO.kqEnd!=null and pageReqVO.kqEnd!=''">
143
-                and t1.sjcrNum between #{pageReqVO.kqStart} and #{pageReqVO.kqEnd}
153
+            <choose>
154
+                <when test=" (pageReqVO.cflx!=null and pageReqVO.cflx!='')
155
+                         or (pageReqVO.cfzt!=null and pageReqVO.cfzt!='')
156
+                         or (pageReqVO.cfStart!=null and pageReqVO.cfStart !='')
157
+                         or (pageReqVO.cfEnd!=null and pageReqVO.cfEnd !='') ">
158
+                    and t1.cfnum !=0
159
+                </when>
160
+                <otherwise>
161
+                   and  (t1.cfnum !=0  or t2.yxcfnum !=0)
162
+                </otherwise>
163
+            </choose>
164
+            <if test="pageReqVO.kqStart!=null  and pageReqVO.kqEnd!=null">
165
+                and IFNULL(t1.sjcrNum, 0) between #{pageReqVO.kqStart} and #{pageReqVO.kqEnd}
144 166
             </if>
145
-            <if test="pageReqVO.kqStart!=null and pageReqVO.kqStart!='' and (pageReqVO.kqEnd==null or pageReqVO.kqEnd=='')">
167
+            <if test="pageReqVO.kqStart!=null  and pageReqVO.kqEnd==null">
146 168
                 and t1.sjcrNum <![CDATA[>=]]>  #{pageReqVO.kqStart}
147 169
             </if>
148
-            <if test="(pageReqVO.kqStart==null or pageReqVO.kqStart=='') and pageReqVO.kqEnd!=null and pageReqVO.kqEnd!=''">
170
+            <if test="pageReqVO.kqStart==null  and pageReqVO.kqEnd!=null">
149 171
                 and t1.sjcrNum <![CDATA[<=]]>  #{pageReqVO.kqEnd}
150 172
             </if>
151 173
             <if test="pageReqVO.dwmc!=null and pageReqVO.dwmc!=''">
@@ -246,13 +268,24 @@
246 268
         ) t3 on t3.KQ_ID=ck.id
247 269
         <where>
248 270
             cd.qyxz!='10' and cd.DELETED=0
249
-            <if test="pageReqVO.kqStart!=null and pageReqVO.kqStart!='' and pageReqVO.kqEnd!=null and pageReqVO.kqEnd!=''">
250
-                and t1.sjcrNum between #{pageReqVO.kqStart} and #{pageReqVO.kqEnd}
271
+            <choose>
272
+                <when test=" (pageReqVO.cflx!=null and pageReqVO.cflx!='')
273
+                         or (pageReqVO.cfzt!=null and pageReqVO.cfzt!='')
274
+                         or (pageReqVO.cfStart!=null and pageReqVO.cfStart !='')
275
+                         or (pageReqVO.cfEnd!=null and pageReqVO.cfEnd !='') ">
276
+                    and t1.cfnum !=0
277
+                </when>
278
+                <otherwise>
279
+                   and  (t1.cfnum !=0  or t3.yxcfnum !=0)
280
+                </otherwise>
281
+            </choose>
282
+            <if test="pageReqVO.kqStart!=null and pageReqVO.kqEnd!=null">
283
+                and IFNULL(t1.sjcrNum, 0) between #{pageReqVO.kqStart} and #{pageReqVO.kqEnd}
251 284
             </if>
252
-            <if test="pageReqVO.kqStart!=null and pageReqVO.kqStart!='' and (pageReqVO.kqEnd==null or pageReqVO.kqEnd=='')">
285
+            <if test="pageReqVO.kqStart!=null and pageReqVO.kqEnd==null ">
253 286
                 and t1.sjcrNum <![CDATA[>=]]>  #{pageReqVO.kqStart}
254 287
             </if>
255
-            <if test="(pageReqVO.kqStart==null or pageReqVO.kqStart=='') and pageReqVO.kqEnd!=null and pageReqVO.kqEnd!=''">
288
+            <if test="pageReqVO.kqStart==null  and pageReqVO.kqEnd!=null">
256 289
                 and t1.sjcrNum <![CDATA[<=]]>  #{pageReqVO.kqEnd}
257 290
             </if>
258 291
             <if test="pageReqVO.dwmc!=null and pageReqVO.dwmc!=''">
@@ -276,10 +309,9 @@
276 309
                 cc.ID  ,
277 310
                 cc.KQMC,
278 311
                 cc.CAMC,
279
-
312
+                cc.CAZT,
280 313
                 cc.CFLX,
281
-                TRUNC(cc.SJCR)  sjcr,
282
-                cc.SJCR
314
+                TRUNC(cc.SJCR)  sjcr
283 315
         from  CODING_CAXX cc
284 316
         join CODING_FMXX cf on cc.id=cf.BASE_CAXX_ID
285 317
         <where>