duhongyu преди 4 месеца
родител
ревизия
7d8ef9b119

+ 3 - 3
ltrq-api/src/main/java/api/controller/scheduling/SchedulingClassController.java

@@ -30,7 +30,7 @@ import java.util.List;
30 30
 
31 31
 @Api(value = "班别管理",tags = "班别管理")
32 32
 @RestController
33
-@RequestMapping("/scheduling/schedulingclass")
33
+@RequestMapping("/scheduling/schedulingClass")
34 34
 public class SchedulingClassController extends BaseController {
35 35
     @Autowired
36 36
     private ISchedulingClassService schedulingclassService;
@@ -41,7 +41,7 @@ public class SchedulingClassController extends BaseController {
41 41
     @GetMapping
42 42
     public AjaxResult getList(SchedulingClass input, PageInput pageInput) {
43 43
         LambdaQueryWrapper<SchedulingClass> qw = new LambdaQueryWrapper<>();
44
-        qw.eq(input.getClassId() != null && input.getClassId() > 0, SchedulingClass::getClassId, input.getClassId());
44
+        qw.eq(input.getSchedulingClassId() != null && input.getSchedulingClassId() > 0, SchedulingClass::getSchedulingClassId, input.getSchedulingClassId());
45 45
         qw.like(!StringHelper.isEmpty(input.getClassName()), SchedulingClass::getClassName, input.getClassName());
46 46
         qw.eq(input.getIsRest() != null && input.getIsRest() > 0, SchedulingClass::getIsRest, input.getIsRest());
47 47
         qw.eq(input.getMinimumPeople() != null && input.getMinimumPeople() > 0, SchedulingClass::getMinimumPeople, input.getMinimumPeople());
@@ -139,7 +139,7 @@ public class SchedulingClassController extends BaseController {
139 139
     @DeleteMapping("/{ids}")
140 140
     public AjaxResult delete(@PathVariable List<Long> ids)  {
141 141
         LambdaUpdateWrapper<SchedulingClass> qw = new LambdaUpdateWrapper<>();
142
-        qw.in(SchedulingClass::getClassId, ids);
142
+        qw.in(SchedulingClass::getSchedulingClassId, ids);
143 143
         qw.set(SchedulingClass::getIsDelete, 1);
144 144
         boolean result = schedulingclassService.updateBatch(qw);
145 145
         if(result){

+ 72 - 4
ltrq-api/src/main/java/api/controller/scheduling/SchedulingManageController.java

@@ -3,8 +3,10 @@ package api.controller.scheduling;
3 3
 import api.entity.database.scheduling.SchedulingClass;
4 4
 import api.entity.database.system.User;
5 5
 import api.entity.input.scheduling.SchedulingCopy;
6
+import api.entity.input.scheduling.SchedulingManageInput;
6 7
 import api.entity.input.scheduling.SchedulingPreference;
7 8
 import api.entity.view.scheduling.SchedulingClassView;
9
+import api.entity.view.scheduling.SchedulingManageUserView;
8 10
 import api.entity.view.scheduling.SchedulingManageView;
9 11
 import api.entity.view.system.UserView;
10 12
 import api.mapper.system.UserMapper;
@@ -32,10 +34,12 @@ import org.springframework.web.bind.annotation.*;
32 34
 import java.util.ArrayList;
33 35
 import java.util.Arrays;
34 36
 import java.util.List;
37
+import java.util.Objects;
38
+import java.util.stream.Collectors;
35 39
 
36 40
 @Api(value = "排班管理",tags = "排班管理")
37 41
 @RestController
38
-@RequestMapping("/scheduling/schedulingmanage")
42
+@RequestMapping("/scheduling/schedulingManage")
39 43
 public class SchedulingManageController extends BaseController {
40 44
     @Autowired
41 45
     private ISchedulingManageService schedulingmanageService;
@@ -54,7 +58,7 @@ public class SchedulingManageController extends BaseController {
54 58
     @GetMapping
55 59
     public AjaxResult getList(SchedulingManage input, PageInput pageInput) {
56 60
         LambdaQueryWrapper<SchedulingManage> qw = new LambdaQueryWrapper();
57
-        qw.eq(input.getId() != null && input.getId() > 0, SchedulingManage::getId, input.getId());
61
+        qw.eq(input.getSchedulingManageId() != null && input.getSchedulingManageId() > 0, SchedulingManage::getSchedulingManageId, input.getSchedulingManageId());
58 62
         qw.eq(input.getSchedulingDate() != null , SchedulingManage::getSchedulingDate, input.getSchedulingDate());
59 63
         qw.like(!StringHelper.isEmpty(input.getSchedulingStaff()), SchedulingManage::getSchedulingStaff, input.getSchedulingStaff());
60 64
         qw.eq(input.getClassId() != null && input.getClassId() > 0, SchedulingManage::getClassId, input.getClassId());
@@ -63,6 +67,7 @@ public class SchedulingManageController extends BaseController {
63 67
         qw.eq(input.getCreateTime() != null , SchedulingManage::getCreateTime, input.getCreateTime());
64 68
         qw.like(!StringHelper.isEmpty(input.getUpdateUser()), SchedulingManage::getUpdateUser, input.getUpdateUser());
65 69
         qw.eq(input.getUpdateTime() != null , SchedulingManage::getUpdateTime, input.getUpdateTime());
70
+        qw.eq(SchedulingManage::getIsDelete,0);
66 71
         Page<SchedulingManage> page = GetPage(pageInput);
67 72
         List<SchedulingManage> list;Long total = null;
68 73
         if (page != null) {
@@ -83,6 +88,10 @@ public class SchedulingManageController extends BaseController {
83 88
                 {
84 89
                     item.setUpdateUserName(userMapper.selectName(item.getUpdateUser()));
85 90
                 }
91
+                if (StringHelper.isNotEmpty(item.getSchedulingStaff()) )
92
+                {
93
+                    item.setSchedulingStaffName(userMapper.selectName(item.getSchedulingStaff()));
94
+                }
86 95
                 if (item.getClassId()!=null &&item.getClassId()>0)
87 96
                 {
88 97
                     var SchedulingClass=schedulingClassService.getEntity(item.getClassId());
@@ -101,7 +110,65 @@ public class SchedulingManageController extends BaseController {
101 110
             return Success("成功", schedulingManageViews);
102 111
         }
103 112
     }
113
+    @ApiOperation("列表")
114
+    @Log(title = "查询排班列表",businessType = BusinessType.QUERY)
115
+    @GetMapping("/getViewList")
116
+    public AjaxResult getViewList(SchedulingManageInput input) {
117
+        LambdaQueryWrapper<SchedulingManage> qw = new LambdaQueryWrapper();
118
+        qw.eq(input.getSchedulingManageId() != null && input.getSchedulingManageId() > 0, SchedulingManage::getSchedulingManageId, input.getSchedulingManageId());
119
+        qw.eq(input.getSchedulingDate() != null , SchedulingManage::getSchedulingDate, input.getSchedulingDate());
120
+        qw.like(!StringHelper.isEmpty(input.getSchedulingStaff()), SchedulingManage::getSchedulingStaff, input.getSchedulingStaff());
121
+        qw.eq(input.getClassId() != null && input.getClassId() > 0, SchedulingManage::getClassId, input.getClassId());
122
+        qw.eq(input.getDeptId() != null && input.getDeptId() > 0, SchedulingManage::getDeptId, input.getDeptId());
123
+        qw.like(!StringHelper.isEmpty(input.getCreateUser()), SchedulingManage::getCreateUser, input.getCreateUser());
124
+        qw.like(!StringHelper.isEmpty(input.getUpdateUser()), SchedulingManage::getUpdateUser, input.getUpdateUser());
125
+        qw.eq(input.getUpdateTime() != null , SchedulingManage::getUpdateTime, input.getUpdateTime());
126
+        qw.ge(!StringHelper.isEmpty(input.getStartTime()), SchedulingManage::getCreateTime, input.getStartTime());
127
+        qw.le(!StringHelper.isEmpty(input.getEndTime()), SchedulingManage::getCreateTime, input.getEndTime());
128
+        qw.eq(SchedulingManage::getIsDelete,0);
129
+        List<SchedulingManage> list=  schedulingmanageService.getList(qw);
130
+        List<SchedulingManageView>  schedulingManageViews=  JSON.parseArray(JSON.toJSONString(list), SchedulingManageView.class);
131
+        if (schedulingManageViews!=null && schedulingManageViews.size()>0)
132
+        {
133
+            for (SchedulingManageView item : schedulingManageViews) {
134
+                if (item.getClassId()!=null &&item.getClassId()>0)
135
+                {
136
+                    var SchedulingClass=schedulingClassService.getEntity(item.getClassId());
137
+                    if (SchedulingClass!=null)
138
+                    {
139
+                        item.setSchedulingClass(SchedulingClass);
140
+                    }
141
+                }
142
+            }
143
+        }
144
+        if (schedulingManageViews != null && schedulingManageViews.size() > 0) {
145
+            List<String> nameList = schedulingManageViews.stream()
146
+                    .map(SchedulingManageView::getSchedulingStaff)
147
+                    .distinct()
148
+                    .collect(Collectors.toList());
149
+            List<SchedulingManageUserView> views = new ArrayList<>();
150
+            if (nameList.size() > 0) {
151
+                for (String item : nameList) {
152
+                    SchedulingManageUserView view = new SchedulingManageUserView();
153
+                    view.setUserCode(item);
154
+                    if (StringHelper.isNotEmpty(view.getUserCode())) {
155
+                        view.setUserName(userMapper.selectName(view.getUserCode()));
156
+                    }
157
+                    List<SchedulingManageView> manages = schedulingManageViews.stream()
158
+                            .filter(x -> Objects.equals(x.getSchedulingStaff(), item))
159
+                            .collect(Collectors.toList());
160
+                    view.setManages(manages);
161
+                    views.add(view);
104 162
 
163
+                }
164
+            }
165
+            return Success("成功", views);
166
+        }
167
+        else
168
+        {
169
+            return Success("成功", schedulingManageViews);
170
+        }
171
+    }
105 172
     @ApiOperation("详情")
106 173
     @Log(title = "查询排班详情",businessType = BusinessType.QUERY)
107 174
     @GetMapping("/{id}")
@@ -143,6 +210,7 @@ public class SchedulingManageController extends BaseController {
143 210
         {
144 211
             return  Error("请选择排班人员");
145 212
         }
213
+        input.setDeptId(CurrentUser().getDeptId());
146 214
         input.setCreateUser(CurrentUser().getUserName());
147 215
         boolean result = schedulingmanageService.insert(input);
148 216
         if (result) {
@@ -256,9 +324,9 @@ public class SchedulingManageController extends BaseController {
256 324
     @ApiOperation("删除")
257 325
     @Log(title = "删除排班",businessType = BusinessType.DELETE)
258 326
     @DeleteMapping("/{ids}")
259
-    public AjaxResult delete(@PathVariable Long[] ids)  {
327
+    public AjaxResult delete(@PathVariable List<Long> ids)  {
260 328
         LambdaUpdateWrapper<SchedulingManage> qw = new LambdaUpdateWrapper<>();
261
-        qw.in(SchedulingManage::getId, ids);
329
+        qw.in(SchedulingManage::getSchedulingManageId, ids);
262 330
         qw.set(SchedulingManage::getIsDelete, 1);
263 331
         boolean result = schedulingmanageService.updateBatch(qw);
264 332
         if(result){

+ 2 - 2
ltrq-api/src/main/java/api/controller/scheduling/SchedulingRuleController.java

@@ -19,7 +19,7 @@ import java.util.Arrays;
19 19
 
20 20
 @Api(value = "自动排班",tags = "自动排班")
21 21
 @RestController
22
-@RequestMapping("/scheduling/schedulingrule")
22
+@RequestMapping("/scheduling/schedulingRule")
23 23
 public class SchedulingRuleController extends BaseController {
24 24
     @Autowired
25 25
     private ISchedulingRuleService schedulingruleService;
@@ -29,7 +29,7 @@ public class SchedulingRuleController extends BaseController {
29 29
     @GetMapping
30 30
     public AjaxResult getList(SchedulingRule input, PageInput pageInput) {
31 31
         LambdaQueryWrapper<SchedulingRule> qw = new LambdaQueryWrapper();
32
-        qw.eq(input.getRuleId() != null && input.getRuleId() > 0, SchedulingRule::getRuleId, input.getRuleId());
32
+        qw.eq(input.getSchedulingRuleId() != null && input.getSchedulingRuleId() > 0, SchedulingRule::getSchedulingRuleId, input.getSchedulingRuleId());
33 33
         qw.eq(input.getStartTime() != null , SchedulingRule::getStartTime, input.getStartTime());
34 34
         qw.eq(input.getEndTime() != null , SchedulingRule::getEndTime, input.getEndTime());
35 35
         qw.eq(input.getMaximumWork() != null && input.getMaximumWork() > 0, SchedulingRule::getMaximumWork, input.getMaximumWork());

+ 1 - 1
ltrq-entity/src/main/java/api/entity/database/scheduling/SchedulingClass.java

@@ -19,7 +19,7 @@ public class SchedulingClass {
19 19
     /** 班别id */
20 20
     @ApiModelProperty("班别id")
21 21
     @TableId(type = IdType.AUTO)
22
-    private Long classId;
22
+    private Long schedulingClassId;
23 23
     /** 班别名称 */
24 24
     @ApiModelProperty("班别名称")
25 25
     private String className;

+ 1 - 1
ltrq-entity/src/main/java/api/entity/database/scheduling/SchedulingManage.java

@@ -19,7 +19,7 @@ public class SchedulingManage {
19 19
     /** id */
20 20
     @ApiModelProperty("id")
21 21
     @TableId(type = IdType.AUTO)
22
-    private Long id;
22
+    private Long schedulingManageId;
23 23
     /** 排班日期 */
24 24
     @ApiModelProperty("排班日期")
25 25
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "UTC")

+ 4 - 1
ltrq-entity/src/main/java/api/entity/database/scheduling/SchedulingRule.java

@@ -19,7 +19,10 @@ public class SchedulingRule {
19 19
     /** 规则id */
20 20
     @ApiModelProperty("规则id")
21 21
     @TableId(type = IdType.AUTO)
22
-    private Long ruleId;
22
+    private Long schedulingRuleId;
23
+    /** 排班班别 */
24
+    @ApiModelProperty("自动排班名称")
25
+    private String name;
23 26
     /** 开始时间 */
24 27
     @ApiModelProperty("开始时间")
25 28
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")

+ 16 - 0
ltrq-entity/src/main/java/api/entity/input/scheduling/SchedulingManageInput.java

@@ -0,0 +1,16 @@
1
+package api.entity.input.scheduling;
2
+
3
+import api.entity.database.scheduling.SchedulingManage;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.Data;
6
+import org.springframework.format.annotation.DateTimeFormat;
7
+
8
+@Data
9
+public class SchedulingManageInput extends SchedulingManage {
10
+    /** 开始时间 */
11
+    @ApiModelProperty("开始时间")
12
+    private String startTime;
13
+    /** 结束时间 */
14
+    @ApiModelProperty("结束时间")
15
+    private String endTime;
16
+}

+ 21 - 0
ltrq-entity/src/main/java/api/entity/view/scheduling/SchedulingManageUserView.java

@@ -0,0 +1,21 @@
1
+package api.entity.view.scheduling;
2
+
3
+import api.entity.database.scheduling.SchedulingManage;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.Data;
6
+
7
+import java.util.List;
8
+
9
+@Data
10
+public class SchedulingManageUserView {
11
+    /** 创建人 */
12
+    @ApiModelProperty("name")
13
+    private String UserName;
14
+
15
+    /** 创建人 */
16
+    @ApiModelProperty("code")
17
+    private String userCode;
18
+    @ApiModelProperty("Manages")
19
+    private List<SchedulingManageView>  Manages;
20
+
21
+}

+ 5 - 0
ltrq-entity/src/main/java/api/entity/view/scheduling/SchedulingManageView.java

@@ -14,6 +14,11 @@ public class SchedulingManageView extends SchedulingManage {
14 14
     /** 创建人 */
15 15
     @ApiModelProperty("更新人名称")
16 16
     private String updateUserName;
17
+    /** 创建人 */
18
+    @ApiModelProperty("姓名")
19
+    private String schedulingStaffName;
20
+
21
+
17 22
 
18 23
     /** 班别名称 */
19 24
     @ApiModelProperty("班别")

+ 7 - 8
ltrq-service/src/main/java/api/service/scheduling/impl/SchedulingRuleServiceImpl.java

@@ -105,10 +105,10 @@ public class SchedulingRuleServiceImpl extends BaseServiceImpl<SchedulingRuleMap
105 105
                 var schedulingClass=schedulingClassService.getEntity(Long.parseLong(item));
106 106
                 if (schedulingClass!=null)
107 107
                 {
108
-                    int currentCount = shiftCount.get(schedulingClass.getClassId());
108
+                    int currentCount = shiftCount.get(schedulingClass.getSchedulingClassId());
109 109
                     int needed = (int) (schedulingClass.getMaximumPeople() - currentCount);
110 110
                     if (needed > 0) {
111
-                        assignShiftToEmployees(availableEmployees, currentDate, schedulingClass.getClassId(),
111
+                        assignShiftToEmployees(availableEmployees, currentDate, schedulingClass.getSchedulingClassId(),
112 112
                                 needed, UserSchedules, finalAssignments,
113 113
                                 shiftCount, constraint,current);
114 114
                     }
@@ -131,7 +131,7 @@ public class SchedulingRuleServiceImpl extends BaseServiceImpl<SchedulingRuleMap
131 131
         List<SchedulingManage> newManage = new ArrayList<>();
132 132
         for(SchedulingManage item :finalAssignments)
133 133
         {
134
-            if (item.getId()!=null&&item.getId()>0)
134
+            if (item.getSchedulingManageId()!=null&&item.getSchedulingManageId()>0)
135 135
             {
136 136
             }
137 137
             else
@@ -164,7 +164,7 @@ public class SchedulingRuleServiceImpl extends BaseServiceImpl<SchedulingRuleMap
164 164
         // 检查是否满足最低人数
165 165
         if (assigned < needed) {
166 166
             System.err.println("警告: " + date + " 班别 " + shiftType +
167
-                    " 无法满足最低人数需求 (" + needed + "/" + needed + ")");
167
+                    " 无法满足最低人数需求 (" + assigned + "/" + needed + ")");
168 168
         }
169 169
     }
170 170
     private void assignShift(User emp, Date date, Long shiftType,
@@ -185,7 +185,7 @@ public class SchedulingRuleServiceImpl extends BaseServiceImpl<SchedulingRuleMap
185 185
         manage.setSchedulingStaff(emp.getUserName());
186 186
         manage.setClassId(shiftType);
187 187
         manage.setDeptId(emp.getDeptId());
188
-        manage.setRuleId(constraint.getRuleId());
188
+        manage.setRuleId(constraint.getSchedulingRuleId());
189 189
         manage.setCreateUser(current.getUserName());
190 190
         return  manage;
191 191
     }
@@ -307,8 +307,7 @@ public class SchedulingRuleServiceImpl extends BaseServiceImpl<SchedulingRuleMap
307 307
         cal.set(Calendar.SECOND, 59); // 设置为周日最后一秒
308 308
         // 计算剩余天数(当前时间到周日结束)
309 309
         long diffMillis = cal.getTimeInMillis() - date.getTime();
310
-        int daysRemaining = (int) (diffMillis / (1000 * 60 * 60 * 24));
311
-        return  daysRemaining;
310
+        return (int) (diffMillis / (1000 * 60 * 60 * 24));
312 311
     }
313 312
 
314 313
     // 增强版班别选择(考虑人数限制)
@@ -321,7 +320,7 @@ public class SchedulingRuleServiceImpl extends BaseServiceImpl<SchedulingRuleMap
321 320
                     var schedulingClass=schedulingClassService.getEntity(Long.parseLong(shift));
322 321
                     if (schedulingClass!=null)
323 322
                     {
324
-                        return shiftCount.get(schedulingClass.getClassId()) < schedulingClass.getMaximumPeople();
323
+                        return shiftCount.get(schedulingClass.getSchedulingClassId()) < schedulingClass.getMaximumPeople();
325 324
                     }
326 325
                     return false;
327 326
                 })