Просмотр исходного кода

请假申请前端页面提交

chenjun 1 год назад
Родитель
Сommit
c24cf62902

+ 3 - 1
zjugis-business/src/main/java/com/zjugis/business/flow/leave/controller/LeaveController.java

@@ -14,6 +14,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -32,6 +33,7 @@ import static com.zjugis.framework.common.pojo.CommonResult.success;
 @Tag(name = "工作流程 - 请假申请")
 @RestController
 @RequestMapping("/Leave")
+@Validated
 public class LeaveController extends BaseController {
 
     @Resource
@@ -41,7 +43,7 @@ public class LeaveController extends BaseController {
 
     @WorkFlow(isReceiveMaterial = true, isReceiveOpinion = true)
     @ResponseBody
-    @RequestMapping("/index")
+    @GetMapping("/index")
     public String index(String activityTemplateId, String flowInstanceId, String userId) throws Exception {
         Map<String, Object> map = new HashMap<>();
         List<Select> leaveTypeList = SelectConvert.INSTANCE.convertList(dictDataApi.getDictDataList("WF_LEAVE_TYPE").getCheckedData());

+ 3 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/leave/controller/vo/LeaveBaseVO.java

@@ -45,4 +45,7 @@ public class LeaveBaseVO {
 
     @Schema(description = "请假小时")
     private Double leaveHours;
+
+    @Schema(description = "请假原因")
+    private String leaveReason;
 }

+ 5 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/leave/controller/vo/LeaveTimeBaseVO.java

@@ -1,6 +1,7 @@
 package com.zjugis.business.flow.leave.controller.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 
 import java.time.LocalDateTime;
 
@@ -9,6 +10,7 @@ import java.time.LocalDateTime;
  * @Date 2023/11/21 9:55
  * @Version 1.0
  */
+@Data
 public class LeaveTimeBaseVO {
 
     @Schema(description = "请假表ID", example = "90fdff67-4e6d-4270-aaf7-0359c20272cb")
@@ -22,4 +24,7 @@ public class LeaveTimeBaseVO {
 
     @Schema(description = "哺乳假类型(1:早上一小时;2:下午一小时)")
     private Integer breastfeedingType;
+
+    @Schema(description = "备注")
+    private String bz1;
 }

+ 5 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/leave/entity/LeaveDO.java

@@ -77,4 +77,9 @@ public class LeaveDO extends BaseEntity {
      * 请假小时
      */
     private Double leaveHours;
+
+    /**
+     * 请假原因
+     */
+    private String leaveReason;
 }

BIN
zjugis-business/src/main/resources/static/imgs/addIcon.png


BIN
zjugis-business/src/main/resources/static/imgs/form-wrap-title-icon.png


BIN
zjugis-business/src/main/resources/static/imgs/titleIcon.png


+ 206 - 150
zjugis-business/src/main/resources/templates/Leave/index.ftl

@@ -1,171 +1,227 @@
-<@w.workFlow javascripts=['/Leave/js/index.js']>
-    <div class="z-form-wrap" name="demoForm2">
-        <div class="form-wrap-title">
-            <i class="icon"></i>基本信息
-        </div>
-        <div class="z-form-row">
-            <div class="z-form-group z-col-30">
-                <div class="form-label">请假人</div>
-                <div class="form-item">
-                    <div class="z-comp-input z-readonly" name="demoForm1$field1">
-                        <input type="text" value="陈俊">
-                    </div>
-                </div>
+<@w.workFlow javascripts=['/Leave/js/index.js']
+styles=[ '../common/formCommon.css' ,'../timeSelector/TimeSelector.css' ]>
+    <div class="z-position form-boss" name="createReqVO">
+        <div class="form-title" style="margin-top: 0px;">
+            <div class="form-icon">
+                <img src="/imgs/titleIcon.png" alt="">
+                <span>基本信息</span>
             </div>
-            <div class="z-form-group z-col-40">
-                <div class="form-label">所在部门</div>
-                <div class="form-item">
-                    <div class="z-comp-input z-readonly" name="demoForm2$field2">
-                        <input type="text" value="自然资源产品部">
-                    </div>
-                </div>
-            </div>
-            <div class="z-form-group z-col-30">
-                <div class="form-label">请假单号</div>
-                <div class="form-item">
-                    <div class="z-comp-input z-readonly" name="demoForm2$field2">
-                        <input type="text" value="TEST1234">
-                    </div>
-                </div>
+            <div class="form-btn">
             </div>
         </div>
-        <div class="z-form-row">
-            <div class="z-form-group z-col-30">
-                <div class="form-label">申请时间</div>
-                <div class="form-item">
-                    <div class="z-comp-date z-readonly" name="demoForm2$field8">
-                        <input type="text" value="2023-10-10">
-                    </div>
-                </div>
-            </div>
-            <div class="z-form-group z-col-40">
-                <div class="form-label">申请时间</div>
-                <div class="form-item">
-                    <div class="z-comp-inputselect" name="demoForm2$field14"
-                         data='${leaveTypeJSON!}'>
-                        <div class="z-inputselect-bar">
-                            <input type="text" placeholder="请假类型"><i></i>
+        <div class="jbxx-box">
+            <table class="jbxx-table-info">
+                <tr>
+                    <td>
+                        <div class="form-label">请假人:</div>
+                    </td>
+                    <td>
+                        <div class="form-group">
+                            <div class="form-item">
+                                <div class="z-comp-input" name="createReqVO$userNickname">
+                                    <input type="text" value="张三">
+                                </div>
+                            </div>
                         </div>
-                    </div>
-                </div>
+                    </td>
+                    <td>
+                        <div class="form-label">所在部门:</div>
+                    </td>
+                    <td>
+                        <div class="form-group">
+                            <div class="form-item">
+                                <div class="z-comp-input" name="createReqVO$deptName">
+                                    <input type="text" value="自然资源产品部">
+                                </div>
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>
+                        <div class="form-label">申请时间:</div>
+                    </td>
+                    <td>
+                        <div class="form-group">
+                            <div class="z-comp-date z-readonly" name="createReqVO$createTime">
+                                <input type="text" value="">
+                            </div>
+                        </div>
+                    </td>
+                    <td>
+                        <div class="form-label">请假单号:</div>
+                    </td>
+                    <td>
+                        <div class="form-group">
+                            <div class="form-item">
+                                <div class="z-comp-input" name="createReqVO$leaveNo">
+                                    <input type="text" value="张三">
+                                </div>
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>
+                        <div class="form-label">休假类型:</div>
+                    </td>
+                    <td>
+                        <div class="form-group">
+                            <div class="form-item">
+                                <div class="z-comp-inputselect" name="createReqVO$leaveType"
+                                     data='${leaveTypeJSON!}'>
+                                    <div class="z-inputselect-bar">
+                                        <input type="text"><i></i>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </td>
+                    <td>
+                        <div class="form-label">休假天数:</div>
+                    </td>
+                    <td>
+                        <div class="form-group">
+                            <div class="form-item">
+                                <div class="z-comp-input" name="createReqVO$leaveHours">
+                                    <input type="number" value="陈俊">
+                                </div>
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>
+                        <div class="form-label">请假原因:</div>
+                    </td>
+                    <td colspan="3">
+                        <div class="form-group">
+                            <div class="form-item" style="margin: 10px 0;">
+                                <div class="z-comp-textarea" name="createReqVO$leaveReason">
+                                    <textarea></textarea>
+                                </div>
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+            </table>
+        </div>
+        <div class="form-title">
+            <div class="form-icon">
+                <img src="/imgs/titleIcon.png" alt="">
+                <span>请假时间信息</span>
             </div>
-            <div class="z-form-group z-col-30">
-                <div class="form-label">请假天数</div>
-                <div class="form-item">
-                    <div class="z-comp-input z-readonly" name="demoForm2$field2">
-                        <input type="text" value="0">
-                    </div>
+            <div class="form-btn">
+                <div>
+                    <img src="/imgs/addIcon.png" alt="">
+                    <span>新增</span>
                 </div>
             </div>
         </div>
-        <div class="form-wrap-title">
-            <i class="icon"></i> 请假时间信息
-        </div>
-        <div class="table-wrap">
-            <button type="button" class="addTableTrHandle">新增1</button>
-            <table>
-                <thead>
+        <div class="qjsjxx-box">
+            <table class="form-table-info">
+                <tr>
+                    <td>序号</td>
+                    <td style="width: 30%;">起始时间</td>
+                    <td style="width: 30%;">截止时间</td>
+                    <td>备注</td>
+                    <td>操作</td>
+                </tr>
                 <tr>
-                    <th>序号</th>
-                    <th>起始时间</th>
-                    <th>截止时间</th>
-                    <th>备注</th>
-                    <th>操作</th>
+                    <td> 1</td>
+                    <td>
+                        <div class="form-flex">
+                            <div class="form-item" style="width: 50%;margin-right: 5px;">
+                                <div class="z-comp-date" name="LeaveTimeDO[0]$startTime">
+                                    <input type="text" value="2015-05-03">
+                                </div>
+                            </div>
+                            <div style="width: 50%;margin-left: 5px;" class="dateTimeRange dateTimeRange1">
+                            </div>
+                            <span class="nbsp"> - </span>
+                        </div>
+                    </td>
+                    <td>
+                        <div class="form-flex">
+                            <div class="form-item" style="width: 50%;margin-right: 5px;">
+                                <div class="z-comp-date" name="LeaveTimeDO[0]$endTime">
+                                    <input type="text" value="2015-05-03">
+                                </div>
+                            </div>
+                            <div style="width: 50%;margin-left: 5px;" class="dateTimeRange dateTimeRange2">
+                            </div>
+                        </div>
+                    </td>
+                    <td>
+                        <div class="form-item">
+                            <div class="z-comp-input" name="LeaveTimeDO[0]$bz1">
+                                <input type="text" value="111111">
+                            </div>
+                        </div>
+                    </td>
+                    <td>
+                        <div class="table-btn">
+                            <span>删除</span>
+                        </div>
+                    </td>
                 </tr>
-                </thead>
-                <tbody class="table-wrap-tbody">
                 <tr>
-                    <td>1</td>
+                    <td> 2</td>
+                    <td>
+                        <div class="form-flex">
+                            <div class="form-item" style="width: 50%;margin-right: 5px;">
+                                <div class="z-comp-date" name="LeaveTimeDO[1]$startTime">
+                                    <input type="text" value="2023-05-03">
+                                </div>
+                            </div>
+                            <div style="width: 50%;margin-left: 5px;" class="dateTimeRange dateTimeRange1">
+                            </div>
+                            <span class="nbsp"> - </span>
+                        </div>
+                    </td>
+                    <td>
+                        <div class="form-flex">
+                            <div class="form-item" style="width: 50%;margin-right: 5px;">
+                                <div class="z-comp-date" name="LeaveTimeDO[1]$endTime">
+                                    <input type="text" value="2023-05-03">
+                                </div>
+                            </div>
+                            <div style="width: 50%;margin-left: 5px;" class="dateTimeRange dateTimeRange2">
+                            </div>
+                        </div>
+                    </td>
                     <td>
-                        <div class="z-comp-date" name="demoForm1$field8">
-                            <input type="text" value="2015-05-03">
+                        <div class="form-item">
+                            <div class="z-comp-input" name="LeaveTimeDO[1]$bz1">
+                                <input type="text" value="2222">
+                            </div>
                         </div>
                     </td>
                     <td>
-                        <div class="z-comp-date" name="demoForm1$field8">
-                            <input type="text" value="2015-05-03">
+                        <div class="table-btn">
+                            <span>删除</span>
                         </div>
                     </td>
                 </tr>
-                </tbody>
             </table>
         </div>
     </div>
-</@w.workFlow>
-<style type="text/css">
-    .form-wrap-title {
-        font-size: 18px;
-        color: #2D333C;
-        font-weight: bold;
-        display: flex;
-        align-items: center;
-        padding: 10px;
-    }
-    .form-wrap-title>i {
-        width: 18px;
-        height: 18px;
-        margin-right: 5px;
-        background: url("./imgs/form-wrap-title-icon.png") no-repeat;
-        background-size: 100% 100%;
-    }
-    .form-group {
-    }
-    .form-label {
-        color: #404956;
-        font-size: 16px;
-    }
-    .form-item {
-        margin: 10px 0px;
-    }
-    .form-group .form-label {
-        margin-bottom: 10px;
-    }
-    .form-item input[type=text],
-    .form-item input[type=number],
-    .form-item textarea,
-    .form-item .z-comp-input,
-    .form-item .z-radio-item,
-    .form-item .z-comp-inputsearch,
-    .form-item .z-comp-inputselect,
-    .form-item .z-comp-select,
-    .form-item .z-comp-select .z-inputselect-bar>span,
-    .form-item .z-comp-selectsearch,
-    .form-item .z-comp-selecttree,
-    .form-item .z-checkbox-item,
-    .form-item .z-comp-textarea,
-    .form-item .z-selecttree {
-        font-size: 16px;
-        color: #121518;
-    }
-    .form-item .z-readonly,
-    .form-item .z-readonly input,
-    .form-item .z-readonly textarea {
-        background: #F5F5F5;
-    }
-    /** 表格样式 **/
-    .table-wrap table {
-        margin-top: 10px;
-        width: 100%;
-        border-collapse: collapse;
-    }
-    .table-wrap thead {
-        background: #F2F4F8;
-    }
-    .table-wrap tr {
-        border: 1px solid #E8EBF1;
-    }
-    .table-wrap th {
-        font-weight: 500;
-        font-size: 16px;
-        color: #505A69;
-    }
-    .table-wrap table th,
-    .table-wrap table td {
-        padding: 5px 10px;
-        font-size: 16px;
-    }
-
-    .table-wrap table td input {
-        font-size: 16px;
-    }
-</style>
+    <script language="javascript" src="../timeSelector/TimeSelector.js"></script>
+    <script language="javascript">
+        ;
+        (function () {
+            timeSelector({
+                ele: ".dateTimeRange1",
+                callback: function (val) {
+                }
+            })
+            timeSelector({
+                ele: ".dateTimeRange2",
+                callback: function (val) {
+                }
+            })
+        })();
+    </script>
+    <style type="text/css">
+    </style>
+</@w.workFlow>

+ 35 - 71
zjugis-business/src/main/resources/templates/Leave/js/index.js

@@ -1,84 +1,48 @@
 (function () {
     window.onload = function (ex) {
+        var postData = z.ui.form.getFormFields($("[name=createReqVO]"));
+        if (postData == false) return;
+        postData.createReqVO.instanceId = z.ui.comm.getUrlParam("flowInstanceId");
+        var leaveTimeCreateList = new Array()
+        for (let key of Object.keys(postData)) {
+            let mealName = postData[key];
+            if(key.startsWith("LeaveTimeDO")){
+                leaveTimeCreateList.push(z.ui.form.childStringify(mealName));
+            }
+        }
+        postData.createReqVO.leaveTimeCreateList = leaveTimeCreateList;
+        console.log(postData.createReqVO);
         bindEvents();
-        initLeaveTimeGrid();
     }
 
-    //初始化请假时间列表
-    function initLeaveTimeGrid() {
-        var leaveId = $("[name='ywNzyzp$id']").val();
-        var postData = {entity: {leaveId: leaveId}};
-        z.ui.jqgrid("[name=leave_time_list]").init({
-            pagination: false,
-            height: 40,
-            rowList: [10, 20, 50],
-            shrinkToFit: true,//设置表格自适应
-            url: '',//组件创建完成之后请求数据的url
-            postData: z.ui.form.childStringify(postData),
-            colModel: [
-                {name: "id", hidden: true, key: true},
-                {name: "leaveId", hidden: true},
-                {
-                    label: '序号',
-                    name: "ypzpcmc",
-                    align: "center",
-                    width: 160,
-                    editable: true
-                },
-                {
-                    label: '起始时间',
-                    name: "pzwh",
-                    align: "center",
-                    width: 160,
-                    editable: true,
-                },
-                {
-                    label: '截止时间',
-                    name: "nzyzsqkmc",
-                    align: "center",
-                    width: 160,
-                    editable: true,
-                },
-                {
-                    label: '备注',
-                    name: "nzymj",
-                    align: "center",
-                    width: 160,
-                    editable: true,
-                },
-                {
-                    label: "操作",
-                    name: 'action',
-                    align: "center",
-                    width: 60,
-                    buttons: [
-                        {
-                            label: "删除",
-                            className: "btn btn-danger",
-                            onClick: function (rowObject, rowindex, link) {
-                                z.ui.confirm("confirm").init({
-                                    content: '确定删除当前行吗?',
-                                    onCancel: function () {
 
-                                    },
-                                    onConfirm: function () {
-                                        deleteYdqk(rowObject.id);
-                                        var rowid = $(this).attr("rowid");
-                                        z.ui.jqgrid("[name=ydqk_list]").delRowData(rowid);
-                                    },
-                                })
-                            }
-                        }
-                    ]
-                }
-            ]
-        });
-    }
 
     //注册业务保存事件
     function bindEvents() {
-
+        z.workflow.saveBtn.addListener("onSaveClick", saveForm);
     }
 
+    /*
+	* all 工作流js传递到业务的参数 success执行的方法
+	* istransfer 工作流js传递到业务的参数 是否转件
+	* */
+    function saveForm(all, istransfer) {
+        alert(1);
+        var postData = z.ui.form.getFormFields($("[name=createReqVO]"));
+        if (postData == false) return;
+        postData.createReqVO.instanceId = z.ui.comm.getUrlParam("flowInstanceId");
+        console.log(postData);
+        all({success: true});
+        // z.ui.ajax({
+        // 	url: "/WorkFlow/formSave",
+        // 	data: z.ui.form.childStringify(postData),
+        // 	success: function () {
+        // 		all({success: true});
+        // 	},
+        // 	error: function () {
+        // 		all({success: false});
+        // 	}
+        // })
+    }
 
 }());

+ 2 - 2
zjugis-framework/zjugis-spring-boot-starter-web/src/main/java/com/zjugis/framework/swagger/config/ZjugisSwaggerAutoConfiguration.java

@@ -116,7 +116,7 @@ public class ZjugisSwaggerAutoConfiguration {
     public static GroupedOpenApi buildGroupedOpenApi(String group, String path) {
         return GroupedOpenApi.builder()
                 .group(group)
-                .pathsToMatch("/admin-api/" + path + "/**", "/app-api/" + path + "/**")
+                .pathsToMatch("/admin-api/" + path + "/**", "/app-api/" + path + "/**", path + "/**")
                 .addOperationCustomizer((operation, handlerMethod) -> operation
                         .addParametersItem(buildTenantHeaderParameter())
                         .addParametersItem(buildSecurityHeaderParameter()))
@@ -148,7 +148,7 @@ public class ZjugisSwaggerAutoConfiguration {
                 .name(HttpHeaders.AUTHORIZATION) // header 名
                 .description("认证 Token") // 描述
                 .in(String.valueOf(SecurityScheme.In.HEADER)) // 请求 header
-                .schema(new StringSchema()._default("Bearer test1").name(HEADER_TENANT_ID).description("认证 Token")); // 默认:使用用户编号为 1
+                .schema(new StringSchema()._default("Bearer testdc794fe0-66fe-4b1d-9273-f747950b27c3").name(HEADER_TENANT_ID).description("认证 Token")); // 默认:使用用户编号为 1
     }
 
 }

+ 33 - 22
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/attendance/AttendanceSheetServiceImpl.java

@@ -239,7 +239,7 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
                 //第一次打卡时间在下午下班打卡时间之后
                 if (morningSheetDO.getAttendanceTime().toLocalTime().compareTo(finishPmFlag) >= 0) {
                     afternoonSheetDO = buildAttendanceSheet(adminUserRespDTO, adminUserRespDTO.getUsername(), lastRecord, ATTENDANCE_STATUS_ABSENT, ATTENDANCE_TYPE_PM, null, year, month, day);
-                }else{
+                } else {
                     //最后一次打卡时间在下午上班时间之前算旷工
                     afternoonSheetDO = getAttendanceAfternoonSheetDO(normalTimePm, finishPmFlag, adminUserRespDTO.getUsername(), lastRecord, adminUserRespDTO, year, month, day);
                 }
@@ -370,42 +370,52 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
             Instant instant = parse.toInstant();
             ZoneId zoneId = ZoneId.systemDefault();
             LocalDateTime dateTime = instant.atZone(zoneId).toLocalDateTime();
-            updateOneDaySheet(dateTime,attendanceRecordDOS);
+            updateOneDaySheet(dateTime, attendanceRecordDOS);
         });
     }
 
+    private boolean localTimeIsIn(LocalTime localTime, LocalTime startTime, LocalTime endTime) {
+        return localTime.compareTo(startTime) >= 0 && localTime.compareTo(endTime) <= 0;
+    }
+
     @Override
     public void updateByWorkflow(String userId, Integer attendanceStatus, List<LocalDateTime[]> leaveTimeList) {
+        //早上上班时间
+        String morningTime = configApi.getConfigKey("adm.morningTime").getCheckedData();
         //早上下班时间
         String morningFinishTime = configApi.getConfigKey("adm.morningFinishTime").getCheckedData();
+        //下午上班时间
+        String afternoonTime = configApi.getConfigKey("adm.afternoonTime").getCheckedData();
         //下午下班时间
         String afternoonFinishTime = configApi.getConfigKey("adm.afternoonFinishTime").getCheckedData();
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
+        LocalTime normalTimeAm = LocalTime.parse(morningTime, formatter);
         LocalTime finishAmFlag = LocalTime.parse(morningFinishTime, formatter);
+        LocalTime normalTimePm = LocalTime.parse(afternoonTime, formatter);
         LocalTime finishPmFlag = LocalTime.parse(afternoonFinishTime, formatter);
         leaveTimeList.forEach(localDateTimes -> {
             LocalDateTime startTime = localDateTimes[0];
             LocalDateTime endTime = localDateTimes[1];
             //请假时间段在同一天
-            if(LocalDateTimeUtil.isSameDay(startTime,endTime)){
-                //请假开始时间在早上下班之前,结束时间在早上下班之前,请假状态修改当天早上考勤状态
-                if (startTime.toLocalTime().compareTo(finishAmFlag) <= 0 && endTime.toLocalTime().compareTo(finishAmFlag) <=0){
+            if (LocalDateTimeUtil.isSameDay(startTime, endTime)) {
+                //请假开始时间在早上上下班之间,结束时间在早上上下班之间,请假状态修改当天早上考勤状态
+                if (localTimeIsIn(startTime.toLocalTime(), normalTimeAm, finishAmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimeAm, finishAmFlag)) {
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_AM);
                 }
                 //请假开始时间在早上下班之前,结束时间在下午下班之前,请假状态修改当天早上、下午考勤状态
-                if (startTime.toLocalTime().compareTo(finishAmFlag) <= 0 && endTime.toLocalTime().compareTo(finishPmFlag) <=0){
+                if (localTimeIsIn(startTime.toLocalTime(), normalTimeAm, finishAmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimePm, finishPmFlag)) {
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_AM);
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_PM);
                 }
                 //请假开始时间在下午下班之前,结束时间在下午下班之前,请假状态修改当天下午考勤状态
-                if (startTime.toLocalTime().compareTo(finishPmFlag) <= 0 && endTime.toLocalTime().compareTo(finishPmFlag) <=0){
+                if (localTimeIsIn(startTime.toLocalTime(), normalTimePm, finishPmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimePm, finishPmFlag)) {
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_AM);
                 }
-            }else{
+            } else {
                 //请假开始时间在早上下班之前,结束时间在早上下班之前,请假状态修改多天(1~n)全天考勤状态和结束日期当天早上考勤状态
-                if (startTime.toLocalTime().compareTo(finishAmFlag) <= 0 && endTime.toLocalTime().compareTo(finishAmFlag) <=0){
+                if (localTimeIsIn(startTime.toLocalTime(), normalTimePm, finishPmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimeAm, finishAmFlag)) {
                     LocalDateTime flagTime = startTime;
-                    while(LocalDateTimeUtil.isSameDay(flagTime,endTime)){
+                    while (LocalDateTimeUtil.isSameDay(flagTime, endTime)) {
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_AM);
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_PM);
                         flagTime = startTime.plusDays(1);
@@ -413,18 +423,18 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_AM);
                 }
                 //请假开始时间在早上下班之前,结束时间在下午下班之前,请假状态修改多天(1~n)全天考勤状态
-                if (startTime.toLocalTime().compareTo(finishAmFlag) <= 0 && endTime.toLocalTime().compareTo(finishPmFlag) <=0){
+                if (localTimeIsIn(startTime.toLocalTime(), normalTimePm, finishPmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimePm, finishPmFlag)) {
                     LocalDateTime flagTime = startTime;
-                    while(LocalDateTimeUtil.isSameDay(flagTime,endTime)){
+                    while (LocalDateTimeUtil.isSameDay(flagTime, endTime)) {
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_AM);
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_PM);
                         flagTime = startTime.plusDays(1);
                     }
                 }
                 //请假开始时间在下午下班之前,结束时间在下午下班之前,请假状态修改修改多天(1~n)全天考勤状态和起始日期当天下午考勤状态
-                if (startTime.toLocalTime().compareTo(finishPmFlag) <= 0 && endTime.toLocalTime().compareTo(finishPmFlag) <=0){
+                if (localTimeIsIn(startTime.toLocalTime(), normalTimePm, finishPmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimePm, finishPmFlag)) {
                     LocalDateTime flagTime = startTime;
-                    while(LocalDateTimeUtil.isSameDay(flagTime,endTime)){
+                    while (LocalDateTimeUtil.isSameDay(flagTime, endTime)) {
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_AM);
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_PM);
                         flagTime = startTime.plusDays(1);
@@ -432,10 +442,10 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
                     updateSheet(userId, attendanceStatus, startTime, ATTENDANCE_TYPE_AM);
                 }
                 //请假开始时间在下午下班之前,结束时间在早上下班之前,请假状态修改多天(0~n)全天考勤状态和结束日期当天早上考勤状态和起始日期当天下午考勤状态
-                if (startTime.toLocalTime().compareTo(finishPmFlag) <= 0 && endTime.toLocalTime().compareTo(finishAmFlag) <=0){
+                if (localTimeIsIn(startTime.toLocalTime(), normalTimePm, finishPmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimeAm, finishAmFlag)) {
                     updateSheet(userId, attendanceStatus, startTime, ATTENDANCE_TYPE_PM);
                     LocalDateTime flagTime = startTime.plusDays(1);
-                    while(LocalDateTimeUtil.isSameDay(flagTime,endTime)){
+                    while (LocalDateTimeUtil.isSameDay(flagTime, endTime)) {
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_AM);
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_PM);
                         flagTime = startTime.plusDays(1);
@@ -453,6 +463,7 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
 
     /**
      * 更新某一天考勤记录
+     *
      * @param dateTime
      * @param attendanceRecordDOS
      */
@@ -486,17 +497,17 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
             AttendanceRecordDO lastRecord = attendanceRecordList.get(attendanceRecordList.size() - 1);
             //计算早上考勤记录
             //第一次打卡时间在上班时间+不计入迟到时间之前
-            AttendanceSheetDO morningSheetDO = getAttendanceMorningSheetDO(normalTimeAm, lateFlag, finishAmFlag, firstRecord.getUsername().replace("'",""), firstRecord, null, year, month, day);
+            AttendanceSheetDO morningSheetDO = getAttendanceMorningSheetDO(normalTimeAm, lateFlag, finishAmFlag, firstRecord.getUsername().replace("'", ""), firstRecord, null, year, month, day);
             //计算下午考勤记录
             //最后一次打卡时间在下午上班时间之前算旷工
-            AttendanceSheetDO afternoonSheetDO = getAttendanceAfternoonSheetDO(normalTimePm, finishPmFlag, lastRecord.getUsername().replace("'",""), lastRecord, null, year, month, day);
+            AttendanceSheetDO afternoonSheetDO = getAttendanceAfternoonSheetDO(normalTimePm, finishPmFlag, lastRecord.getUsername().replace("'", ""), lastRecord, null, year, month, day);
             attendanceSheetDOList.add(morningSheetDO);
             attendanceSheetDOList.add(afternoonSheetDO);
         });
         for (AttendanceSheetDO sheetDO : list) {
             for (AttendanceSheetDO updateSheetDO : attendanceSheetDOList) {
                 //用户工号和考勤类型一样做修改
-                if(sheetDO.getAttendanceType().equals(updateSheetDO.getAttendanceType()) &&sheetDO.getUsername().equals(updateSheetDO.getUsername())){
+                if (sheetDO.getAttendanceType().equals(updateSheetDO.getAttendanceType()) && sheetDO.getUsername().equals(updateSheetDO.getUsername())) {
                     sheetDO.setAttendanceTime(updateSheetDO.getAttendanceTime()).setAttendanceStatus(updateSheetDO.getAttendanceStatus()).setOtherMinute(updateSheetDO.getOtherMinute());
                     sheetDO.setUpdateTime(null);
                     sheetDO.setUpdater(null);
@@ -504,7 +515,7 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
                 }
             }
         }
-        if(CollUtil.isNotEmpty(updateList)){
+        if (CollUtil.isNotEmpty(updateList)) {
             attendanceSheetMapper.updateBatch(updateList);
         }
     }
@@ -530,12 +541,12 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
 
     private AttendanceSheetDO buildAttendanceSheet(AdminUserRespDTO user, String username, AttendanceRecordDO firstRecord, Integer attendanceStatus, Integer attendanceType, Integer otherMinute, int year, int month, int day) {
         AttendanceSheetDO sheetDO = new AttendanceSheetDO();
-        if(user!=null){
+        if (user != null) {
             sheetDO.setUserId(user.getId());
             sheetDO.setDeptId(user.getDeptId());
             sheetDO.setNickname(user.getNickname());
         }
-        if(StringUtils.isNotBlank(username)){
+        if (StringUtils.isNotBlank(username)) {
             sheetDO.setUsername(username);
         }
         sheetDO.setAttendanceTime(firstRecord.getStrutime());