2
0

2 Коммиты 2e4bca440f ... 73ecd71710

Автор SHA1 Сообщение Дата
  QuYueTing 73ecd71710 Merge branch 'master' of http://47.100.37.243:10191/quyueting/manHourHousekeeper 2 недель назад
  QuYueTing 855de1fc82 修改餐补的夜班补贴判断条件,type=5也算是夜班补贴 2 недель назад

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/OvertimeAllowanceController.java

@@ -775,7 +775,7 @@ public class OvertimeAllowanceController {
                         case 5:
                             typeStr = "白班";
                             crossMidnightStr = "是";
-                            comment = "加班过凌晨4点,餐补 50 元";
+                            comment = "加班过凌晨4点,夜班补贴 50 元";
                             break;
                         default:
                             comment = String.valueOf(allowance.getType());

+ 59 - 63
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -1564,75 +1564,71 @@ public class ReportController {
             }
         }
 
-        if (!abnormalTime) {//非异常填报,需要校验加班时长
-            //校验工作时长
-            for (Report report : reportList) {
-                if (report.getIsOvertime() != null && report.getIsOvertime() == 1) {
-                    if (report.getOvertimeHours() <= 0) {
-                        HttpRespMsg httpRespMsg = new HttpRespMsg();
-                        //httpRespMsg.setError("加班时长必须大于0");
-                        httpRespMsg.setError(MessageUtils.message("profession.workDurationError"));
-                        return httpRespMsg;
-                    } else if ((report.getOvertimeHours() - report.getWorkingTime() > 0.1)) {
+        //校验工作时长
+        for (Report report : reportList) {
+            if (report.getIsOvertime() != null && report.getIsOvertime() == 1) {
+                if (report.getOvertimeHours() <= 0) {
+                    HttpRespMsg httpRespMsg = new HttpRespMsg();
+                    //httpRespMsg.setError("加班时长必须大于0");
+                    httpRespMsg.setError(MessageUtils.message("profession.workDurationError"));
+                    return httpRespMsg;
+                } else if ((report.getOvertimeHours() - report.getWorkingTime() > 0.1)) {
+                    HttpRespMsg httpRespMsg = new HttpRespMsg();
+                    DecimalFormat decimalFormat = new DecimalFormat("0.0");
+                    decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
+                    //httpRespMsg.setError("加班时长("+report.getOvertimeHours()+"h)不能超过工作时长("+report.getWorkingTime()+"h)");
+                    httpRespMsg.setError(MessageUtils.message("profession.OvertimeHoursError",decimalFormat.format(report.getOvertimeHours()),
+                            decimalFormat.format(report.getWorkingTime())));
+                    return httpRespMsg;
+                }
+            }
+        }
+        //如果开启了加班时长校验
+        if(comTimeType.getFillOvertime()==1){
+            if (comTimeType.getWorkOvertimeNeedCheck()==1) {
+                for (Report report : reportList) {
+                    if(WorkDayCalculateUtils.isWorkDay(report.getCreateDate())){
                         HttpRespMsg httpRespMsg = new HttpRespMsg();
-                        DecimalFormat decimalFormat = new DecimalFormat("0.0");
-                        decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
-                        //httpRespMsg.setError("加班时长("+report.getOvertimeHours()+"h)不能超过工作时长("+report.getWorkingTime()+"h)");
-                        httpRespMsg.setError(MessageUtils.message("profession.OvertimeHoursError",decimalFormat.format(report.getOvertimeHours()),
-                                decimalFormat.format(report.getWorkingTime())));
-                        return httpRespMsg;
+                        double sum = reportList.stream().filter(rl -> rl.getCreateDate().equals(report.getCreateDate()) && rl.getCreatorId().equals(report.getCreatorId())).mapToDouble(Report::getWorkingTime).sum();
+                        BigDecimal bigDecimal = new BigDecimal(sum);
+                        bigDecimal=bigDecimal.subtract(new BigDecimal(comTimeType.getAllday()));
+                        if(report.getOvertimeHours() != null && report.getOvertimeHours()>0 && report.getOvertimeHours()-bigDecimal.doubleValue() > 0.001){
+                            httpRespMsg.setError("加班时长不得超过总工作时长("+sum+"h)-正常工作时长"+(comTimeType.getAllday())+"h");
+                            return httpRespMsg;
+                        }
                     }
                 }
             }
-            //如果开启了加班时长校验
-            if(comTimeType.getFillOvertime()==1){
-                if (comTimeType.getWorkOvertimeNeedCheck()==1) {
-                    for (Report report : reportList) {
-                        if(WorkDayCalculateUtils.isWorkDay(report.getCreateDate())){
-                            HttpRespMsg httpRespMsg = new HttpRespMsg();
-                            double sum = reportList.stream().filter(rl -> rl.getCreateDate().equals(report.getCreateDate()) && rl.getCreatorId().equals(report.getCreatorId())).mapToDouble(Report::getWorkingTime).sum();
-                            BigDecimal bigDecimal = new BigDecimal(sum);
-                            bigDecimal=bigDecimal.subtract(new BigDecimal(comTimeType.getAllday()));
-                            if(report.getOvertimeHours() != null && report.getOvertimeHours()>0 && report.getOvertimeHours()-bigDecimal.doubleValue() > 0.001){
-                                httpRespMsg.setError("加班时长不得超过总工作时长("+sum+"h)-正常工作时长"+(comTimeType.getAllday())+"h");
+            //校验加班时长是否超过打卡中的加班时长
+            if (draft == 0 && comTimeType.getVerifyCardOvertime() == 1) {//包括周末也要提交加班申请单才行
+                User curReporter = userMapper.selectById(reportList.get(0).getCreatorId());
+                for (Report report : reportList) {
+                    HttpRespMsg httpRespMsg = new HttpRespMsg();
+                    double overTimeSum = reportList.stream().filter(rl -> rl.getCreateDate().equals(report.getCreateDate()) && rl.getCreatorId().equals(report.getCreatorId())).mapToDouble(Report::getOvertimeHours).sum();
+                    UserCorpwxTime userCorpwxTime = userCorpwxTimeMapper.selectOne(new QueryWrapper<UserCorpwxTime>().ne("ot_status", 0).eq("corpwx_userid", curReporter.getCorpwxUserid()).eq("create_date", report.getCreateDate()));
+                    if(overTimeSum > 0){
+                        double allowMoreThan = (company.getId() == Constant.XI_HE_CHAO_DAO_COMPANY_ID || company.getId() == Constant.XI_HE_CHAO_DAO_JIA_XING_COMPANY_ID) ? 2.001 : 0.001;//允许超过打卡中的加班时长的范围
+                        if (company.getPackageOvertime() == 1) {//启用了加班管理模块,去校验加班申请的时长
+                            Overtime overtime = overtimeMapper.selectOne(new QueryWrapper<Overtime>().select("sum(duration) as duration").eq("user_id", curReporter.getId()).eq("date", report.getCreateDate()).eq("status", 2));
+                            if (overtime == null) {
+                                httpRespMsg.setError("尚无审核通过的加班单");
                                 return httpRespMsg;
+                            } else {
+                                System.out.println("加班申请时长=="+overtime.getDuration());
+                                double applyOvertime = 1.0*overtime.getDuration()/3600;//转化为小时
+                                if (overTimeSum - applyOvertime > allowMoreThan) {
+                                    httpRespMsg.setError("填报加班时长不得超过加班申请时长("+applyOvertime+"h)" + (allowMoreThan > 0.001? "+2h" : ""));
+                                    return httpRespMsg;
+                                }
                             }
-                        }
-                    }
-                }
-                //校验加班时长是否超过打卡中的加班时长
-                if (draft == 0 && comTimeType.getVerifyCardOvertime() == 1) {
-                    User curReporter = userMapper.selectById(reportList.get(0).getCreatorId());
-                    for (Report report : reportList) {
-                        if(WorkDayCalculateUtils.isWorkDay(report.getCreateDate())){
-                            HttpRespMsg httpRespMsg = new HttpRespMsg();
-                            double overTimeSum = reportList.stream().filter(rl -> rl.getCreateDate().equals(report.getCreateDate()) && rl.getCreatorId().equals(report.getCreatorId())).mapToDouble(Report::getOvertimeHours).sum();
-                            UserCorpwxTime userCorpwxTime = userCorpwxTimeMapper.selectOne(new QueryWrapper<UserCorpwxTime>().ne("ot_status", 0).eq("corpwx_userid", curReporter.getCorpwxUserid()).eq("create_date", report.getCreateDate()));
-                            if(overTimeSum > 0){
-                                double allowMoreThan = (company.getId() == Constant.XI_HE_CHAO_DAO_COMPANY_ID || company.getId() == Constant.XI_HE_CHAO_DAO_JIA_XING_COMPANY_ID) ? 2.001 : 0.001;//允许超过打卡中的加班时长的范围
-                                if (company.getPackageOvertime() == 1) {//启用了加班管理模块,去校验加班申请的时长
-                                    Overtime overtime = overtimeMapper.selectOne(new QueryWrapper<Overtime>().select("sum(duration) as duration").eq("user_id", curReporter.getId()).eq("date", report.getCreateDate()).ne("status", -1).ne("status", 3).ne("status", 4));
-                                    if (overtime == null) {
-                                        httpRespMsg.setError("尚无审核通过的加班单");
-                                        return httpRespMsg;
-                                    } else {
-                                        System.out.println("加班申请时长=="+overtime.getDuration());
-                                        double applyOvertime = 1.0*overtime.getDuration()/3600;//转化为小时
-                                        if (overTimeSum - applyOvertime > allowMoreThan) {
-                                            httpRespMsg.setError("填报加班时长不得超过加班申请时长("+applyOvertime+"h)" + (allowMoreThan > 0.001? "+2h" : ""));
-                                            return httpRespMsg;
-                                        }
-                                    }
-                                } else {
-                                    if (userCorpwxTime == null || userCorpwxTime.getOtTime() == 0) {
-                                        httpRespMsg.setError("未同步到企微加班时长,请先补填加班申请");
-                                        return httpRespMsg;
-                                    } else {
-                                        if (overTimeSum - userCorpwxTime.getOtTime() > allowMoreThan) {
-                                            httpRespMsg.setError("填报加班时长("+overTimeSum+"h)不得超过考勤加班时长("+userCorpwxTime.getOtTime()+"h)" + (allowMoreThan > 0.001? "+2h" : ""));
-                                            return httpRespMsg;
-                                        }
-                                    }
+                        } else {
+                            if (userCorpwxTime == null || userCorpwxTime.getOtTime() == 0) {
+                                httpRespMsg.setError("未同步到企微加班时长,请先补填加班申请");
+                                return httpRespMsg;
+                            } else {
+                                if (overTimeSum - userCorpwxTime.getOtTime() > allowMoreThan) {
+                                    httpRespMsg.setError("填报加班时长("+overTimeSum+"h)不得超过考勤加班时长("+userCorpwxTime.getOtTime()+"h)" + (allowMoreThan > 0.001? "+2h" : ""));
+                                    return httpRespMsg;
                                 }
                             }
                         }

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -3497,8 +3497,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                 httpRespMsg.setError("您无权审核该日报");
                                 return httpRespMsg;
                             }
+                            boolean findNextNode = false;
                             for (int m=0;m<settings.size(); m++) {
                                 if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
+                                    findNextNode = true;
                                     AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
                                     upR.setIsDeptAudit(nextNode.getIsDeptAudit());
                                     if (upR.getIsDeptAudit() == 1) {
@@ -3527,6 +3529,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                     break;
                                 }
                             }
+                            if (!findNextNode) {
+                                //审批流程在日报提交后发生了变更,已经没有下一个节点了,直接审核通过
+                                upR.setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()).setEvaluate(timeType.getNeedEvaluate()==1?evaluate:null);
+                            }
                             reportMapper.update(upR,
                                     new QueryWrapper<Report>().in("id", ids));
                         } else {

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/OvertimeAllowanceMapper.xml

@@ -90,9 +90,9 @@
             SUM(allowance)          AS allowance,
             group_concat(date_format(date, '%Y-%m-%d')) AS sp_no,
         -- 夜班补贴:type = 1、2、3、5
-        SUM(CASE WHEN type IN (1,2,3, 5) THEN allowance ELSE 0 END) AS night_allowance,
+        SUM(CASE WHEN type IN (1,2,3,5) THEN allowance ELSE 0 END) AS night_allowance,
         -- 餐补:其他所有情况
-        SUM(CASE WHEN type NOT IN (1,2,3) THEN allowance ELSE 0 END) AS meal_allowance
+        SUM(CASE WHEN type NOT IN (1,2,3,5) THEN allowance ELSE 0 END) AS meal_allowance
         FROM overtime_allowance
         <include refid="Summary_Where"/>
         GROUP BY company_id,corpwx_userid

+ 25 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -5571,7 +5571,8 @@
                     {{
                       scope.row.type == 1 ||
                       scope.row.type == 2 ||
-                      scope.row.type == 3
+                      scope.row.type == 3 ||
+                      scope.row.type == 5 //白班,跨天到第二天凌晨4点以后
                         ? scope.row.allowance
                           ? scope.row.allowance.toFixed(2)
                           : "0.00"
@@ -5589,7 +5590,8 @@
                     {{
                       scope.row.type == 1 ||
                       scope.row.type == 2 ||
-                      scope.row.type == 3
+                      scope.row.type == 3 ||
+                      scope.row.type == 5 //白班,跨天到第二天凌晨4点以后
                         ? "0.00"
                         : scope.row.allowance
                         ? scope.row.allowance.toFixed(2)
@@ -5616,7 +5618,7 @@
                         : scope.row.type == 4
                         ? "全天加班"
                         : scope.row.type == 5
-                        ? "加班过凌晨4点,餐补 50 元"
+                        ? "加班过凌晨4点,夜班补贴 50 元"
                         : "-"
                     }}
                   </template>
@@ -7085,6 +7087,26 @@
                     }}
                   </template>
                 </el-table-column>
+                <el-table-column
+                  align="center"
+                  label="月标准工时"
+                  width="120"
+                  prop="standardWorkingHours"
+                >
+                <template slot-scope="scope">
+                  <span>{{ scope.row.standardWorkingHours == 0?'-':scope.row.standardWorkingHours.toFixed(1) }}</span>
+                </template>
+                </el-table-column>
+                <el-table-column
+                  align="center"
+                  label="月填报工时"
+                  width="120"
+                >
+                <template slot-scope="scope">
+                  <span v-if="scope.row.standardWorkingHours == 0">-</span>
+                  <span v-else style="color:red;">{{ scope.row.actualWorkingHours.toFixed(1) }}</span>
+                </template>
+                </el-table-column>
               </el-table>
             </template>
 

Разница между файлами не показана из-за своего большого размера
+ 10629 - 17135
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue


+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -223,7 +223,7 @@
                     <!--任务阶段 -->
                     <van-field readonly name="stage" :disabled="!item.canEdit"
                         v-if="user.companyId != yuzhongCompId && user.company.packageProject == 1 && !user.timeType.hideStages && item.stages != null && item.stages.length > 0"
-                        clickable :value="item.stage" label="投入阶段" placeholder="请选择投入阶段"
+                        clickable :value="item.stage" label="投入阶段" placeholder="请选择投入阶段" :rules="[{ required: (user.companyId == 3092 || user.companyId == 3511)?true:false, message: '请选择投入阶段' }]"
                         @click="clickPickStage(index, item)" />
                     <van-popup v-model="item.showPickerStage" position="bottom">
                         <van-picker show-toolbar :columns="item.stages" value-key="stagesName" @confirm="choseStage"