Browse Source

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

ggooalice 2 years ago
parent
commit
9610af1cbf

+ 233 - 205
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -540,22 +540,80 @@ public class WeiXinCorpController {
             org.json.JSONObject jsonObject = XML.toJSONObject(sMsg);
             org.json.JSONObject jsonObject = XML.toJSONObject(sMsg);
             log.info("json=="+jsonObject.toString());
             log.info("json=="+jsonObject.toString());
             jsonObject = jsonObject.getJSONObject("xml");
             jsonObject = jsonObject.getJSONObject("xml");
-
-            //存储更新订单、更新公司续费情况
+            //订单回调。存储更新订单、更新公司续费情况
             if (jsonObject.has("InfoType")){
             if (jsonObject.has("InfoType")){
+                System.err.println("+++++++++++++++++++订单回调开始++++++++++++++++++++++");
+                System.err.println(jsonObject);
                 String infoType = jsonObject.getString("InfoType");
                 String infoType = jsonObject.getString("InfoType");
-                //open_order:下单成功通知; change_order:改单通知; pay_for_app_success:支付成功通知;
-                //refund:退款通知; change_editon:付费版本变更通知;
-                if ("open_order".equals(infoType) || "change_order".equals(infoType) || "pay_for_app_success".equals(infoType) || "refund".equals(infoType) || "change_editon".equals(infoType)){
-                    boolean b = saveOrderAndUpCompany(jsonObject);
-                    if (!b){
-                        System.out.println("+++++++++++++++++++微信应用市场付费回调处理失败+++++++++++++++++++++++");
-                        System.out.println(jsonObject);
-                    }
+                String orderId = "";
+                if (jsonObject.has("OrderId")){
+                    orderId = jsonObject.getString("OrderId");
+                }
+                WxOrder wxOrder = null;
+                switch (infoType){
+                    case "open_order"://open_order:下单成功通知
+                        System.err.println("###########################下单成功");
+                        wxOrder = getOrder(orderId);
+                        if (wxOrder!=null){
+                            wxOrderMapper.insert(wxOrder);
+                        }
+                        break;
+                    case "pay_for_app_success"://pay_for_app_success:支付成功通知
+                        System.err.println("###########################订单支付成功");
+                        wxOrder = getOrder(orderId);
+                        if (wxOrder!=null){
+                            wxOrderMapper.updateById(wxOrder);
+                            WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("corpid", wxOrder.getPaidCorpid()));
+                            if (wxCorpInfo!=null){
+                                System.err.println("#######################要进行更改有效期的公司信息为:"+ wxCorpInfo.toString());
+                                Company newCompany = new Company();
+                                LocalDateTime endTime = wxOrder.getEndTime();
+                                newCompany.setId(wxCorpInfo.getCompanyId());
+                                newCompany.setExpirationDate(endTime);
+                                newCompany.setSetMeal(1);
+                                companyMapper.updateById(newCompany);
+                                System.out.println("有效期变更为:" + endTime);
+                            }
+                        }
+                        break;
+                    case "change_editon"://change_editon:付费版本变更通知
+                        System.err.println("###########################付费版本变更");
+                        String paidCorpId = jsonObject.getString("PaidCorpId");
+                        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("corpid", paidCorpId));
+                        if(wxCorpInfo != null){
+                            System.err.println("版本变更的公司信息为:");
+                            System.err.println(wxCorpInfo.toString());
+                            versionChange(wxCorpInfo);
+                        }else {
+                            System.err.println("#############################" + paidCorpId + "该公司尚未授权开通,将在授权开通后为其变更版本及更新到期时间。");
+                        }
+                        break;
+                    case "change_order"://change_order:改单通知
+                        System.err.println("###########################改单通知");
+                        orderId = jsonObject.getString("NewOrderId");
+                        wxOrder = getOrder(orderId);
+                        if (wxOrder!=null){
+                            wxOrder.setOldOrderid(jsonObject.getString("OldOrderId"));
+                            wxOrderMapper.insert(wxOrder);
+                        }
+                        break;
+                    case "refund"://refund:退款通知
+                        System.err.println("###########################退款通知");
+                        wxOrder = getOrder(orderId);
+                        wxOrderMapper.updateById(wxOrder);
+                        WxCorpInfo corpid = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("corpid", wxOrder.getPaidCorpid()));
+                        if (corpid!=null){
+                            Company newCompany = new Company();
+                            newCompany.setId(corpid.getCompanyId());
+                            //退款则将其到期时间设置为现在的时间减去一天
+                            newCompany.setExpirationDate(LocalDateTime.now().minusDays(1));
+                            companyMapper.updateById(newCompany);
+                            System.out.println("已将该公司有效期设置为:");
+                        }
+                        break;
                 }
                 }
             }
             }
 
 
-
             if (jsonObject.has("AuthCode")) {
             if (jsonObject.has("AuthCode")) {
                 //企业授权通知
                 //企业授权通知
                 String authCode = jsonObject.getString("AuthCode");
                 String authCode = jsonObject.getString("AuthCode");
@@ -1194,52 +1252,58 @@ public class WeiXinCorpController {
                     //获取公司根部门人员,也就是没有分配部门的人员
                     //获取公司根部门人员,也就是没有分配部门的人员
                     getCorpMembsFromPlatform(companyId);
                     getCorpMembsFromPlatform(companyId);
                     //对已经开通版本的新公司进行版本变更和开通时长变更
                     //对已经开通版本的新公司进行版本变更和开通时长变更
+                    System.err.println("###################################开始检查该新建公司是否已支付过订单");
+                    System.err.println("该公司corpId为:"+corpId);
                     WxOrder wxOrder = wxOrderMapper.selectOne(new QueryWrapper<WxOrder>().eq("paid_corpid",corpId).eq("order_status",1).orderByDesc("paid_time"));
                     WxOrder wxOrder = wxOrderMapper.selectOne(new QueryWrapper<WxOrder>().eq("paid_corpid",corpId).eq("order_status",1).orderByDesc("paid_time"));
                     if (wxOrder != null){
                     if (wxOrder != null){
+                        Company newCompany = new Company();
+                        newCompany.setId(company.getId());
                         System.err.println("########################查询到该新建企业" + company.getCompanyName() + "已支付过订单,进行版本变更");
                         System.err.println("########################查询到该新建企业" + company.getCompanyName() + "已支付过订单,进行版本变更");
                         String editionId = wxOrder.getEditionId();
                         String editionId = wxOrder.getEditionId();
                         switch (editionId){
                         switch (editionId){
                             //基础版
                             //基础版
                             case "sp17da4a6e6f2a91f8":
                             case "sp17da4a6e6f2a91f8":
-                                company.setPackageProject(0);
-                                company.setPackageOa(0);
-                                company.setPackageExpense(0);
-                                company.setPackageCustomer(0);
-                                company.setPackageEngineering(0);
-                                company.setPackageProvider(0);
+                                newCompany.setPackageProject(0);
+                                newCompany.setPackageOa(0);
+                                newCompany.setPackageExpense(0);
+                                newCompany.setPackageCustomer(0);
+                                newCompany.setPackageEngineering(0);
+                                newCompany.setPackageProvider(0);
                                 break;
                                 break;
                             //专业版
                             //专业版
                             case "sp4a30d92ede178afd":
                             case "sp4a30d92ede178afd":
-                                company.setPackageProject(1);//项目协作平台
-                                company.setPackageOa(0);//OA平台;请假,出差等
-                                company.setPackageExpense(1);//费用报销
-                                company.setPackageCustomer(0);//客户管理
-                                company.setPackageEngineering(0);//工程专业
-                                company.setPackageProvider(0);//供应商模块
+                                newCompany.setPackageProject(1);//项目协作平台
+                                newCompany.setPackageOa(0);//OA平台;请假,出差等
+                                newCompany.setPackageExpense(1);//费用报销
+                                newCompany.setPackageCustomer(0);//客户管理
+                                newCompany.setPackageEngineering(0);//工程专业
+                                newCompany.setPackageProvider(0);//供应商模块
                                 break;
                                 break;
                             //建筑版
                             //建筑版
                             case "spd04f1b0582a0fe19":
                             case "spd04f1b0582a0fe19":
-                                company.setPackageProject(1);//项目协作平台
-                                company.setPackageOa(0);//OA平台;请假,出差等
-                                company.setPackageExpense(1);//费用报销
-                                company.setPackageCustomer(1);//客户管理
-                                company.setPackageEngineering(1);//工程专业
-                                company.setPackageProvider(0);//供应商模块
+                                newCompany.setPackageProject(1);//项目协作平台
+                                newCompany.setPackageOa(0);//OA平台;请假,出差等
+                                newCompany.setPackageExpense(1);//费用报销
+                                newCompany.setPackageCustomer(1);//客户管理
+                                newCompany.setPackageEngineering(1);//工程专业
+                                newCompany.setPackageProvider(0);//供应商模块
                                 break;
                                 break;
                             //旗舰版
                             //旗舰版
                             case "sp69f71e42798c7f55":
                             case "sp69f71e42798c7f55":
-                                company.setPackageProject(1);//项目协作平台
-                                company.setPackageOa(1);//OA平台;请假,出差等
-                                company.setPackageExpense(1);//费用报销
-                                company.setPackageCustomer(1);//客户管理
-                                company.setPackageEngineering(0);//工程专业
-                                company.setPackageProvider(1);//供应商模块
+                                newCompany.setPackageProject(1);//项目协作平台
+                                newCompany.setPackageOa(1);//OA平台;请假,出差等
+                                newCompany.setPackageExpense(1);//费用报销
+                                newCompany.setPackageCustomer(1);//客户管理
+                                newCompany.setPackageEngineering(0);//工程专业
+                                newCompany.setPackageProvider(1);//供应商模块
                                 break;
                                 break;
                         }
                         }
                         LocalDateTime endTime = wxOrder.getEndTime();
                         LocalDateTime endTime = wxOrder.getEndTime();
-                        company.setExpirationDate(endTime);
-                        System.out.println("版本变更成功,到期时间更新成功。版本变更后的信息为:" + company.toString());
-                        companyMapper.updateById(company);
+                        newCompany.setExpirationDate(endTime);
+                        companyMapper.updateById(newCompany);
+                        System.out.println("版本变更成功,到期时间更新成功。");
+                    }else {
+                        System.out.println("未查询到该新建公司有支付订单");
                     }
                     }
                 } else {
                 } else {
                     //企业已经存在
                     //企业已经存在
@@ -2817,173 +2881,6 @@ public class WeiXinCorpController {
         return cnt>0;
         return cnt>0;
     }
     }
 
 
-    private boolean saveOrderAndUpCompany(org.json.JSONObject jsonObject) throws Exception {
-        System.err.println("+++++++++++++++++++订单回调开始++++++++++++++++++++++");
-        String infoType = jsonObject.getString("InfoType");
-        String suiteAccessToken = getSuiteAccessToken();
-        System.out.println("++++++++++++++++++++suiteAccessToken为:"+suiteAccessToken);
-        HttpHeaders headers = new HttpHeaders();
-        RestTemplate restTemplate = new RestTemplate();
-        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-        headers.setContentType(type);
-        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-        //版本变更
-        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 wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("corpid", paidCorpId));
-            Company company = companyMapper.selectById(wxCorpInfo.getCompanyId());
-            if(company != null){
-                System.err.println("版本变更的公司信息为:");
-                System.err.println(wxCorpInfo.toString());
-                JSONObject map = new JSONObject();
-                map.put("auth_corpid",wxCorpInfo.getCorpid());
-                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());
-                System.out.println("+++++++++++++++++++++++++版本更新信息为:"+json);
-                if (json.containsKey("auth_corp_info")){
-                    String edition_id = json.getJSONObject("edition_info").getJSONArray("agent")
-                            .getJSONObject(0).getString("edition_id");
-                    switch (edition_id){
-                        //基础版
-                        case "sp17da4a6e6f2a91f8":
-                            company.setPackageProject(0);
-                            company.setPackageOa(0);
-                            company.setPackageExpense(0);
-                            company.setPackageCustomer(0);
-                            company.setPackageEngineering(0);
-                            company.setPackageProvider(0);
-                            break;
-                        //专业版
-                        case "sp4a30d92ede178afd":
-                            company.setPackageProject(1);//项目协作平台
-                            company.setPackageOa(0);//OA平台;请假,出差等
-                            company.setPackageExpense(1);//费用报销
-                            company.setPackageCustomer(0);//客户管理
-                            company.setPackageEngineering(0);//工程专业
-                            company.setPackageProvider(0);//供应商模块
-                            break;
-                        //建筑版
-                        case "spd04f1b0582a0fe19":
-                            company.setPackageProject(1);//项目协作平台
-                            company.setPackageOa(0);//OA平台;请假,出差等
-                            company.setPackageExpense(1);//费用报销
-                            company.setPackageCustomer(1);//客户管理
-                            company.setPackageEngineering(1);//工程专业
-                            company.setPackageProvider(0);//供应商模块
-                            break;
-                        //旗舰版
-                        case "sp69f71e42798c7f55":
-                            company.setPackageProject(1);//项目协作平台
-                            company.setPackageOa(1);//OA平台;请假,出差等
-                            company.setPackageExpense(1);//费用报销
-                            company.setPackageCustomer(1);//客户管理
-                            company.setPackageEngineering(0);//工程专业
-                            company.setPackageProvider(1);//供应商模块
-                            break;
-                    }
-                    companyMapper.updateById(company);
-                    System.out.println(company.getCompanyName()+"已成功变更版本,版本号为:"+edition_id);
-                }else {
-                    System.out.println("++++++++++++++++++++++"+"版本变更失败!"+"++++++++++++++++++++++++");
-                    return false;
-                }
-            }else {
-                System.err.println("#############################" + paidCorpId + "该公司尚未授权开通,将在授权开通后为其变更版本及更新到期时间。");
-            }
-        }else {
-            String orderId = "";
-            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;
-            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"));
-                if (orderDetail.containsKey("operator_id")){
-                    wxOrder.setOperatorId(orderDetail.getString("operator_id"));
-                }
-                wxOrder.setSuiteid(orderDetail.getString("suiteid"));
-                if (orderDetail.containsKey("appid")){
-                    wxOrder.setAppid(orderDetail.getString("appid"));
-                }
-                wxOrder.setEditionId(orderDetail.getString("edition_id"));
-                wxOrder.setEditionName(orderDetail.getString("edition_name"));
-                wxOrder.setPrice(orderDetail.getInteger("price"));
-                wxOrder.setUserCount(orderDetail.getInteger("user_count"));
-                wxOrder.setOrderPeriod(orderDetail.getInteger("order_period"));
-                LocalDateTime order_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("order_time"),0,ZoneOffset.ofHours(8));
-                wxOrder.setOrderTime(order_time);
-                if (orderDetail.getLong("paid_time")!=0){
-                    LocalDateTime paid_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("paid_time"),0,ZoneOffset.ofHours(8));
-                    wxOrder.setPaidTime(paid_time);
-                }
-                if (orderDetail.getLong("begin_time")!=0){
-                    LocalDateTime begin_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("begin_time"),0,ZoneOffset.ofHours(8));
-                    wxOrder.setBeginTime(begin_time);
-                }
-                if (orderDetail.getLong("end_time")!=0){
-                    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.getInteger("service_share_amount"));
-                wxOrder.setPlatformShareAmount(orderDetail.getInteger("platform_share_amount"));
-                wxOrder.setDealerShareAmount(orderDetail.getInteger("dealer_share_amount"));
-                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()));
-                if (corpid!=null){
-                    Company company = companyMapper.selectById(corpid.getCompanyId());
-                    if("pay_for_app_success".equals(infoType)){
-                        wxOrderMapper.updateById(wxOrder);
-                        Integer orderPeriod = wxOrder.getOrderPeriod();
-                        //若到期时间早已过期,则取当前时间加上开通时长
-                        if (LocalDateTime.now().isAfter(company.getExpirationDate())){
-                            company.setExpirationDate(LocalDateTime.now().plusDays(orderPeriod));
-                        }else {
-                            company.setExpirationDate(company.getExpirationDate().plusDays(orderPeriod));
-                        }
-                    }else if ("refund".equals(infoType)){
-                        wxOrderMapper.updateById(wxOrder);
-                        //退款则将其到期时间设置为现在的时间减去一天
-                        company.setExpirationDate(LocalDateTime.now().minusDays(1));
-                    }
-                }
-                if ("open_order".equals(infoType)){
-                    wxOrderMapper.insert(wxOrder);
-                }else if ("change_order".equals(infoType)){
-                    wxOrder.setOldOrderid(jsonObject.getString("OldOrderId"));
-                    wxOrderMapper.insert(wxOrder);
-                }
-            }else {
-                System.out.println("+++++++++++++"+"微信订单查询更新失败"+"+++++++++++++++");
-                return  false;
-            }
-        }
-        return true;
-    }
-
     @RequestMapping("getCorpAuthInfo")
     @RequestMapping("getCorpAuthInfo")
     public HttpRespMsg getCorpAuthInfo(String corpId) throws Exception {
     public HttpRespMsg getCorpAuthInfo(String corpId) throws Exception {
         HttpRespMsg msg = new HttpRespMsg();
         HttpRespMsg msg = new HttpRespMsg();
@@ -3023,4 +2920,135 @@ public class WeiXinCorpController {
 
 
         return new HttpRespMsg();
         return new HttpRespMsg();
     }
     }
+
+    //查询订单
+    private WxOrder getOrder (String orderId) throws Exception {
+        String suiteAccessToken = getSuiteAccessToken();
+        System.out.println("++++++++++++++++++++suiteAccessToken为:"+suiteAccessToken);
+        HttpHeaders headers = new HttpHeaders();
+        RestTemplate restTemplate = new RestTemplate();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+        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);
+        WxOrder wxOrder = new WxOrder();
+        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"));
+            if (orderDetail.containsKey("operator_id")){
+                wxOrder.setOperatorId(orderDetail.getString("operator_id"));
+            }
+            wxOrder.setSuiteid(orderDetail.getString("suiteid"));
+            wxOrder.setEditionId(orderDetail.getString("edition_id"));
+            wxOrder.setEditionName(orderDetail.getString("edition_name"));
+            wxOrder.setPrice(orderDetail.getInteger("price"));
+            wxOrder.setUserCount(orderDetail.getInteger("user_count"));
+            wxOrder.setOrderPeriod(orderDetail.getInteger("order_period"));
+            LocalDateTime order_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("order_time"),0,ZoneOffset.ofHours(8));
+            wxOrder.setOrderTime(order_time);
+            if (orderDetail.getLong("paid_time")!=0){
+                LocalDateTime paid_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("paid_time"),0,ZoneOffset.ofHours(8));
+                wxOrder.setPaidTime(paid_time);
+            }
+            if (orderDetail.getLong("begin_time")!=0){
+                LocalDateTime begin_time =LocalDateTime.ofEpochSecond(orderDetail.getLong("begin_time"),0,ZoneOffset.ofHours(8));
+                wxOrder.setBeginTime(begin_time);
+            }
+            if (orderDetail.getLong("end_time")!=0){
+                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.getInteger("service_share_amount"));
+            wxOrder.setPlatformShareAmount(orderDetail.getInteger("platform_share_amount"));
+            wxOrder.setDealerShareAmount(orderDetail.getInteger("dealer_share_amount"));
+            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"));
+            }
+            return wxOrder;
+        }else {
+            System.out.println("+++++++++++++"+"微信订单查询更新失败"+"+++++++++++++++");
+            return  null;
+        }
+    }
+
+    //版本变更
+    private void versionChange (WxCorpInfo wxCorpInfo) throws Exception {
+        String suiteAccessToken = getSuiteAccessToken();
+        System.out.println("++++++++++++++++++++suiteAccessToken为:"+suiteAccessToken);
+        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_auth_info?suite_access_token="+suiteAccessToken;
+        HttpHeaders headers = new HttpHeaders();
+        RestTemplate restTemplate = new RestTemplate();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+        JSONObject map = new JSONObject();
+        map.put("auth_corpid",wxCorpInfo.getCorpid());
+        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());
+        System.out.println("+++++++++++++++++++++++++版本更新信息为:"+json);
+        Company newCompany = new Company();
+        newCompany.setId(wxCorpInfo.getCompanyId());
+        if (json.containsKey("auth_corp_info")){
+            String edition_id = json.getJSONObject("edition_info").getJSONArray("agent")
+                    .getJSONObject(0).getString("edition_id");
+            switch (edition_id){
+                //基础版
+                case "sp17da4a6e6f2a91f8":
+                    newCompany.setPackageProject(0);
+                    newCompany.setPackageOa(0);
+                    newCompany.setPackageExpense(0);
+                    newCompany.setPackageCustomer(0);
+                    newCompany.setPackageEngineering(0);
+                    newCompany.setPackageProvider(0);
+                    break;
+                //专业版
+                case "sp4a30d92ede178afd":
+                    newCompany.setPackageProject(1);//项目协作平台
+                    newCompany.setPackageOa(0);//OA平台;请假,出差等
+                    newCompany.setPackageExpense(1);//费用报销
+                    newCompany.setPackageCustomer(0);//客户管理
+                    newCompany.setPackageEngineering(0);//工程专业
+                    newCompany.setPackageProvider(0);//供应商模块
+                    break;
+                //建筑版
+                case "spd04f1b0582a0fe19":
+                    newCompany.setPackageProject(1);//项目协作平台
+                    newCompany.setPackageOa(0);//OA平台;请假,出差等
+                    newCompany.setPackageExpense(1);//费用报销
+                    newCompany.setPackageCustomer(1);//客户管理
+                    newCompany.setPackageEngineering(1);//工程专业
+                    newCompany.setPackageProvider(0);//供应商模块
+                    break;
+                //旗舰版
+                case "sp69f71e42798c7f55":
+                    newCompany.setPackageProject(1);//项目协作平台
+                    newCompany.setPackageOa(1);//OA平台;请假,出差等
+                    newCompany.setPackageExpense(1);//费用报销
+                    newCompany.setPackageCustomer(1);//客户管理
+                    newCompany.setPackageEngineering(0);//工程专业
+                    newCompany.setPackageProvider(1);//供应商模块
+                    break;
+            }
+            companyMapper.updateById(newCompany);
+            System.out.println("已成功变更版本,版本号为:"+edition_id);
+        }else {
+            System.out.println("++++++++++++++++++++++"+"版本变更失败!"+"++++++++++++++++++++++++");
+        }
+    }
 }
 }

+ 1 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/WxOrder.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  * </p>
  *
  *
  * @author Seyason
  * @author Seyason
- * @since 2022-11-09
+ * @since 2022-11-17
  */
  */
 @Data
 @Data
 @EqualsAndHashCode(callSuper = false)
 @EqualsAndHashCode(callSuper = false)
@@ -66,12 +66,6 @@ public class WxOrder extends Model<WxOrder> {
     @TableField("suiteid")
     @TableField("suiteid")
     private String suiteid;
     private String suiteid;
 
 
-    /**
-     * 应用id。(仅旧套件有该字段)
-     */
-    @TableField("appid")
-    private String appid;
-
     /**
     /**
      * 购买版本ID
      * 购买版本ID
      */
      */

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/GanttDataItem.java

@@ -18,6 +18,7 @@ public class GanttDataItem {
     public Integer projectId;
     public Integer projectId;
     public String render;
     public String render;
     public String type;
     public String type;
+    public String translationType;
     public String color;
     public String color;
     public List<GanttDataItem> children;
     public List<GanttDataItem> children;
 }
 }

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

@@ -13,8 +13,10 @@ import java.util.Map;
 public class TimelinessRateVO {
 public class TimelinessRateVO {
     private String userName;
     private String userName;
     private String corpwxUserId;
     private String corpwxUserId;
+    private Integer corpwxDeptId;
     private String departmentName;
     private String departmentName;
     private String timelinessRate;
     private String timelinessRate;
+    private String timelinessRateWithLeave;
     private String jobNumber;
     private String jobNumber;
     private List<Map<String,Object>> dataList;
     private List<Map<String,Object>> dataList;
 }
 }

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

@@ -5939,13 +5939,33 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             TimelinessRateVO timelinessRateVO=new TimelinessRateVO();
             TimelinessRateVO timelinessRateVO=new TimelinessRateVO();
             timelinessRateVO.setUserName(user.getName());
             timelinessRateVO.setUserName(user.getName());
             timelinessRateVO.setJobNumber(user.getJobNumber());
             timelinessRateVO.setJobNumber(user.getJobNumber());
-            timelinessRateVO.setTimelinessRate(String.valueOf(dft.format(0)));
+            timelinessRateVO.setCorpwxDeptId(user.getCorpwxDeptid());
+            timelinessRateVO.setCorpwxUserId(user.getCorpwxUserid());
             Optional<Department> first = departmentList.stream().filter(dp -> dp.getDepartmentId().equals(user.getDepartmentId())).findFirst();
             Optional<Department> first = departmentList.stream().filter(dp -> dp.getDepartmentId().equals(user.getDepartmentId())).findFirst();
             if(first.isPresent()){
             if(first.isPresent()){
                 timelinessRateVO.setDepartmentName(first.get().getDepartmentName());
                 timelinessRateVO.setDepartmentName(first.get().getDepartmentName());
             }
             }
             List<Map<String, Object>> mapList = listMap.get(user.getName());
             List<Map<String, Object>> mapList = listMap.get(user.getName());
+            //去掉填非工作日
+            for (LocalDateTime localDateTime : dateTimeList) {
+                if(mapList!=null){
+                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())&&!mapList.stream().anyMatch(ml->{
+                        Object date = ml.get("createDate");
+                        LocalDate createDate = LocalDate.parse(String.valueOf(date));
+                        return createDate.isEqual(localDateTime.toLocalDate());
+                    })){
+                        days-=1;
+                    }
+                }else {
+                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())){
+                        days-=1;
+                    }
+                }
+
+            }
             //请假的不参与及时率统计
             //请假的不参与及时率统计
+            //todo: 此处对请假的 数据做处理 计请假填报
+            long daysWithLeave =days;
             if(leaveSheets.size()>0){
             if(leaveSheets.size()>0){
                 for (LeaveSheet leaveSheet : leaveSheets) {
                 for (LeaveSheet leaveSheet : leaveSheets) {
                     List<LocalDateTime> leaveDateList = getDays(leaveSheet.getStartDate().atTime(LocalTime.MIN), leaveSheet.getEndDate().atTime(LocalTime.MIN));
                     List<LocalDateTime> leaveDateList = getDays(leaveSheet.getStartDate().atTime(LocalTime.MIN), leaveSheet.getEndDate().atTime(LocalTime.MIN));
@@ -5973,23 +5993,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     }
                 }
                 }
             }
             }
-            //去掉填未填日报非工作日
-            for (LocalDateTime localDateTime : dateTimeList) {
-                if(mapList!=null){
-                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())&&!mapList.stream().anyMatch(ml->{
-                        Object date = ml.get("createDate");
-                        LocalDate createDate = LocalDate.parse(String.valueOf(date));
-                        return createDate.isEqual(localDateTime.toLocalDate());
-                    })){
-                        days-=1;
-                    }
-                }else {
-                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())){
-                        days-=1;
-                    }
-                }
-
-            }
             int num=0;
             int num=0;
             if(mapList!=null){
             if(mapList!=null){
                 for (Map<String, Object> map : mapList) {
                 for (Map<String, Object> map : mapList) {
@@ -6025,7 +6028,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     dataList.add(objectMap);
                     dataList.add(objectMap);
                 }
                 }
                 BigDecimal bigDecimal=new BigDecimal(num);
                 BigDecimal bigDecimal=new BigDecimal(num);
+                BigDecimal bigDecimalWithLeave=new BigDecimal(num+(daysWithLeave-days));
                 BigDecimal divide;
                 BigDecimal divide;
+                BigDecimal divideWithLeave;
                 if(days!=0){
                 if(days!=0){
                      divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
                      divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
                 }else if(days==0){
                 }else if(days==0){
@@ -6040,11 +6045,29 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     divide=new BigDecimal(1);
                     divide=new BigDecimal(1);
                     log.error("填报及时率数据异常:==="+user.getName());
                     log.error("填报及时率数据异常:==="+user.getName());
                 }
                 }
+                if(daysWithLeave!=0){
+                    divideWithLeave = bigDecimalWithLeave.divide(BigDecimal.valueOf(daysWithLeave), 2, BigDecimal.ROUND_HALF_UP);
+                }else if(daysWithLeave==0){
+                    divideWithLeave=new BigDecimal(1);
+                    //查看当天有请假直接算100%
+                }else if (daysWithLeave==0&&num!=0&&leaveSheetList.size()>0){
+                    divideWithLeave=new BigDecimal(1);
+                }else{
+                    divideWithLeave=new BigDecimal(0);
+                }
+                if(divideWithLeave.compareTo(new BigDecimal(1))==1){
+                    divideWithLeave=new BigDecimal(1);
+                    log.error("填报及时率数据异常:==="+user.getName());
+                }
                 String number = dft.format(divide);
                 String number = dft.format(divide);
+                String numberWithLeave = dft.format(divideWithLeave);
                 timelinessRateVO.setTimelinessRate(String.valueOf(number));
                 timelinessRateVO.setTimelinessRate(String.valueOf(number));
+                timelinessRateVO.setTimelinessRateWithLeave(String.valueOf(numberWithLeave));
             }else {
             }else {
                 BigDecimal bigDecimal=new BigDecimal(num);
                 BigDecimal bigDecimal=new BigDecimal(num);
+                BigDecimal bigDecimalWithLeave=new BigDecimal(num+(daysWithLeave-days));
                 BigDecimal divide;
                 BigDecimal divide;
+                BigDecimal divideWithLeave;
                 if(days!=0){
                 if(days!=0){
                     divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
                     divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
                 }else if(days==0){
                 }else if(days==0){
@@ -6061,8 +6084,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     divide=new BigDecimal(1);
                     divide=new BigDecimal(1);
                     log.error("填报及时率数据异常:==="+user.getName());
                     log.error("填报及时率数据异常:==="+user.getName());
                 }
                 }
+                if(daysWithLeave!=0){
+                    divideWithLeave = bigDecimalWithLeave.divide(BigDecimal.valueOf(daysWithLeave), 2, BigDecimal.ROUND_HALF_UP);
+                }else if(daysWithLeave==0){
+                    divideWithLeave=new BigDecimal(1);
+                    //查看当天有请假直接算100%
+                }else if (daysWithLeave==0&&num!=0&&leaveSheetList.size()>0){
+                    divideWithLeave=new BigDecimal(1);
+                }else if(leaveSheets.size()>0){
+                    divideWithLeave=new BigDecimal(1);
+                }else{
+                    divideWithLeave=new BigDecimal(0);
+                }
+                if(divideWithLeave.compareTo(new BigDecimal(1))==1){
+                    divideWithLeave=new BigDecimal(1);
+                    log.error("填报及时率数据异常:==="+user.getName());
+                }
                 String number = dft.format(divide);
                 String number = dft.format(divide);
+                String numberWithLeave = dft.format(divideWithLeave);
                 timelinessRateVO.setTimelinessRate(String.valueOf(number));
                 timelinessRateVO.setTimelinessRate(String.valueOf(number));
+                timelinessRateVO.setTimelinessRateWithLeave(String.valueOf(numberWithLeave));
             }
             }
             timelinessRateVO.setDataList(dataList);
             timelinessRateVO.setDataList(dataList);
             resultList.add(timelinessRateVO);
             resultList.add(timelinessRateVO);
@@ -6082,21 +6123,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg = getUserReportTimelinessRate(request, startDate, endDate, null, null, null, null);
         HttpRespMsg msg = getUserReportTimelinessRate(request, startDate, endDate, null, null, null, null);
         HashMap map= (HashMap) msg.data;
         HashMap map= (HashMap) msg.data;
         List<TimelinessRateVO> list = (List<TimelinessRateVO>) map.get("list");
         List<TimelinessRateVO> list = (List<TimelinessRateVO>) map.get("list");
-        //String[] s={"人员","工号","部门","填报及时率"};
-        String[] s={MessageUtils.message("entry.personnel"),MessageUtils.message("entry.No"),MessageUtils.message("excel.department"),MessageUtils.message("excel.timeFill")};
+        //String[] s={"人员","工号","部门","填报及时率","填报及时率(含请假)"};
+        String[] s={MessageUtils.message("entry.personnel"),MessageUtils.message("entry.No"),MessageUtils.message("excel.department"),MessageUtils.message("excel.timeFill"),MessageUtils.message("excel.timeFillWithLeave")};
         List<String> titleString = Arrays.asList(s);
         List<String> titleString = Arrays.asList(s);
         List<List<String>> dataList=new ArrayList<>();
         List<List<String>> dataList=new ArrayList<>();
         dataList.add(titleString);
         dataList.add(titleString);
         for (TimelinessRateVO timelinessRateVO : list) {
         for (TimelinessRateVO timelinessRateVO : list) {
             List<String> item=new ArrayList<>();
             List<String> item=new ArrayList<>();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                item.add(timelinessRateVO.getCorpwxUserId()==null?"":timelinessRateVO.getCorpwxUserId());
+                item.add("$userName="+(timelinessRateVO.getCorpwxUserId()==null?"":timelinessRateVO.getCorpwxUserId())+"$");
             }else {
             }else {
                 item.add(timelinessRateVO.getUserName());
                 item.add(timelinessRateVO.getUserName());
             }
             }
             item.add(timelinessRateVO.getJobNumber());
             item.add(timelinessRateVO.getJobNumber());
-            item.add(timelinessRateVO.getDepartmentName());
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                item.add("$departmentName="+(String.valueOf(timelinessRateVO.getCorpwxDeptId()==null?"":timelinessRateVO.getCorpwxDeptId()))+"$");
+            }else {
+                item.add(timelinessRateVO.getDepartmentName());
+            }
             item.add(timelinessRateVO.getTimelinessRate());
             item.add(timelinessRateVO.getTimelinessRate());
+            item.add(timelinessRateVO.getTimelinessRateWithLeave());
             dataList.add(item);
             dataList.add(item);
         }
         }
         //生成excel文件导出
         //生成excel文件导出
@@ -7895,14 +7941,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         System.out.println(dataDetailList);
         System.out.println(dataDetailList);
         HashMap map= (HashMap) msg.data;
         HashMap map= (HashMap) msg.data;
         List<TimelinessRateVO> list = (List<TimelinessRateVO>) map.get("list");
         List<TimelinessRateVO> list = (List<TimelinessRateVO>) map.get("list");
-        //String[] s={"人员","工号","部门","填报及时率"};
-        String[] s={MessageUtils.message("entry.personnel"),MessageUtils.message("entry.No"),MessageUtils.message("excel.department"),MessageUtils.message("excel.timeFill")};
+        String[] s={"人员","工号","部门","总及时率","总及时率(含请假)"};
         List<String> titleString = new ArrayList<>(Arrays.asList(s));
         List<String> titleString = new ArrayList<>(Arrays.asList(s));
         for (Map<String, Object> objectMap : dataDetailList) {
         for (Map<String, Object> objectMap : dataDetailList) {
             List<Map<String,Object>> data = (List<Map<String, Object>>) objectMap.get("data");
             List<Map<String,Object>> data = (List<Map<String, Object>>) objectMap.get("data");
             for (Map<String, Object> datum : data) {
             for (Map<String, Object> datum : data) {
                 String week =String.valueOf( datum.get("week"));
                 String week =String.valueOf( datum.get("week"));
-
                 titleString.add(week+"_"+String.valueOf(datum.get("startDate"))+"-"+ String.valueOf(datum.get("endDate"))+"及时率");
                 titleString.add(week+"_"+String.valueOf(datum.get("startDate"))+"-"+ String.valueOf(datum.get("endDate"))+"及时率");
             }
             }
         }
         }
@@ -7916,8 +7960,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 item.add(timelinessRateVO.getUserName());
                 item.add(timelinessRateVO.getUserName());
             }
             }
             item.add(timelinessRateVO.getJobNumber());
             item.add(timelinessRateVO.getJobNumber());
-            item.add(timelinessRateVO.getDepartmentName());
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                item.add("$departmentName="+(String.valueOf(timelinessRateVO.getCorpwxDeptId()==null?"":timelinessRateVO.getCorpwxDeptId()))+"$");
+            }else {
+                item.add(timelinessRateVO.getDepartmentName());
+            }
             item.add(timelinessRateVO.getTimelinessRate());
             item.add(timelinessRateVO.getTimelinessRate());
+            item.add(timelinessRateVO.getTimelinessRateWithLeave());
             for (Map<String, Object> objectMap : dataDetailList) {
             for (Map<String, Object> objectMap : dataDetailList) {
                 List<Map<String,Object>> data = (List<Map<String, Object>>) objectMap.get("data");
                 List<Map<String,Object>> data = (List<Map<String, Object>>) objectMap.get("data");
                 for (Map<String, Object> datum : data) {
                 for (Map<String, Object> datum : data) {
@@ -8021,7 +8070,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     parent.id=department.getDepartmentId().toString();
                     parent.id=department.getDepartmentId().toString();
                     parent.time = 0;
                     parent.time = 0;
                     parent.text=department.getDepartmentName();
                     parent.text=department.getDepartmentName();
-                    parent.type="department";
+                    parent.translationType="department";
                     if(department.getSuperiorId()!=null){
                     if(department.getSuperiorId()!=null){
                         parent.parent=String.valueOf(department.getSuperiorId());
                         parent.parent=String.valueOf(department.getSuperiorId());
                         parent.type="milestone";
                         parent.type="milestone";
@@ -8061,7 +8110,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         userGantt.color=u.getColor();
                         userGantt.color=u.getColor();
                         userGantt.parent=String.valueOf(u.getDepartmentId());
                         userGantt.parent=String.valueOf(u.getDepartmentId());
                         userGantt.children=new ArrayList<>();
                         userGantt.children=new ArrayList<>();
-                        userGantt.type="user";
+                        userGantt.translationType="user";
                         itemList=getUserGanttDataItemList(userGantt,itemList);
                         itemList=getUserGanttDataItemList(userGantt,itemList);
                     }
                     }
                 }
                 }
@@ -8236,7 +8285,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             curItem.text = MessageUtils.message("leave.busTra")+"/" + businessTrip.getOwnerName();
                             curItem.text = MessageUtils.message("leave.busTra")+"/" + businessTrip.getOwnerName();
                             curItem.start_date = bustripProject.getStartDate().toString();
                             curItem.start_date = bustripProject.getStartDate().toString();
                             curItem.end_date = bustripProject.getEndDate().toString();
                             curItem.end_date = bustripProject.getEndDate().toString();
-                            curItem.type="user";
+                            curItem.translationType="user";
                             curItem.parent = btLastItemId;
                             curItem.parent = btLastItemId;
                             itemList=getUserGanttDataItemList(curItem,itemList);
                             itemList=getUserGanttDataItemList(curItem,itemList);
                             btLastItemId = String.valueOf(bustripProject.getProjectId());
                             btLastItemId = String.valueOf(bustripProject.getProjectId());
@@ -8277,7 +8326,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         parent.start_date = start_date;
                         parent.start_date = start_date;
                         parent.end_date = end_date;
                         parent.end_date = end_date;
                         parent.time = 0;
                         parent.time = 0;
-                        parent.type="user";
+                        parent.translationType="user";
                         parent.parent=String.valueOf(departmentId);
                         parent.parent=String.valueOf(departmentId);
                         parent.children=new ArrayList<>();
                         parent.children=new ArrayList<>();
                         Optional<User> optional = AllUser.stream().filter(au -> au.getId().equals(userId)).findFirst();
                         Optional<User> optional = AllUser.stream().filter(au -> au.getId().equals(userId)).findFirst();
@@ -8322,7 +8371,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     curItem.start_date = start_date;
                     curItem.start_date = start_date;
                     curItem.end_date = end_date;
                     curItem.end_date = end_date;
                     curItem.time = (Integer)map.get("duration");
                     curItem.time = (Integer)map.get("duration");
-                    curItem.type="user";
+                    curItem.translationType="user";
                     curItem.parent = lastItemId;
                     curItem.parent = lastItemId;
                     itemList=getUserGanttDataItemList(curItem,itemList);
                     itemList=getUserGanttDataItemList(curItem,itemList);
                     lastItemId = projectId;
                     lastItemId = projectId;
@@ -8363,7 +8412,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             subParent.id=dept.getDepartmentId().toString();
             subParent.id=dept.getDepartmentId().toString();
             subParent.time = 0;
             subParent.time = 0;
             subParent.text=dept.getDepartmentName();
             subParent.text=dept.getDepartmentName();
-            subParent.type="department";
+            subParent.translationType="department";
             if(dept.getSuperiorId()!=null){
             if(dept.getSuperiorId()!=null){
                 subParent.parent=String.valueOf(dept.getSuperiorId());
                 subParent.parent=String.valueOf(dept.getSuperiorId());
                 subParent.type="milestone";
                 subParent.type="milestone";

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -639,6 +639,7 @@ excel.planTime=计划完成时间
 excel.actualTime=实际完成时间
 excel.actualTime=实际完成时间
 excel.unclassified=未分类
 excel.unclassified=未分类
 excel.timeFill=填报及时率
 excel.timeFill=填报及时率
+excel.timeFillWithLeave=填报及时率(含请假)
 excel.propActualTime=实际用时占比
 excel.propActualTime=实际用时占比
 excel.classification=分类
 excel.classification=分类
 excel.name=名称
 excel.name=名称

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -639,6 +639,7 @@ excel.planTime=Planned completion time
 excel.actualTime=Actual completion time
 excel.actualTime=Actual completion time
 excel.unclassified=Unclassified
 excel.unclassified=Unclassified
 excel.timeFill=Timeliness rate of filling
 excel.timeFill=Timeliness rate of filling
+excel.timeFillWithLeave=Timeliness rate of filling(Contain leave)
 excel.propActualTime=Proportion of actual time
 excel.propActualTime=Proportion of actual time
 excel.classification=classification
 excel.classification=classification
 excel.name=name
 excel.name=name

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

@@ -678,7 +678,7 @@
     </select>
     </select>
 
 
     <select id="getUserReportTimelinessRate" resultType="java.util.Map">
     <select id="getUserReportTimelinessRate" resultType="java.util.Map">
-        select `user`.name as userName,`user`.corpwx_userid as corpwxUserId,rl.create_date as createDate,MIN(rl.operate_date )as createTime from report_log rl
+        select `user`.name as userName,`user`.corpwx_userid as corpwxUserId,`user`.corpwx_deptid as corpwxDeptId,rl.create_date as createDate,MIN(rl.operate_date )as createTime from report_log rl
         left join `user` on `user`.id=rl.operator_id
         left join `user` on `user`.id=rl.operator_id
         where rl.company_id=#{companyId}
         where rl.company_id=#{companyId}
         and rl.create_date between  #{startDate} and #{endDate}
         and rl.create_date between  #{startDate} and #{endDate}

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

@@ -11,7 +11,6 @@
         <result column="paid_corpid" property="paidCorpid" />
         <result column="paid_corpid" property="paidCorpid" />
         <result column="operator_id" property="operatorId" />
         <result column="operator_id" property="operatorId" />
         <result column="suiteid" property="suiteid" />
         <result column="suiteid" property="suiteid" />
-        <result column="appid" property="appid" />
         <result column="edition_id" property="editionId" />
         <result column="edition_id" property="editionId" />
         <result column="edition_name" property="editionName" />
         <result column="edition_name" property="editionName" />
         <result column="price" property="price" />
         <result column="price" property="price" />
@@ -32,7 +31,7 @@
 
 
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-        orderid, old_orderid, order_status, order_type, paid_corpid, operator_id, suiteid, appid, edition_id, edition_name, price, user_count, order_period, order_time, paid_time, begin_time, end_time, order_from, operator_corpid, service_share_amount, platform_share_amount, dealer_share_amount, dealer_corpid, dealer_corp_name
+        orderid, old_orderid, order_status, order_type, paid_corpid, operator_id, suiteid, edition_id, edition_name, price, user_count, order_period, order_time, paid_time, begin_time, end_time, order_from, operator_corpid, service_share_amount, platform_share_amount, dealer_share_amount, dealer_corpid, dealer_corp_name
     </sql>
     </sql>
 
 
 </mapper>
 </mapper>

+ 4 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -507,7 +507,10 @@
                         <!-- <el-select v-model="addForm.inchargerId"  :disabled="(addForm.userId.length==0 && addForm.isPublic == 0) || (!permissions.projectManagement && user.id != addForm.creatorId)" filterable placeholder="请选择项目经理" style="width:32%;" > -->
                         <!-- <el-select v-model="addForm.inchargerId"  :disabled="(addForm.userId.length==0 && addForm.isPublic == 0) || (!permissions.projectManagement && user.id != addForm.creatorId)" filterable placeholder="请选择项目经理" style="width:32%;" > -->
 
 
                         <el-select v-if="user.userNameNeedTranslate != 1" v-model="addForm.inchargerId" filterable :placeholder="$t('defaultText.pleaseChoose')" style="width:32%;" >
                         <el-select v-if="user.userNameNeedTranslate != 1" v-model="addForm.inchargerId" filterable :placeholder="$t('defaultText.pleaseChoose')" style="width:32%;" >
-                            <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                            <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id">
+                                <span style="float: left">{{ item.name }}</span>
+                                <span style="float: right; color: #8492a6;" v-if="user.companyId == 936">{{ item.jobNumber }}</span>
+                            </el-option>
                         </el-select>
                         </el-select>
 
 
                         <selectCat v-if="user.userNameNeedTranslate == 1" :size="'medium'" :subject="participator" :subjectId="addForm.inchargerId" :distinction="'3'" @selectCal="selectCal"></selectCat>
                         <selectCat v-if="user.userNameNeedTranslate == 1" :size="'medium'" :subject="participator" :subjectId="addForm.inchargerId" :distinction="'3'" @selectCal="selectCal"></selectCat>

+ 20 - 12
fhKeeper/formulahousekeeper/timesheet/src/views/project/project_gantt.vue

@@ -49,17 +49,17 @@
       <!-- 人员/项目筛选 -->
       <!-- 人员/项目筛选 -->
       <div class="head_select">
       <div class="head_select">
         <span>{{(this.radio1 == $t('an-ren-yuan-cha-kan') ? $t('ren-yuan') : $t('other.project'))}}</span>
         <span>{{(this.radio1 == $t('an-ren-yuan-cha-kan') ? $t('ren-yuan') : $t('other.project'))}}</span>
-      <el-select clearable filterable v-model="valuex" :placeholder="$t('defaultText.pleaseChoose')" size="small" style="margin-left:9px;width:10vw" @change="optupdata()">
-        <el-option
-          v-for="item in screenList"
-          :key="item.id"
-          :label="reqpar1 ? item.projectName : item.name"
-          :value="item.id"
-          >
-          <span v-if="reqpar1" style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
-          <span v-if="reqpar1" style="float: right;font-size: 13px;margin-left: 20px">{{ item.projectName }}</span>
-        </el-option>
-      </el-select>
+          <el-select v-if="reqpar1" clearable filterable v-model="valuex" :placeholder="$t('defaultText.pleaseChoose')" size="small" style="margin-left:9px;width:10vw" @change="optupdata()">
+            <el-option v-for="item in screenList" :key="item.id" :label="item.projectName" :value="item.id">
+              <span v-if="reqpar1" style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
+              <span v-if="reqpar1" style="float: right;font-size: 13px;margin-left: 20px">{{ item.projectName }}</span>
+            </el-option>
+          </el-select>
+          <el-select v-if="!reqpar1 && user.userNameNeedTranslate != '1'" clearable filterable v-model="valuex" :placeholder="$t('defaultText.pleaseChoose')" size="small" style="margin-left:9px;width:10vw" @change="optupdata()">
+            <el-option v-for="item in screenList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+          <selectCat v-if="!reqpar1 && user.userNameNeedTranslate == '1'" style="margin-left:9px;" :size="'small'" :widthStr="'153'" :subject="screenList" :subjectId="valuex" :distinction="'1'" @selectCal="selectCal"></selectCat>
       </div>
       </div>
       <!-- 资源需求导入/导出 -->
       <!-- 资源需求导入/导出 -->
       <div class="head_files" v-if="!isDataLoaded">
       <div class="head_files" v-if="!isDataLoaded">
@@ -180,11 +180,13 @@
 import { error } from 'dingtalk-jsapi';
 import { error } from 'dingtalk-jsapi';
 import Gantt from './gantt.vue';
 import Gantt from './gantt.vue';
 import vueGantt from './vueGantt.vue'
 import vueGantt from './vueGantt.vue'
+// 自定义select组件
+import SelectCat from "@/components/select.vue"
 
 
 export default {
 export default {
   name: 'project_gantt',
   name: 'project_gantt',
   props: {},
   props: {},
-  components: {Gantt, vueGantt},
+  components: {Gantt, vueGantt, SelectCat},
   data() {
   data() {
     return {
     return {
       taskType: '',
       taskType: '',
@@ -240,6 +242,12 @@ export default {
     this.isDataLoaded = true
     this.isDataLoaded = true
   },
   },
   methods: {
   methods: {
+    selectCal(obj) {
+      if(obj.distinction == '1') {
+          this.valuex = obj.id
+          this.optupdata()
+      }
+    },
     setGroup() {
     setGroup() {
           this.$refs.ganttTable1.setGroup();
           this.$refs.ganttTable1.setGroup();
           // this.$refs.ganttTable2.setGroup();
           // this.$refs.ganttTable2.setGroup();

+ 6 - 6
fhKeeper/formulahousekeeper/timesheet/src/views/project/vueGantt.vue

@@ -4,21 +4,21 @@
         <el-table-column prop="text" label="姓名" width="240" fixed="left" v-if="stafforpro != '按项目查看'">
         <el-table-column prop="text" label="姓名" width="240" fixed="left" v-if="stafforpro != '按项目查看'">
           <template slot-scope="scope">
           <template slot-scope="scope">
               <!-- user.userNameNeedTranslate == 1 -->
               <!-- user.userNameNeedTranslate == 1 -->
-              <span v-if="user.userNameNeedTranslate == 1 && scope.row.type == 'department'"><ww-open-data type='departmentName' :openid='scope.row.text'></ww-open-data></span>
-              <span v-if="user.userNameNeedTranslate == 1 && scope.row.type == 'user'"><ww-open-data type='userName' :openid='scope.row.text'></ww-open-data></span>
-              <span v-if="user.userNameNeedTranslate == 1 && (scope.row.type == 'null' || scope.row.type == null)">{{scope.row.text}}</span>
+              <span v-if="user.userNameNeedTranslate == 1 && scope.row.translationType == 'department'"><ww-open-data type='departmentName' :openid='scope.row.text'></ww-open-data></span>
+              <span v-if="user.userNameNeedTranslate == 1 && scope.row.translationType == 'user'"><ww-open-data type='userName' :openid='scope.row.text'></ww-open-data></span>
+              <span v-if="user.userNameNeedTranslate == 1 && (scope.row.translationType == 'null' || scope.row.translationType == null)">{{scope.row.text}}</span>
               <span v-if="user.userNameNeedTranslate != 1">{{scope.row.text}}</span>
               <span v-if="user.userNameNeedTranslate != 1">{{scope.row.text}}</span>
           </template>
           </template>
         </el-table-column>
         </el-table-column>
         <el-table-column prop="text" label="项目" width="240" fixed="left" v-if="stafforpro == '按项目查看'">
         <el-table-column prop="text" label="项目" width="240" fixed="left" v-if="stafforpro == '按项目查看'">
           <template slot-scope="scope">
           <template slot-scope="scope">
-            <span v-if="user.userNameNeedTranslate == 1 && scope.row.type == 'user'">
+            <span v-if="user.userNameNeedTranslate == 1 && scope.row.translationType == 'user'">
               <span v-for="(item, index) in scope.row.userNameList" :key="index">
               <span v-for="(item, index) in scope.row.userNameList" :key="index">
                 <ww-open-data type='userName' :openid='scope.row.text'></ww-open-data>
                 <ww-open-data type='userName' :openid='scope.row.text'></ww-open-data>
               </span>
               </span>
             </span>
             </span>
-            <span v-if="user.userNameNeedTranslate == 1 && scope.row.type == 'user'">{{scope.row.proNameText}}</span>
-            <span v-if="user.userNameNeedTranslate == 1 && (scope.row.type == 'null' || scope.row.type == null)"> {{scope.row.text}}</span>
+            <span v-if="user.userNameNeedTranslate == 1 && scope.row.translationType == 'user'">{{scope.row.proNameText}}</span>
+            <span v-if="user.userNameNeedTranslate == 1 && (scope.row.translationType == 'null' || scope.row.translationType == null)"> {{scope.row.text}}</span>
             <span v-if="user.userNameNeedTranslate != 1">{{scope.row.text}}</span>
             <span v-if="user.userNameNeedTranslate != 1">{{scope.row.text}}</span>
           </template>
           </template>
         </el-table-column>
         </el-table-column>