Browse Source

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Min 1 năm trước cách đây
mục cha
commit
c666f55d9e

+ 38 - 36
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -1312,7 +1312,7 @@ public class ReportController {
                     //httpRespMsg.setError("每日工作时长不得超过"+comTimeType.getAllday()+"小时");
                     httpRespMsg.setError("每日工作时长不得少于" + comTimeType.getMinReportTime() + "小时");
                     return httpRespMsg;
-                } else if (dailyWorktime > comTimeType.getMaxReportTime()) {
+                } else if (company.getId() != 4811 && dailyWorktime > comTimeType.getMaxReportTime()) {//陕西柘中不做上限校验
                     HttpRespMsg httpRespMsg = new HttpRespMsg();
                     //httpRespMsg.setError("每日工作时长不得超过"+comTimeType.getAllday()+"小时");
                     httpRespMsg.setError("每日工作时长不得超过" + comTimeType.getMaxReportTime() + "小时");
@@ -1321,46 +1321,48 @@ public class ReportController {
             }
         }
 
-
         //校验填报工时
-        List<Report> checkedUserDayList = new ArrayList<>();
-        for (Report report : reportList) {
-            String creatorId = report.getCreatorId();
-            LocalDate cDate = report.getCreateDate();
-            if (checkedUserDayList.stream().anyMatch(item->item.getCreatorId().equals(creatorId) && item.getCreateDate().isEqual(cDate))) {
-                //避免重复校验
-                continue;
-            } else {
-                //加入
-                checkedUserDayList.add(report);
-            }
-            //查找同一个人同一天的日报合计工作时长
-            double dailyWorktime = reportList.stream().filter(r->r.getCreatorId().equals(creatorId) && r.getCreateDate().isEqual(cDate)).mapToDouble(Report::getWorkingTime).sum();
-            //数据库中已经填报过的工时
-            if (dailyWorktime > comTimeType.getMaxReportTime()) {
-                HttpRespMsg httpRespMsg = new HttpRespMsg();
-                //httpRespMsg.setError("每日工作时长不得超过"+comTimeType.getMaxReportTime()+"小时");
-                httpRespMsg.setError(MessageUtils.message("profession.MaxReportTimeError",comTimeType.getMaxReportTime()));
-                return httpRespMsg;
-            } else {
-                //查找数据库中可能已有老的记录
-                List<Report> oldList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, working_time").eq("create_date", cDate).eq("creator_id", creatorId));
-                //老的记录需要合并计算不在本次reportList中,并且状态是0(待审核)或者1(已通过)的
-                //按周填报都可能会有已存在日报的情况,前端没有传过来
-                double existingWorktime = oldList.stream().filter(old->!reportList.stream().anyMatch(newItem->old.getId().equals(newItem.getId()))
-                                && (old.getState() == 0 || old.getState() == 1)).mapToDouble(Report::getWorkingTime).sum();
-                if (existingWorktime > 0) {
-                    dailyWorktime += existingWorktime;
-                    if (dailyWorktime > comTimeType.getMaxReportTime()) {
-                        HttpRespMsg httpRespMsg = new HttpRespMsg();
-                        //httpRespMsg.setError("每日工作时长不得超过"+comTimeType.getMaxReportTime()+"小时");
-                        httpRespMsg.setError(MessageUtils.message("profession.MaxReportTimeError",comTimeType.getMaxReportTime()));
-                        return httpRespMsg;
+        if (company.getId() != 4811) {
+            List<Report> checkedUserDayList = new ArrayList<>();
+            for (Report report : reportList) {
+                String creatorId = report.getCreatorId();
+                LocalDate cDate = report.getCreateDate();
+                if (checkedUserDayList.stream().anyMatch(item->item.getCreatorId().equals(creatorId) && item.getCreateDate().isEqual(cDate))) {
+                    //避免重复校验
+                    continue;
+                } else {
+                    //加入
+                    checkedUserDayList.add(report);
+                }
+                //查找同一个人同一天的日报合计工作时长
+                double dailyWorktime = reportList.stream().filter(r->r.getCreatorId().equals(creatorId) && r.getCreateDate().isEqual(cDate)).mapToDouble(Report::getWorkingTime).sum();
+                //数据库中已经填报过的工时
+                if (dailyWorktime > comTimeType.getMaxReportTime()) {
+                    HttpRespMsg httpRespMsg = new HttpRespMsg();
+                    //httpRespMsg.setError("每日工作时长不得超过"+comTimeType.getMaxReportTime()+"小时");
+                    httpRespMsg.setError(MessageUtils.message("profession.MaxReportTimeError",comTimeType.getMaxReportTime()));
+                    return httpRespMsg;
+                } else {
+                    //查找数据库中可能已有老的记录
+                    List<Report> oldList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, working_time").eq("create_date", cDate).eq("creator_id", creatorId));
+                    //老的记录需要合并计算不在本次reportList中,并且状态是0(待审核)或者1(已通过)的
+                    //按周填报都可能会有已存在日报的情况,前端没有传过来
+                    double existingWorktime = oldList.stream().filter(old->!reportList.stream().anyMatch(newItem->old.getId().equals(newItem.getId()))
+                            && (old.getState() == 0 || old.getState() == 1)).mapToDouble(Report::getWorkingTime).sum();
+                    if (existingWorktime > 0) {
+                        dailyWorktime += existingWorktime;
+                        if (dailyWorktime > comTimeType.getMaxReportTime()) {
+                            HttpRespMsg httpRespMsg = new HttpRespMsg();
+                            //httpRespMsg.setError("每日工作时长不得超过"+comTimeType.getMaxReportTime()+"小时");
+                            httpRespMsg.setError(MessageUtils.message("profession.MaxReportTimeError",comTimeType.getMaxReportTime()));
+                            return httpRespMsg;
+                        }
                     }
                 }
-            }
 
+            }
         }
+
         //项目所属bu审核
         if(comTimeType.getReportAuditType() == 4){
             List<ProjectCategory> categoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id",company.getId()));

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractServiceImpl.java

@@ -181,7 +181,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
                             String msg = "";
                             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                                 msg = "$userName=" + contractLog.get("operateCorpWxId") + "$" + contractLog.get("msg");
-                            }if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+                            }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
                                 msg = "$userName=" + contractLog.get("operateName") + "$" + contractLog.get("msg");
                             }else {
                                 msg = contractLog.get("operateName") + "" + contractLog.get("msg");
@@ -267,7 +267,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
             item.add(contract.getEndDate()==null?"":contract.getEndDate()+"");
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                 contract.setCreatorName("$userName=" + contract.getCreatorWxCorpId() + "$");
-            }if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+            }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
                 contract.setCreatorName("$userName=" + contract.getCreatorName() + "$");
             }else {
                 contract.setCreatorName(contract.getCreatorName());

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java

@@ -1207,7 +1207,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                                 } else {
                                     membRowData.add("");
                                 }
-                            }if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+                            }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
                                 membRowData.add("$userName="+us.getName()+"$");
                                 if (findDept.isPresent()) {
                                     membRowData.add("$departmentName="+findDept.get().getDepartmentName()+"$");

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -2795,7 +2795,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 User incharger = first.get();
                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                     data.add("$userName="+incharger.getCorpwxUserid()+"$");
-                }if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+                }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
                     data.add("$userName="+incharger.getDingdingUserid()+"$");
                 }else {
                     data.add(incharger.getName());
@@ -8467,7 +8467,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<String> subList=new ArrayList<>();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                 subList.add("$userName="+(item.get("corpwxUserId")==null?"":item.get("corpwxUserId"))+"$");
-            }if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+            }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
                 subList.add("$userName="+(item.get("corpDdUserId")==null?"":item.get("corpDdUserId"))+"$");
             }else {
                 subList.add(String.valueOf(item.get("username")));

+ 8 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportController.java

@@ -151,6 +151,14 @@ public class ReportController {
         msg.data = reportService.fixSteelNumData();
         return msg;
     }
+
+    @RequestMapping("/fixFinishNumData")
+    public HttpRespMsg fixFinishNumData() {
+        HttpRespMsg msg = new HttpRespMsg();
+        //修复report表中钢印号存在重复问题
+        msg.data = reportService.fixFinishNumData();
+        return msg;
+    }
 //
 //    @RequestMapping("/getCardTime")
 //    public HttpRespMsg getCardTime(@RequestParam String date) {

+ 10 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -209,4 +209,14 @@ public interface ReportMapper extends BaseMapper<Report> {
     List<Map<String, Object>> getPlanDataWithUser(Integer companyId, String startDate, String endDate, Integer filterDeptId);
 
     List<Map<String, Object>> getPlanDataWithUserId(Integer companyId,String userId, String startDate, String endDate);
+
+    @Select("SELECT plan.`product_scheduling_num`,plan.`product_name`, plan.`num`,prod_procedure.`name` AS '工序',report.`finish_num` AS '填报件数', report.`finish_num`/plan.`num` AS '件数占比',report.`cost`/plan_procedure_total.`total_wages` AS '实际填报工钱占比',\n" +
+            "plan_procedure_total.`total_wages` AS '总工序价钱', report.`cost` AS '填报价钱',\n" +
+            "report.* FROM report \n" +
+            "LEFT JOIN plan ON plan.id = report.`plan_id` \n" +
+            "LEFT JOIN plan_procedure_total ON plan_procedure_total.prod_procedure_id = report.`prod_procedure_id` AND plan_procedure_total.plan_id = report.`plan_id` \n" +
+            "LEFT JOIN prod_procedure_team pt ON pt.id = report.`user_procedure_team_id`\n" +
+            "LEFT JOIN prod_procedure ON prod_procedure.id = report.`prod_procedure_id`\n" +
+            "WHERE plan.`create_time` > '2024-01-01' AND report.`finish_num` > 0 AND ABS(report.`finish_num`/plan.`num`- report.`cost`/plan_procedure_total.`total_wages`) > 0.001")
+    List<Map<String, Object>> findFinishNumErrorData();
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ReportService.java

@@ -158,4 +158,6 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg getUserCommentPlanResult(String pptIds);
 
     HttpRespMsg exportPlanDataWithUserId(String userId, String startDate, String endDate);
+
+    HttpRespMsg fixFinishNumData();
 }

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

@@ -148,6 +148,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         if (report.getFinishNum() == null) {
             report.setFinishNum(0.0);
         }
+        //对finishNum进行小数点位数控制,不得超过小数点后2位
+        int thirdPosNum = ((int)(report.getFinishNum()*1000))%10;
+        if (thirdPosNum > 0) {
+            httpRespMsg.setError("填报的件数小数点后不得超过2位");
+            return httpRespMsg;
+        }
+
+
         LocalDate targetDate = report.getCreateDate();
         report.setCompanyId(companyId);
         Plan plan = planMapper.selectById(report.getPlanId());
@@ -5900,4 +5908,27 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         httpRespMsg.data ="/upload/"+fileName;
         return httpRespMsg;
     }
+
+    @Override
+    public HttpRespMsg fixFinishNumData() {
+        HttpRespMsg msg=new HttpRespMsg();
+        List<Map<String, Object>> dataList = reportMapper.findFinishNumErrorData();
+        System.out.println("总共找到错误数据:"+dataList.size());
+        List<Report> updateList=new ArrayList<>();
+        for (Map<String, Object> map : dataList) {
+            Integer id = Integer.valueOf(String.valueOf(map.get("id")));
+            Report report = new Report();
+            report.setId(id);
+            //完成件数=计划总件数*(实际填报工钱占比)
+            Integer num = (Integer) map.get("num");
+            double realFinishNum = num * (Double) map.get("实际填报工钱占比") ;
+            report.setFinishNum(realFinishNum);
+            updateList.add(report);
+        }
+        if (updateList.size() > 0) {
+            updateBatchById(updateList);
+        }
+        msg.setData("修复完成, 共修复"+updateList.size()+"条数据");
+        return msg;
+    }
 }

+ 4 - 3
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/util/CodeUtil.java

@@ -1,5 +1,6 @@
 package com.management.platform.util;
 
+import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.util.Random;
@@ -36,8 +37,8 @@ public class CodeUtil {
     }
 
     public static void main(String[] args) {
-        double temp = 1.45;
-        DecimalFormat decimalFormat = new DecimalFormat("0.#");
-        System.out.println(decimalFormat.format(temp));
+        double temp = 1.42;
+        int thirdPosNum = ((int)(temp*1000))%10;
+        System.out.println(thirdPosNum);
     }
 }

+ 9 - 5
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -1838,7 +1838,7 @@
                             </div>
                         </template>
                     </el-table-column>
-                    <el-table-column  label="操作" v-if="user.companyId == 469 && user.roleName=='超级管理员'">
+                    <el-table-column  label="操作" v-if="showHidden && user.companyId == 469 && user.roleName=='超级管理员'">
                         <template slot-scope="scope">
                             <div>
                                 <el-button type="default" size="small" @click="openModImportTime(scope.row)">修改导入记录</el-button>
@@ -1932,12 +1932,12 @@
                 </p>
             </div>
             <div  slot="title">
-                <span style="font-size:16px;">{{$t('other.Batchimportofworkinghours')}}</span>
+                <span style="font-size:16px;" @click="showHiddenFunction">{{$t('other.Batchimportofworkinghours')}}</span>
                 <el-link v-if="active==0"  style="float:right;margin-right:100px;" type="primary" @click="toView()">{{$t('other.viewLaborImportRecords')}}</el-link>
                 <el-link v-if="active==0"  style="float:right;margin-right:100px;" type="primary" @click="downloadProjectRatio">下载填报工时占比表</el-link>
-                <el-link v-if="active==0 && user.companyId == 469 && user.roleName.indexOf('管理员') > 0"  style="float:right;margin-right:100px;" type="primary" @click="importCardTimeVisi = true">导入考勤时长</el-link>
-                <el-link v-if="active==0 && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchDeleteReport = true; startDeleting = false;">批量删除日报</el-link>
-                <el-link v-if="active==0 && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchSimpleApproveReport = true; startDeleting = false;getDepartmentForApprove();">批量审核日报</el-link>
+                <el-link v-if="active==0 && showHidden && user.companyId == 469 && user.roleName.indexOf('管理员') > 0"  style="float:right;margin-right:100px;" type="primary" @click="importCardTimeVisi = true">导入考勤时长</el-link>
+                <el-link v-if="active==0 && showHidden && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchDeleteReport = true; startDeleting = false;">批量删除日报</el-link>
+                <el-link v-if="active==0 && showHidden && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchSimpleApproveReport = true; startDeleting = false;getDepartmentForApprove();">批量审核日报</el-link>
             </div>
             
             <span slot="footer">
@@ -2150,6 +2150,7 @@
         },
         data() {
             return {
+                showHidden: false,
                 pageIndex: 0,
                 hasMore: true,
                 exportType: 0,
@@ -2567,6 +2568,9 @@
                 const isReportPictureRequired = permissionArray.some(item => item.id == companyId)
                 return isReportPictureRequired
             },
+            showHiddenFunction() {
+                this.showHidden = true;
+            },
             // 获取如何信息选的可填写部门
             getDeptMembData() {
                 this.http.post('/user/getUserInfo', {userId: this.user.id}, res => {