Преглед на файлове

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

# Conflicts:
#	fhKeeper/formulahousekeeper/timesheet/config/index.js
山水共长天一色 преди 3 години
родител
ревизия
c210037e4f

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserMonthWork.java

@@ -7,5 +7,7 @@ public class UserMonthWork {
     public String userId;
     public String name;
     public String departmentName;
+    public String inactiveDate;
+    public String corpwxUserId;
     public List<Map<String, Object>> worktimeList;
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserCorpwxTimeMapper.java

@@ -17,4 +17,6 @@ import java.util.Map;
 public interface UserCorpwxTimeMapper extends BaseMapper<UserCorpwxTime> {
 
     public List<Map> getUserDataList(Integer companyId, String startDate, String endDate, Integer deptId);
+
+    List<Map> selectByAsk(Integer companyId,String startDate,String endDate);
 }

+ 58 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -33,12 +33,14 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.stream.Collectors;
 
 /**
@@ -627,6 +629,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     //新增或编辑报告
     @Override
     public HttpRespMsg editReport(List<Report> reportList, String date, List<User> userList, BigDecimal hourCost, Integer companyId) {
+        System.out.println("传过来的数据"+reportList.toString()+"=========="+reportList.size()+"===="+reportList.get(0));
+        System.out.println(date);
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         TimeType timeType = timeTypeMapper.selectById(companyId);
         //删除不在本次更新名单中的老记录
@@ -2016,19 +2020,44 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<UserDailyWorkItem> noReportDataList = new ArrayList<UserDailyWorkItem>();
         //准备部门数据
         List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-
+        //获取所有同步的企业微信数据
+        LocalDateTime a=LocalDateTime.now();
+        List<Map> userCorpwxTimeMapList = userCorpwxTimeMapper.selectByAsk(companyId,startDate,endDate);
+        LocalDateTime b=LocalDateTime.now();
+        long l = Duration.between(a, b).toMillis();
+        System.out.println("查询耗时======================"+l+"毫秒");
         String lastUserId = null;
         UserMonthWork lastUserData = null;
         List<String> fillReportUserIds = new ArrayList<>();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        System.out.println("初始数据========="+userCorpwxTimeMapList.toString()+"=========size"+userCorpwxTimeMapList.size());
+        final CopyOnWriteArrayList<Map> cowList = new CopyOnWriteArrayList<Map>(userCorpwxTimeMapList);
         for (Map<String, Object> data : list) {
             String id = (String)data.get("id");
             String name = (String)data.get("name");
             String departmentName = (String) data.get("departmentName");
             Map<String, Object> map = new HashMap<>();
             String date = new SimpleDateFormat("yyyy-MM-dd").format((Date)data.get("createDate"));
-
+            String corpwxUserid = (String) data.get("corpwxUserId");
+            List<Map> userCorpwxListOn = userCorpwxTimeMapList.stream().filter(mapList -> mapList.get("create_date").toString().equals(data.get("createDate").toString())
+                    && mapList.get("corpwx_userid").equals(corpwxUserid)).collect(Collectors.toList());
+            if(!userCorpwxListOn.isEmpty()){
+                Map mapCheck=userCorpwxListOn.get(0);
+                for (Map item : cowList) {
+                    if (item.get("corpwx_userid").equals(mapCheck.get("corpwx_userid"))&&item.get("create_date").toString().equals(mapCheck.get("create_date").toString())) {
+                        cowList.remove(item);
+                    }
+                }
+            }
+            if(!userCorpwxListOn.isEmpty()){
+                userCorpwxTimeMapList.remove(userCorpwxListOn.get(0));
+            }
+            if(!userCorpwxListOn.isEmpty()&&(double) data.get("workingTime")==0){
+                    map.put("workingTime", "请假");
+            }else{
+                map.put("workingTime", data.get("workingTime"));
+            }
             map.put("createDate", date);
-            map.put("workingTime", data.get("workingTime"));
             if (id.equals(lastUserId)) {
                 //同一个用户的数据
                 lastUserData.worktimeList.add(map);
@@ -2038,12 +2067,28 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 lastUserData.userId = id;
                 lastUserData.name = name;
                 lastUserData.departmentName = departmentName;
+                lastUserData.corpwxUserId=corpwxUserid;
                 lastUserData.worktimeList = new ArrayList<>();
                 lastUserData.worktimeList.add(map);
                 userMonthWorks.add(lastUserData);
             }
             lastUserId = id;
         }
+        System.out.println("结束数据=========="+userCorpwxTimeMapList.toString()+"=========size"+userCorpwxTimeMapList.size());
+            for(UserMonthWork userMonthWork:userMonthWorks){
+                for(Map map:userCorpwxTimeMapList){
+                if(userMonthWork.corpwxUserId.equals(map.get("corpwx_userid"))){
+                    Map mapIt=new HashMap();
+                    mapIt.put("workingTime", "请假");
+                    String date = new SimpleDateFormat("yyyy-MM-dd").format((Date)map.get("create_date"));
+                    mapIt.put("createDate", date);
+                    userMonthWork.worktimeList.add(mapIt);
+                }
+            }
+        }
+        LocalDateTime c=LocalDateTime.now();
+        long l1 = Duration.between(b, c).toMillis();
+        System.out.println("数据处理耗时==========="+l1+"毫秒");
         //计算未填的人员
         List<User> noReportUserList = allRangeUserList.stream()
                 .filter(au->!userMonthWorks.stream().anyMatch(mon->mon.userId.equals(au.getId())))
@@ -2843,6 +2888,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<UserDailyWorkItem> noReportDataList = new ArrayList<UserDailyWorkItem>();
         //准备部门数据
         List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        //获取企业微信同步数据
+        List<Map> userCorpwxTimeMapList = userCorpwxTimeMapper.selectByAsk(companyId,startDate,endDate);
         String lastUserId = null;
         UserMonthWork lastUserData = null;
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@@ -2866,7 +2913,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (!list.stream().anyMatch(item->item.get("id").equals(curUser.getId())&&sdf.format((java.sql.Date)item.get("createDate")).equals(dateStr))) {
                         UserDailyWorkItem noRecord = new UserDailyWorkItem();
                         noRecord.userId = curUser.getId();
-                        noRecord.createDate = dtf.format(date);
+                        List<Map> userCorpwxListOn = userCorpwxTimeMapList.stream().filter(mapList -> mapList.get("create_date").toString().equals(dateStr)
+                                && mapList.get("corpwx_userid").equals(curUser.getCorpwxUserid())).collect(Collectors.toList());
+                        if(!userCorpwxListOn.isEmpty()){
+                                noRecord.createDate = dtf.format(date)+"/请假";
+                        }else{
+                            noRecord.createDate = dtf.format(date);
+                        }
+
                         if (curUser.getDepartmentId() != null && curUser.getDepartmentId() != 0) {
                             noRecord.department = departmentList.stream().filter(d->d.getDepartmentId().equals(curUser.getDepartmentId())).findFirst().get().getDepartmentName();
                         } else {

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -458,7 +458,7 @@
         WHERE create_date BETWEEN #{startDate} AND #{endDate} AND creator_id = #{userId} GROUP BY create_date
     </select>
     <select id="getUserDailyWorkTime" resultType="java.util.Map">
-        SELECT user.id, user.name, department.department_name as departmentName, report.create_date as createDate, sum(working_time) as workingTime,user.inactive_date as inactiveDate
+        SELECT user.id, user.name, department.department_name as departmentName, report.create_date as createDate, sum(working_time) as workingTime,user.inactive_date as inactiveDate,user.corpwx_userid as corpwxUserId
         FROM user
         left join report on user.id = report.creator_id
         left join department on department.department_id = user.department_id

+ 9 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserCorpwxTimeMapper.xml

@@ -36,5 +36,13 @@
         </if>
         ORDER BY a.create_date ASC
     </select>
-
+    <select id="selectByAsk" resultType="java.util.Map">
+        select corpwx_userid ,create_date from user_corpwx_time where company_id=#{companyId} and ask_leave_time>0
+        <if test="startDate != null">
+            AND create_date &gt;= #{startDate}
+        </if>
+        <if test="endDate != null">
+            AND create_date &lt;= #{endDate}
+        </if>
+    </select>
 </mapper>

+ 1 - 11
fhKeeper/formulahousekeeper/timesheet/config/index.js

@@ -1,19 +1,9 @@
 var path = require('path')
 
 //  var ip = '127.0.0.1'
-// var ip = '192.168.2.21'
-// var ip = '192.168.2.12'// var ip = '47.100.37.243' 
+// var ip = '192.168.2.20'// var ip = '192.168.2.12'// var ip = '47.100.37.243' 
 
-var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
-for (var i in ifaces) {
-    for (var j in ifaces[i]) {
-        var val = ifaces[i][j]
-        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
-            ip = val.address
-        }
-    }
 }
-
 module.exports = {
   build: {
     env: require('./prod.env'),

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

@@ -1214,7 +1214,8 @@
                     forbidClick: true,
                     duration: 0
                 });
-                let formData = new FormData();
+                // let formData = new FormData();
+                let formData = new URLSearchParams()
                 formData.append("draft", this.isDraft);
                 if (this.reportTimeType.type == 0) {
                     var alldayNum = 0;

+ 38 - 7
fhKeeper/formulahousekeeper/timesheet_h5/src/views/test/list.vue

@@ -1175,7 +1175,8 @@
                     forbidClick: true,
                     duration: 0
                 });
-                let formData = new FormData();
+                // let formData = new FormData();
+                let formData = new URLSearchParams()
                 formData.append("draft", this.isDraft);
                 if (this.reportTimeType.type == 0) {
                     var alldayNum = 0;
@@ -1254,7 +1255,7 @@
                         formData.append("groupId", 0);
                     }
                     if (this.form.domains[i].stage) {
-                        formData.append("stage", this.form.domains[i].stage);
+                        formData.append("stage",  this.form.domains[i].stage);
                     } else {
                         formData.append("stage", '-');
                     }
@@ -1347,15 +1348,17 @@
                 }
                 
                 var valjdk = ''
-                for (var key of formData.keys()) {undefined
+                for (var key of formData.keys()) {
                         console.log(key + "-------" + formData.get(key));
-                        valjdk = valjdk + key + "-------" + formData.get(key) + '             '
+                        valjdk = valjdk + key + "-------" + formData.get(key) + '\n'
                     }
-                
+                    var sss = formData.get('projectId')
+                    alert(sss)
                     alert(valjdk)
-                return
-
+                // return
+ 
                 this.$axios.post("/report/editReport", formData)
+                // this.$axios.post("/report/editReport", objs)
                 .then(res => {
                     if(res.code == "ok") {
                         this.$toast.clear();
@@ -1366,6 +1369,34 @@
                         this.$toast.fail((this.isDraft==0?'提交失败':'暂存失败')+':'+res.msg);
                     }
                 }).catch(err=> {this.$toast.clear();});
+                // this.$axios({
+                //     method: "post",
+                //     url: `/report/editReport`,
+                //     data: obj,
+                //     // headers: {
+                //     //     transformRequest: [data => data]//此处是我进行设置的转换数据类型
+                //     // },
+                //     headers: { "Content-Type": "multipart/form-data" }
+                    
+                // })
+                // .then(res => {
+                //     if(res.code == "ok") {
+                //         this.$toast.clear();
+                //         this.$toast.success(this.isDraft==0?'提交成功':'暂存成功');
+                //         this.$router.push("/index");
+                //     } else {
+                //         this.$toast.clear();
+                //         this.$toast.fail((this.isDraft==0?'提交失败':'暂存失败')+':'+res.msg);
+                //     }
+                // }).catch(err=> {this.$toast.clear();});
+
+                // axios({
+                //     method: "post",
+                //     url: '/report/editReport',
+                //     data: formData,
+                //     headers: { "Content-Type": "multipart/form-data" },
+                // })
+                // }
             },
             //初始化参数
             initWxConfig() {

+ 10 - 10
fhKeeper/formulahousekeeper/timesheet_h5/vue.config.js

@@ -4,17 +4,17 @@ const path = require('path');
 const themePath = path.resolve(__dirname,'src/assets/style/theme.less');
 
 // var ip = '127.0.0.1'
-// var ip = '192.168.2.18'
+var ip = '192.168.2.6'
 // var ip = '47.100.37.243'
-var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
-for (var i in ifaces) {
-    for (var j in ifaces[i]) {
-        var val = ifaces[i][j]
-        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
-            ip = val.address
-        }
-    }
-}
+// var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
+// for (var i in ifaces) {
+//     for (var j in ifaces[i]) {
+//         var val = ifaces[i][j]
+//         if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
+//             ip = val.address
+//         }
+//     }
+// }
 
 module.exports = {
     // 关闭eslint检查