فهرست منبع

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

Lijy 2 سال پیش
والد
کامیت
7fbe94ab45

+ 84 - 66
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -364,7 +364,50 @@ public class WeiXinCorpController {
             WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAesKey, corpId);
             String sMsg = wxcpt.DecryptMsg(sReqMsgSig, sReqTimeStamp, sReqNonce, requestBody);
             log.info("解密后===msg: " + sMsg);
+            org.json.JSONObject jsonObject = XML.toJSONObject(sMsg);
+            if(jsonObject.has("Event") && ("subscribe".equals(jsonObject.getString("Event")))){
+                //成员关注应用事件,发生在该企业已经开通应用的情况下。
+                System.out.println("成员关注应用事件!");
+                String corpWxUserId = jsonObject.getString("FromUserName");
+                WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
+                if (wxCorpInfo != null) {
+                    //企业存在,生成对应的用户
+                    Integer companyId = wxCorpInfo.getCompanyId();
+                    JSONObject userObj = getUserInfo(getCorpAccessToken(wxCorpInfo), corpWxUserId);
+                    SysRole defaultRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
 
+                    //成功获取到通讯录的个人详情
+                    Long id = SnowFlake.nextId();
+                    //通过getUserInfo接口获取到的json key是小写的
+                    JSONArray department = userObj.getJSONArray("department");
+                    Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
+                    Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
+                    String userId = userObj.getString("userid");
+                    String openUserId = userObj.getString("open_userid");
+                    int cnt = userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", openUserId));
+                    if (cnt == 0) {
+                        //用户不存在
+                        User user = new User()
+                                .setId(id.toString())
+                                .setRoleId(defaultRole.getId())
+                                .setRoleName(defaultRole.getRolename())
+                                .setName(userObj.getString("name"))
+                                .setPhone(userObj.getString("mobile"))
+                                .setPassword(MD5Util.getPassword("000000"))
+                                .setCorpwxUserid(openUserId)
+                                .setCorpwxRealUserid(corpWxUserId)
+                                .setJobNumber(openUserId.equals(userId)?null:userId)
+                                .setColor(ColorUtil.randomColor())
+                                .setCompanyId(companyId);
+                        if (sysDept != null) {
+                            user.setDepartmentId(sysDept.getDepartmentId());
+                            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+                            user.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
+                        }
+                        userMapper.insert(user);
+                    }
+                }
+            }
         } catch (Exception e) {
             // TODO
             // 解密失败,失败原因请查看异常
@@ -492,7 +535,6 @@ public class WeiXinCorpController {
             WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAesKey, suitId);
             String sMsg = wxcpt.DecryptMsg(sReqMsgSig, sReqTimeStamp, sReqNonce, requestBody);
             log.info("解密后===msg: " + sMsg);
-            // TODO: 解析出明文xml标签的内容进行处理
             org.json.JSONObject jsonObject = XML.toJSONObject(sMsg);
             log.info("json=="+jsonObject.toString());
             jsonObject = jsonObject.getJSONObject("xml");
@@ -506,50 +548,7 @@ public class WeiXinCorpController {
                 }
             }
 
-            if(jsonObject.has("Event") && ("subscribe".equals(jsonObject.getString("Event")))){
-                //成员关注应用事件,发生在该企业已经开通应用的情况下。
-                System.out.println("成员关注应用事件!");
-                String corpId = jsonObject.getString("ToUserName");
-                String corpWxUserId = jsonObject.getString("FromUserName");
-                WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
-                if (wxCorpInfo != null) {
-                    //企业存在,生成对应的用户
-                    Integer companyId = wxCorpInfo.getCompanyId();
-                    JSONObject userObj = getUserInfo(getCorpAccessToken(wxCorpInfo), corpWxUserId);
-                    SysRole defaultRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
 
-                    //成功获取到通讯录的个人详情
-                    Long id = SnowFlake.nextId();
-                    //通过getUserInfo接口获取到的json key是小写的
-                    JSONArray department = userObj.getJSONArray("department");
-                    Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
-                    Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
-                    String userId = userObj.getString("userid");
-                    String openUserId = userObj.getString("open_userid");
-                    int cnt = userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", openUserId));
-                    if (cnt == 0) {
-                        //用户不存在
-                        User user = new User()
-                                .setId(id.toString())
-                                .setRoleId(defaultRole.getId())
-                                .setRoleName(defaultRole.getRolename())
-                                .setName(userObj.getString("name"))
-                                .setPhone(userObj.getString("mobile"))
-                                .setPassword(MD5Util.getPassword("000000"))
-                                .setCorpwxUserid(openUserId)
-                                .setCorpwxRealUserid(corpWxUserId)
-                                .setJobNumber(openUserId.equals(userId)?null:userId)
-                                .setColor(ColorUtil.randomColor())
-                                .setCompanyId(companyId);
-                        if (sysDept != null) {
-                            user.setDepartmentId(sysDept.getDepartmentId());
-                            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-                            user.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
-                            userMapper.insert(user);
-                        }
-                    }
-                }
-            }
             if (jsonObject.has("AuthCode")) {
                 //企业授权通知
                 String authCode = jsonObject.getString("AuthCode");
@@ -629,8 +628,8 @@ public class WeiXinCorpController {
                             user.setDepartmentId(sysDept.getDepartmentId());
                             List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
                             user.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
-                            userMapper.insert(user);
                         }
+                        userMapper.insert(user);
                     } else if (!StringUtils.isEmpty(wxCorpInfo.getContactSecret()) && !StringUtils.isEmpty(wxCorpInfo.getContactServer())) {
                         //通过通讯录secret获取到员工姓名;这是从内部通讯录的
                         String remoteCorpConcactAccessToken = getRemoteCorpConcactAccessToken(wxCorpInfo);
@@ -2701,7 +2700,7 @@ public class WeiXinCorpController {
     }
 
     private boolean saveOrderAndUpCompany(org.json.JSONObject jsonObject) throws Exception {
-        System.err.println("+++++++++++++++++++"+"订单回调时间"+"++++++++++++++++++++++");
+        System.err.println("+++++++++++++++++++"+"订单回调开始"+"++++++++++++++++++++++");
         String infoType = jsonObject.getString("InfoType");
         String suiteAccessToken = getSuiteAccessToken();
         HttpHeaders headers = new HttpHeaders();
@@ -2713,18 +2712,19 @@ public class WeiXinCorpController {
         if ("change_editon".equals(infoType)){
             String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_auth_info?suite_access_token="+suiteAccessToken;
             String paidCorpId = jsonObject.getString("PaidCorpId");
-            WxCorpInfo corpid = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("corpid", paidCorpId));
-            Company company = companyMapper.selectById(corpid.getCompanyId());
+            WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("corpid", paidCorpId));
+            Company company = companyMapper.selectById(wxCorpInfo.getCompanyId());
             JSONObject map = new JSONObject();
             map.put("auth_corpid",corpId);
-            map.put("permanent_code",corpid.getPermanentCode());
+            map.put("permanent_code",wxCorpInfo.getPermanentCode());
             HttpEntity<JSONObject> detailEntity = new HttpEntity<>(map, headers);
             ResponseEntity<String> detailResponseEntity = restTemplate.postForEntity(url, detailEntity, String.class);
             JSONObject json = JSONObject.parseObject(detailResponseEntity.getBody());
-            if (json.getInteger("errcode")==0){
-                String editionName = json.getString("edition_name");
+            if (json.containsKey("auth_corp_info")){
+                String editionName = json.getString("edition_id");
                 switch (editionName){
-                    case "工时基础版":
+                    //基础版
+                    case "sp17da4a6e6f2a91f8":
                         company.setPackageProject(0);
                         company.setPackageOa(0);
                         company.setPackageExpense(0);
@@ -2732,7 +2732,8 @@ public class WeiXinCorpController {
                         company.setPackageEngineering(0);
                         company.setPackageProvider(0);
                         break;
-                    case "项目管理专业版":
+                        //专业版
+                    case "sp4a30d92ede178afd":
                         company.setPackageProject(1);//项目协作平台
                         company.setPackageOa(0);//OA平台;请假,出差等
                         company.setPackageExpense(1);//费用报销
@@ -2740,7 +2741,8 @@ public class WeiXinCorpController {
                         company.setPackageEngineering(0);//工程专业
                         company.setPackageProvider(0);//供应商模块
                         break;
-                    case "建筑工程管理专业版":
+                        //建筑版
+                    case "spd04f1b0582a0fe19":
                         company.setPackageProject(1);//项目协作平台
                         company.setPackageOa(0);//OA平台;请假,出差等
                         company.setPackageExpense(1);//费用报销
@@ -2748,7 +2750,8 @@ public class WeiXinCorpController {
                         company.setPackageEngineering(1);//工程专业
                         company.setPackageProvider(0);//供应商模块
                         break;
-                    case "企业办公旗舰版":
+                        //旗舰版
+                    case "sp69f71e42798c7f55":
                         company.setPackageProject(1);//项目协作平台
                         company.setPackageOa(1);//OA平台;请假,出差等
                         company.setPackageExpense(1);//费用报销
@@ -2764,48 +2767,56 @@ public class WeiXinCorpController {
             }
         }else {
             String orderId = "";
-            if (jsonObject.getString("OrderId")!=null){
+            if (jsonObject.has("OrderId")){
                 orderId = jsonObject.getString("OrderId");
             }else {
                 orderId = jsonObject.getString("NewOrderId");
             }
             WxOrder wxOrder = new WxOrder();
-            String detailUrl = " https://qyapi.weixin.qq.com/cgi-bin/service/get_order?suite_access_token=" + suiteAccessToken;
+            String detailUrl = "https://qyapi.weixin.qq.com/cgi-bin/service/get_order?suite_access_token=" + suiteAccessToken;
             JSONObject detailMap = new JSONObject();
             detailMap.put("orderid",orderId);
             HttpEntity<JSONObject> detailEntity = new HttpEntity<>(detailMap, headers);
             ResponseEntity<String> detailResponseEntity = restTemplate.postForEntity(detailUrl, detailEntity, String.class);
             String body = detailResponseEntity.getBody();
+            System.out.println("+++++++++++++++++++++++++++++++订单详情信息");
+            System.out.println(body);
             JSONObject orderDetail = JSONObject.parseObject(body);
             if (orderDetail.getInteger("errcode")==0){
                 wxOrder.setOrderid(orderDetail.getString("orderid"));
                 wxOrder.setOrderStatus(orderDetail.getInteger("order_status"));
                 wxOrder.setOrderType(orderDetail.getInteger("order_type"));
                 wxOrder.setPaidCorpid(orderDetail.getString("paid_corpid"));
-                wxOrder.setOperatorId(orderDetail.getString("operator_id"));
+                if (orderDetail.containsKey("operator_id")){
+                    wxOrder.setOperatorId(orderDetail.getString("operator_id"));
+                }
                 wxOrder.setSuiteid(orderDetail.getString("suiteid"));
-                wxOrder.setAppid(orderDetail.getString("appid"));
+                if (orderDetail.containsKey("appid")){
+                    wxOrder.setAppid(orderDetail.getString("appid"));
+                }
                 wxOrder.setEditionId(orderDetail.getString("edition_id"));
                 wxOrder.setEditionName(orderDetail.getString("edition_name"));
                 wxOrder.setPrice(orderDetail.getDouble("price"));
                 wxOrder.setUserCount(orderDetail.getInteger("user_count"));
                 wxOrder.setOrderPeriod(orderDetail.getInteger("order_period"));
-                LocalDateTime order_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("order_time")/1000,0,ZoneOffset.ofHours(8));
+                LocalDateTime order_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("order_time"),0,ZoneOffset.ofHours(8));
                 wxOrder.setOrderTime(order_time);
-                LocalDateTime paid_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("paid_time")/1000,0,ZoneOffset.ofHours(8));
+                LocalDateTime paid_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("paid_time"),0,ZoneOffset.ofHours(8));
                 wxOrder.setPaidTime(paid_time);
-                LocalDateTime begin_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("begin_time")/1000,0,ZoneOffset.ofHours(8));
+                LocalDateTime begin_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("begin_time"),0,ZoneOffset.ofHours(8));
                 wxOrder.setBeginTime(begin_time);
-                LocalDateTime end_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("end_time")/1000,0,ZoneOffset.ofHours(8));
+                LocalDateTime end_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("end_time"),0,ZoneOffset.ofHours(8));
                 wxOrder.setEndTime(end_time);
                 wxOrder.setOrderFrom(orderDetail.getInteger("order_from"));
                 wxOrder.setOperatorCorpid(orderDetail.getString("operator_corpid"));
                 wxOrder.setServiceShareAmount(orderDetail.getString("service_share_amount"));
                 wxOrder.setPlatformShareAmount(orderDetail.getString("platform_share_amount"));
                 wxOrder.setDealerShareAmount(orderDetail.getString("dealer_share_amount"));
-                JSONObject dealer_corp_info = orderDetail.getJSONObject("dealer_corp_info");
-                wxOrder.setDealerCorpid(dealer_corp_info.getString("corpid"));
-                wxOrder.setDealerCorpName(dealer_corp_info.getString("corp_name"));
+                if (orderDetail.containsKey("dealer_corp_info")){
+                    JSONObject dealer_corp_info = orderDetail.getJSONObject("dealer_corp_info");
+                    wxOrder.setDealerCorpid(dealer_corp_info.getString("corpid"));
+                    wxOrder.setDealerCorpName(dealer_corp_info.getString("corp_name"));
+                }
                 //获取该公司对象
                 WxCorpInfo corpid = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("corpid", wxOrder.getPaidCorpid()));
                 Company company = companyMapper.selectById(corpid.getCompanyId());
@@ -2869,4 +2880,11 @@ public class WeiXinCorpController {
         }
         return msg;
     }
+
+    @RequestMapping("/testMsg")
+    public HttpRespMsg testMsg() {
+        String str = "<xml><ToUserName><![CDATA[wpy9TkCAAAFDNLcpmWNM2fMegkAbjr5Q]]></ToUserName><FromUserName><![CDATA[woy9TkCAAA2g_nfDHQxJ_ipomMs9rMCQ]]></FromUserName><CreateTime>1667874192</CreateTime><MsgType><![CDATA[event]]></MsgType><AgentID>1000057</AgentID><Event><![CDATA[subscribe]]></Event></xml>";
+
+        return new HttpRespMsg();
+    }
 }

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

@@ -17,4 +17,6 @@ import java.util.Map;
 public interface BusinessTripMapper extends BaseMapper<BusinessTrip> {
 
     public List<BusinessTrip> summaryData(String keyword, String startDate, String endDate, Integer companyId);
+
+    List<Map<String,Object>> selectBusiness(String startDate, String endDate,String deptId);
 }

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

@@ -22,6 +22,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
+import org.apache.ibatis.annotations.Select;
 import org.apache.poi.EncryptedDocumentException;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFRow;
@@ -7677,17 +7678,31 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             total = maps.size();
         }
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        System.err.println(resultList.toString());
         if (resultList.size() > 0){
             for (Map<String, Object> stringObjectMap : resultList) {
-                Department department = departmentMapper.selectById(stringObjectMap.get("departmentId").toString());
-                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                Department department = departmentMapper.selectById(stringObjectMap.get("deptId").toString());
+                if ("0".equals(stringObjectMap.get("deptId").toString())){
+                    stringObjectMap.put("deptName","未分配");
+                }else if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1 && department != null){
                     stringObjectMap.put("deptName",getWxDepartment(department));
                 }else {
                     stringObjectMap.put("deptName",getSupDepartment(department));
                 }
+                stringObjectMap.put("deptHeadCount",stringObjectMap.get("deptHeadCount")==null?0:stringObjectMap.get("deptHeadCount"));
                 stringObjectMap.put("projectCount",stringObjectMap.get("projectCount")==null?0:stringObjectMap.get("projectCount"));
-                stringObjectMap.put("tripCount",stringObjectMap.get("tripCount")==null?0:stringObjectMap.get("tripCount"));
+                stringObjectMap.put("centerCount",stringObjectMap.get("centerCount")==null?0:stringObjectMap.get("centerCount"));
                 stringObjectMap.put("peopleCount",stringObjectMap.get("peopleCount")==null?0:stringObjectMap.get("peopleCount"));
+                if (StringUtils.isEmpty(startDate) && StringUtils.isEmpty(endDate)){
+                    List<Map<String,Object>> businessTrips = businessTripMapper.selectBusiness(null, null,stringObjectMap.get("deptId").toString());
+                    Integer dayCount = businessTrips.stream().collect(Collectors.summingInt((b) -> (int)b.get("dayCount")));
+                    stringObjectMap.put("tripCount",dayCount==null?0:dayCount);
+                }else{
+                    List<Map<String,Object>> businessTrips = businessTripMapper.selectBusiness(startDate,endDate,stringObjectMap.get("deptId").toString());
+                    for (Map<String, Object> businessTrip : businessTrips) {
+
+                    }
+                }
             }
         }
         HashMap<String, Object> result = new HashMap<>();

+ 14 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BusinessTripMapper.xml

@@ -45,4 +45,18 @@
         and business_trip.company_id = #{companyId}
         group by owner_id
     </select>
+
+    <select id="selectBusiness" resultType="java.util.Map">
+        SELECT `user`.department_id deptId,start_date startDate,end_date endDate,day_count dayCount
+        FROM business_trip
+        LEFT JOIN `user`
+        on business_trip.owner_id = `user`.id
+        WHERE STATUS = 0
+        <if test="deptId!=null and deptId!=''">
+            and user.department_id = #{deptId}
+        </if>
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            and business_trip.startDate &lt;= #{endDate} and business_trip.endDate >= #{startDate}
+        </if>
+    </select>
 </mapper>

+ 34 - 51
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -1283,58 +1283,40 @@
 
     <!--    分页查询部门参与项目情况-->
     <select id="selectDeptPartInProjects" resultType="java.util.Map">
-        SELECT department.department_id AS departmentId,
-        department.department_name AS deptName,
-        u.projectCount,
-        u.peopleCount,
-        t.trip AS tripCount
-        from department
-        left JOIN (
-        SELECT `user`.department_id AS departmentId,
-        COUNT(DISTINCT(project.id)) AS projectCount,
-        COUNT(`user`.id) AS peopleCount
-        from  `user`
-        LEFT JOIN participation ON `user`.id = participation.user_id
-        LEFT JOIN project ON project.id = participation.project_id
-        WHERE user.company_id = #{companyId}
-        and project.id is not null
-        <if test="branchDepartment!=null and branchDepartment.size()>0">
-            and user.department_id in
-            <foreach collection="branchDepartment" open="(" close=")" separator="," item="item">
-                #{item}
-            </foreach>
-        </if>
-        <if test="deptIds!=null and deptIds.size()>0">
-            and user.department_id in
-            <foreach collection="deptIds" open="(" item="item" close=")" separator=",">
-                #{item}
-            </foreach>
-        </if>
-        <if test="startDate!= null and startDate!= ''" >
-            and project.create_date &gt;= #{startDate}
-        </if>
-        <if test="endDate!= null and endDate!= ''">
-            and project.create_date &lt;= #{endDate}
-        </if>
-        GROUP BY `user`.department_id
-        ) u ON department.department_id = u.departmentId
-        left join (
-            SELECT u.deptId AS deptId,SUM(tripCount) AS trip
-            FROM (
-            SELECT `user`.department_id AS deptId,SUM(day_count) AS tripCount from business_trip
-            LEFT JOIN `user` ON business_trip.owner_id = `user`.id
-            where STATUS  = 0
-            AND user.company_id = #{companyId}
-            <if test="endDate!= null and endDate!= ''" >
-                and business_trip.start_date &lt;=#{endDate}
+        SELECT department.department_id deptId,
+        department_name deptName,
+        COUNT(`user`.id) deptHeadCount,
+        pro.projectCount projectCount,
+        pro.centerCount centerCount,
+        pcon.peopleCount peopleCount
+        FROM department
+        LEFT JOIN `user`
+        ON `user`.department_id = department.department_id
+        LEFT JOIN (
+            SELECT report.dept_id,COUNT(DISTINCT(report.project_id)) projectCount,
+            COUNT(DISTINCT(r.degree_id)) centerCount
+            FROM report
+            LEFT JOIN report r
+            ON report.id = r.id AND r.degree_id != -1
+            WHERE report.state = 1
+            <if test="startDate!= null and startDate!= '' and endDate!=  null and endDate!= ''" >
+                And report.create_date BETWEEN #{startDate} AND #{endDate}
             </if>
-            <if test="startDate!= null and startDate!= ''">
-                and business_trip.end_date &gt;= #{startDate}
+            GROUP BY report.dept_id
+        ) pro
+        ON pro.dept_id = department.department_id
+        LEFT JOIN (
+            SELECT dept_id,sum(p.con) peopleCount
+            FROM (
+            SELECT dept_id,count(DISTINCT project_id)con FROM report
+            WHERE report.state = 1
+            <if test="startDate!= null and startDate!= '' and endDate!=  null and endDate!= ''" >
+                And report.create_date BETWEEN #{startDate} AND #{endDate}
             </if>
-            GROUP BY `user`.id
-            ) u
-            GROUP BY u.deptId
-        ) t on t.deptId = department.department_id
+            GROUP BY report.creator_id,report.dept_id
+        ) p  GROUP BY p.dept_id
+        ) pcon
+        ON pcon.dept_id = department.department_id
         WHERE department.company_id = #{companyId}
         <if test="branchDepartment!=null and branchDepartment.size()>0">
             and department.department_id in
@@ -1348,7 +1330,8 @@
                 #{item}
             </foreach>
         </if>
-        ORDER BY u.projectCount,u.peopleCount
+        GROUP BY department.department_id,projectCount,centerCount,peopleCount
+        ORDER BY projectCount
         <if test="size!=null and start!=null">
             limit #{start},#{size}
         </if>

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

@@ -243,7 +243,7 @@
     <!--根据员工id,日期获取当天全部报告信息-->
     <select id="getReportByDate" resultType="java.util.Map">
         SELECT a.id, a.project_id as projectId,b.project_name AS project, a.working_time AS time, a.content, a.state, a.time_type as timeType, a.cost, a.report_time_type as reportTimeType, a.start_time as startTime,
-        a.end_time as endTime, b.incharger_id as inchargerId,
+        a.end_time as endTime, b.incharger_id as inchargerId,b.project_code as projectCode,
         a.creator_id as creatorId, d.name as subProjectName,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
         a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,
@@ -379,7 +379,7 @@
     <select id="getUserReportByDate" resultType="java.util.Map">
         SELECT a.id, b.project_name AS project, a.working_time AS time, a.content, a.state, a.time_type as timeType, a.creator_id as creatorId, a.cost, a.report_time_type as reportTimeType, a.start_time as startTime,
         a.end_time as endTime, d.name as subProjectName,a.task_id as taskId, task.name as taskName,
-        b.incharger_id as inchargerId,
+        b.incharger_id as inchargerId,b.project_code as projectCode,
         a.is_overtime as isOvertime,a.progress as progress,
         a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,