|
@@ -0,0 +1,616 @@
|
|
|
|
+package com.malk.huaxiaojinshu.service.Impl;
|
|
|
|
+
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
+import com.malk.huaxiaojinshu.service.DDHXService;
|
|
|
|
+import com.malk.huaxiaojinshu.service.XiaoManService;
|
|
|
|
+import com.malk.huaxiaojinshu.utils.BaseSha256Util;
|
|
|
|
+import com.malk.huaxiaojinshu.utils.XMConf;
|
|
|
|
+import com.malk.huaxiaojinshu.utils.XiaomanAuthorization;
|
|
|
|
+import com.malk.server.aliwork.YDConf;
|
|
|
|
+import com.malk.server.aliwork.YDParam;
|
|
|
|
+import com.malk.server.dingtalk.DDConf;
|
|
|
|
+import com.malk.service.aliwork.YDClient;
|
|
|
|
+import com.malk.service.dingtalk.DDClient;
|
|
|
|
+import com.malk.service.dingtalk.DDClient_Contacts;
|
|
|
|
+import com.malk.service.dingtalk.DDClient_Personnel;
|
|
|
|
+import com.malk.service.dingtalk.DDService;
|
|
|
|
+import com.malk.utils.UtilDateTime;
|
|
|
|
+import com.malk.utils.UtilMap;
|
|
|
|
+import com.mysql.cj.xdevapi.JsonArray;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
|
+import java.time.temporal.TemporalAdjusters;
|
|
|
|
+import java.util.*;
|
|
|
|
+
|
|
|
|
+@Service
|
|
|
|
+@Slf4j
|
|
|
|
+public class XiaoManServiceImpl implements XiaoManService {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private XMConf xmConf;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private DDClient ddClient;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private DDConf ddConf;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private DDClient_Contacts ddClient_contacts;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private DDClient_Personnel ddClient_personnel;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private YDClient ydClient;
|
|
|
|
+ /**
|
|
|
|
+ * 获取客户信息
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void syncUserInfo() {
|
|
|
|
+ //token
|
|
|
|
+ String token = XiaomanAuthorization.getToken(xmConf.getClientId(),xmConf.getClientSecret(),xmConf.getUserName(), BaseSha256Util.encryptSHA256(xmConf.getPassWord()));
|
|
|
|
+ //获取分组信息
|
|
|
|
+ String groupRsp = XiaomanAuthorization.getGroupId(token);
|
|
|
|
+ Map groupResult = (Map) JSON.parse(groupRsp);
|
|
|
|
+ List<Map> mapList = (List<Map>) groupResult.get("data");
|
|
|
|
+
|
|
|
|
+ mapList.forEach(mapItem ->{
|
|
|
|
+ //A组客户需要获取详细信息
|
|
|
|
+ if (mapItem.get("id").equals("8056007887")){
|
|
|
|
+ GetCompanyInfo(token,mapItem);
|
|
|
|
+ }else if (mapItem.get("id").equals("8056009194")){ //B组客户需要获取详细信息
|
|
|
|
+ GetCompanyInfo(token,mapItem);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取各分组客户信息
|
|
|
|
+ * @param token
|
|
|
|
+ * @param mapItem
|
|
|
|
+ */
|
|
|
|
+ public void GetCompanyInfo(String token,Map mapItem){
|
|
|
|
+ //获取公司列表信息
|
|
|
|
+ String companyCount = XiaomanAuthorization.getCompany(token,mapItem.get("id").toString(),1,1,0);
|
|
|
|
+ Map companyCountResult = (Map) JSON.parse(companyCount);
|
|
|
|
+ Map mapCount = (Map) companyCountResult.get("data");
|
|
|
|
+ //获取分组客户总数
|
|
|
|
+ int count = (int) mapCount.get("count");
|
|
|
|
+ int pageSize = 20;
|
|
|
|
+ for (int page = 1; page <= Math.ceil(count / pageSize); page++){
|
|
|
|
+
|
|
|
|
+ String companyRsp = XiaomanAuthorization.getCompany(token,mapItem.get("id").toString(),page,pageSize,0);
|
|
|
|
+ Map companyResult = (Map) JSON.parse(companyRsp);
|
|
|
|
+ Map maps = (Map) companyResult.get("data");
|
|
|
|
+ List<Map> mapCompany = (List<Map>) maps.get("list");
|
|
|
|
+ //遍历每个公司
|
|
|
|
+ mapCompany.forEach(companyItem ->{
|
|
|
|
+ Map hashMap = new HashMap();
|
|
|
|
+ //客户分组ID
|
|
|
|
+ hashMap.put("textField_lx9pmkzr", mapItem.get("id"));
|
|
|
|
+ //客户分组Name
|
|
|
|
+ hashMap.put("textField_lxmla5ul", mapItem.get("name"));
|
|
|
|
+
|
|
|
|
+ //客户公司ID
|
|
|
|
+ hashMap.put("textField_lx9pmkz1", companyItem.get("company_id"));
|
|
|
|
+ //客户公司名称
|
|
|
|
+ hashMap.put("textField_lwypgrqi", companyItem.get("name"));
|
|
|
|
+ //客户公司简称
|
|
|
|
+ hashMap.put("textField_lwypgrqj", companyItem.get("short_name"));
|
|
|
|
+ String CompanyInfoRsp = XiaomanAuthorization.getCompanyInfo(token,companyItem.get("company_id").toString());
|
|
|
|
+ Map CompanyInfoResult = (Map) JSON.parse(CompanyInfoRsp);
|
|
|
|
+ //公司详细信息对象
|
|
|
|
+ Map mapCompanyInfo = (Map) CompanyInfoResult.get("data");
|
|
|
|
+ //来源
|
|
|
|
+ hashMap.put("textField_lx9pmkz3",mapCompanyInfo.get("origin_name"));
|
|
|
|
+ //国家/地区
|
|
|
|
+ hashMap.put("textField_lxmla5ub", mapCompanyInfo.get("country_name"));
|
|
|
|
+ //地址
|
|
|
|
+ hashMap.put("textField_lwypgrqk", mapCompanyInfo.get("address"));
|
|
|
|
+ //官网
|
|
|
|
+ hashMap.put("textField_lxmla5uk", mapCompanyInfo.get("homepage"));
|
|
|
|
+ //获取客户基本信息
|
|
|
|
+ List<Map> companyInfoMap = (List<Map>) mapCompanyInfo.get("customers");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ companyInfoMap.forEach(itemMap ->{
|
|
|
|
+ int number = (int) itemMap.get("main_customer_flag");
|
|
|
|
+ //主要联系人信息
|
|
|
|
+ if (number==1){
|
|
|
|
+ hashMap.put("textField_lwypgrqo",itemMap.get("name"));
|
|
|
|
+ hashMap.put("textField_lwypgrqq",itemMap.get("email"));
|
|
|
|
+
|
|
|
|
+ JSONArray jsonArray = (JSONArray) itemMap.get("tel_list");
|
|
|
|
+ if (!jsonArray.isEmpty()){
|
|
|
|
+ JSONArray innerArray = jsonArray.getJSONArray(0);
|
|
|
|
+ String firstElement = innerArray.getString(0);
|
|
|
|
+ String secondElement = innerArray.getString(1);
|
|
|
|
+ hashMap.put("textField_lwypgrqp",firstElement+secondElement);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("textField_lx9pmkz1",companyItem.get("company_id"))))
|
|
|
|
+ .formUuid("FORM-40F64FB5F44F4754BAB9FF6E038E03A5WUIM")
|
|
|
|
+ .formDataJson(JSON.toJSONString(hashMap))
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 同步
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void syncUserCount() {
|
|
|
|
+
|
|
|
|
+ String token = XiaomanAuthorization.getToken(xmConf.getClientId(),xmConf.getClientSecret(),xmConf.getUserName(), BaseSha256Util.encryptSHA256(xmConf.getPassWord()));
|
|
|
|
+ //获取分组信息
|
|
|
|
+ String groupRsp = XiaomanAuthorization.getGroupId(token);
|
|
|
|
+ Map groupResult = (Map) JSON.parse(groupRsp);
|
|
|
|
+ List<Map> mapList = (List<Map>) groupResult.get("data");
|
|
|
|
+
|
|
|
|
+ mapList.forEach(item->{
|
|
|
|
+ //获取分组公司信息
|
|
|
|
+ String companyCount = XiaomanAuthorization.getCompany(token,item.get("id").toString(),1,1,1);
|
|
|
|
+ Map companyCountResult = (Map) JSON.parse(companyCount);
|
|
|
|
+ Map mapCount = (Map) companyCountResult.get("data");
|
|
|
|
+ Map hashMap = new HashMap();
|
|
|
|
+ hashMap.put("textField_lxmyxx4s",item.get("id").toString());
|
|
|
|
+ hashMap.put("textField_lxmyxx4r",item.get("name").toString());
|
|
|
|
+ hashMap.put("textField_lxmyxx4t",mapCount.get("count").toString());
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("textField_lxmyxx4s, textField_lxmyxx4r",item.get("id"),item.get("name"))))
|
|
|
|
+ .formUuid("FORM-94A6C309524740A49D8572FD211641ACPJQE")
|
|
|
|
+ .formDataJson(JSON.toJSONString(hashMap))
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void sysDDUserInfo() {
|
|
|
|
+ log.info("花名册:{}",ddClient_personnel.getPersonnelMeta(ddClient.getAccessToken(), ddConf.getAgentId()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 同步商机信息
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void syncOpportunity() {
|
|
|
|
+ String token = XiaomanAuthorization.getToken(xmConf.getClientId(),xmConf.getClientSecret(),xmConf.getUserName(), BaseSha256Util.encryptSHA256(xmConf.getPassWord()));
|
|
|
|
+
|
|
|
|
+ LocalDate currentDate = LocalDate.now();
|
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
+ //首次需要加载三个月以前的数据,然后每天同步前一天的
|
|
|
|
+ //LocalDate threeMonthsAgo = currentDate.minusMonths(3);
|
|
|
|
+
|
|
|
|
+ //获取一天前
|
|
|
|
+ LocalDate beforeDay = currentDate.minusDays(1);
|
|
|
|
+ String startTime =beforeDay.format(formatter);
|
|
|
|
+ String endTime = currentDate.format(formatter);
|
|
|
|
+
|
|
|
|
+ //获取商机信息
|
|
|
|
+ String opportunityList = XiaomanAuthorization.getOpportunity(token,1,1,startTime,endTime);
|
|
|
|
+ Map opportunityResult = (Map) JSON.parse(opportunityList);
|
|
|
|
+ Map mapCount = (Map) opportunityResult.get("data");
|
|
|
|
+ //获取查询数据总条数
|
|
|
|
+ int count = (int) mapCount.get("totalItem");
|
|
|
|
+ int pageSize = 20;
|
|
|
|
+ //按照设置的分页查询遍历数据
|
|
|
|
+ for (int page = 1; page <= Math.ceil(count / pageSize); page++){
|
|
|
|
+
|
|
|
|
+ String opportunityRsp = XiaomanAuthorization.getOpportunity(token,page,pageSize,startTime,endTime);
|
|
|
|
+ Map opportunityMap = (Map) JSON.parse(opportunityRsp);
|
|
|
|
+ Map maps = (Map) opportunityMap.get("data");
|
|
|
|
+ List<Map> mapOpportunity = (List<Map>) maps.get("list");
|
|
|
|
+
|
|
|
|
+ //遍历
|
|
|
|
+ mapOpportunity.forEach(opportunityItem ->{
|
|
|
|
+ Map hashMap = new HashMap();
|
|
|
|
+
|
|
|
|
+ //商机ID
|
|
|
|
+ hashMap.put("textField_lx9u7e90", opportunityItem.get("opportunity_id"));
|
|
|
|
+ //商机编号
|
|
|
|
+ hashMap.put("textField_lx9u7e92", opportunityItem.get("serial_id"));
|
|
|
|
+ //商机名称
|
|
|
|
+ hashMap.put("textField_lx9u7e94", opportunityItem.get("name"));
|
|
|
|
+ //客户ID
|
|
|
|
+ hashMap.put("textField_lz6cr9gd", opportunityItem.get("company_id"));
|
|
|
|
+ //商机来源
|
|
|
|
+ hashMap.put("textField_lx9u7e95", opportunityItem.get("origin_name"));
|
|
|
|
+ //商机阶段
|
|
|
|
+ hashMap.put("textField_lx9u7e96", "商机阶段");
|
|
|
|
+ //结束日期
|
|
|
|
+ hashMap.put("textField_lx9u7e98", opportunityItem.get("account_date"));
|
|
|
|
+ // 销售金额(USD)
|
|
|
|
+ hashMap.put("numberField_lx9u7e9f", opportunityItem.get("amount_usd"));
|
|
|
|
+ // 销售金额(RMB)
|
|
|
|
+ hashMap.put("numberField_lx9u7e9d", opportunityItem.get("amount_rmb"));
|
|
|
|
+ //币种
|
|
|
|
+ hashMap.put("textField_lx9u7e99", opportunityItem.get("currency"));
|
|
|
|
+
|
|
|
|
+// //商机阶段信息
|
|
|
|
+// List<Map> stageInfoMap = (List<Map>) opportunityItem.get("stage_info");
|
|
|
|
+
|
|
|
|
+// //创建人信息
|
|
|
|
+// List<Map> createInfoMap = (List<Map>) opportunityItem.get("create_user_info");
|
|
|
|
+
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("textField_lx9u7e92",opportunityItem.get("serial_id"))))
|
|
|
|
+ .formUuid("FORM-EA87926A05104316BF3B620AC3F5B12A2ED0")
|
|
|
|
+ .formDataJson(JSON.toJSONString(hashMap))
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ log.info("opportunityResult",opportunityResult);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private DDService ddService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private DDHXService ddhxService;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void syncDDUserInfo() {
|
|
|
|
+
|
|
|
|
+ Map userIds = ddhxService.getAllUserIdInfo(ddClient.getAccessToken(),"2,3",0,50);
|
|
|
|
+ if (userIds.size()>0){
|
|
|
|
+ List<String> userIdList = (List<String>) userIds.get("data_list");
|
|
|
|
+ for (String strUserId:userIdList){
|
|
|
|
+ Map hashMap = new HashMap();
|
|
|
|
+ List<Map> userinfo = ddhxService.getDDUserInfoById(ddClient.getAccessToken(), strUserId, ddConf.getAgentId());
|
|
|
|
+ List<Map> dataList = (List<Map>) userinfo.get(0).get("field_data_list");
|
|
|
|
+
|
|
|
|
+ String mobile = null;
|
|
|
|
+
|
|
|
|
+ for (Map map:dataList){
|
|
|
|
+ //成员
|
|
|
|
+ hashMap.put("employeeField_lwyn4q8k",strUserId);
|
|
|
|
+
|
|
|
|
+ // 姓名 sys00-name
|
|
|
|
+ if (map.get("field_code").equals("sys00-name")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ hashMap.put("textField_lxmks3dk",mapList.get(0).get("value"));
|
|
|
|
+ }
|
|
|
|
+ // 身份证 sys02-certNo
|
|
|
|
+ else if (map.get("field_code").equals("sys02-certNo")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ if (mapList.get(0).get("value")!=null){
|
|
|
|
+ hashMap.put("textField_lz87r4yi",mapList.get(0).get("value"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 邮箱 sys00-email
|
|
|
|
+ else if (map.get("field_code").equals("425b4d32-381f-45e2-b93b-70ef1f5a7244")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ if (mapList.get(0).get("value")!=null){
|
|
|
|
+ hashMap.put("textField_lx07nnu5",mapList.get(0).get("value"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //职位 sys00-position
|
|
|
|
+ else if (map.get("field_code").equals("sys00-position")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ if (mapList.get(0).get("value")!=null){
|
|
|
|
+ hashMap.put("textField_lz865mkl",mapList.get(0).get("value"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //主部门 sys00-mainDeptId
|
|
|
|
+ else if (map.get("field_code").equals("sys00-mainDeptId")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ hashMap.put("departmentSelectField_lx07nnu3",new String[]{mapList.get(0).get("value").toString()});
|
|
|
|
+ }
|
|
|
|
+ //手机号 sys00-mobile
|
|
|
|
+ else if (map.get("field_code").equals("62e1e6c5-ee91-4abb-a8e3-e7a9e61bfb56")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ if (mapList.get(0).get("value")!=null){
|
|
|
|
+ mobile = mapList.get(0).get("value").toString();
|
|
|
|
+ hashMap.put("textField_lwyn4q94",mobile);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //岗位职级
|
|
|
|
+ else if (map.get("field_code").equals("sys01-positionLevel")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ if (mapList.get(0).get("value")!=null){
|
|
|
|
+ hashMap.put("textField_lz865mkw",mapList.get(0).get("value"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //入职时间
|
|
|
|
+ else if (map.get("field_code").equals("sys00-confirmJoinTime")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ if (mapList.get(0).get("value")!=null){
|
|
|
|
+ hashMap.put("dateField_m0ngt02p",UtilDateTime.parse(mapList.get(0).get("value").toString(),"yyyy-MM-dd"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //员工状态
|
|
|
|
+ else if (map.get("field_code").equals("sys01-employeeStatus")){
|
|
|
|
+ List<Map> mapList = (List<Map>) map.get("field_value_list");
|
|
|
|
+ if (mapList.get(0).get("label")!=null){
|
|
|
|
+ hashMap.put("textField_m0nklwg4",mapList.get(0).get("label"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("textField_lwyn4q94",mobile)))
|
|
|
|
+ .formUuid("FORM-949F56242D564D988A99DBB7FB034D0E62H4")
|
|
|
|
+ .formDataJson(JSON.toJSONString(hashMap))
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 同步考勤数据
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void syscAttColumnsValue() {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //获取考勤组字段 应勤和考勤天数
|
|
|
|
+ Map mapColumns = ddhxService.getAttColumns(ddClient.getAccessToken());
|
|
|
|
+
|
|
|
|
+ log.info("mapColumns:"+mapColumns);
|
|
|
|
+
|
|
|
|
+ List<Map> mapList = (List<Map>) mapColumns.get("columns");
|
|
|
|
+
|
|
|
|
+ //获取应勤和考勤ID
|
|
|
|
+ List<String> columnList = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ //获取假期Name
|
|
|
|
+ List<String> leaveNameList = new ArrayList<>();
|
|
|
|
+ for (Map map : mapList) {
|
|
|
|
+ if (map.get("name").equals("应出勤天数")) {
|
|
|
|
+ columnList.add(map.get("id").toString());
|
|
|
|
+ } else if (map.get("name").equals("出勤天数")) {
|
|
|
|
+ columnList.add(map.get("id").toString());
|
|
|
|
+ }else if (map.get("name").equals("年假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("事假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("病假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("调休")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("产假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("陪产假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("婚假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("丧假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("哺乳假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("产检假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }else if (map.get("name").equals("育儿假")) {
|
|
|
|
+ leaveNameList.add(map.get("name").toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String columns = columnList.toString().replace("\"", "").replaceAll("\\[", "").replaceAll("\\]", "");
|
|
|
|
+ String leaveName = leaveNameList.toString().replace("\"", "").replaceAll("\\[", "").replaceAll("\\]", "");
|
|
|
|
+ // 获取当前日期
|
|
|
|
+ LocalDate currentDate = LocalDate.now();
|
|
|
|
+ // 获取上个月的1号
|
|
|
|
+ LocalDate firstDayOfLastMonth = currentDate.minusMonths(1).withDayOfMonth(1);
|
|
|
|
+ // 获取上个月的最后一天
|
|
|
|
+ LocalDate lastDayOfLastMonth = currentDate.minusMonths(1).with(TemporalAdjusters.lastDayOfMonth());
|
|
|
|
+
|
|
|
|
+ //获取在职员工UserID 2正式,3为在职
|
|
|
|
+ Map userInfoMap = ddhxService.getAllUserIdInfo(ddClient.getAccessToken(),"2,3",0,50);
|
|
|
|
+
|
|
|
|
+ List<String> userIds = (List<String>) userInfoMap.get("data_list");
|
|
|
|
+ Map hashMap = new HashMap();
|
|
|
|
+ for (String userId:userIds){
|
|
|
|
+
|
|
|
|
+ //获取考勤和出勤数据
|
|
|
|
+ Map mapAttColumnsValue = ddhxService.getAttColumnsValue(ddClient.getAccessToken(), userId, columns, firstDayOfLastMonth.toString(), lastDayOfLastMonth.toString());
|
|
|
|
+
|
|
|
|
+ List<Map> columnsVals = (List<Map>) mapAttColumnsValue.get("column_vals");
|
|
|
|
+
|
|
|
|
+ //获取应勤天数 和 考勤天数
|
|
|
|
+ List<Map> yqMaps = (List<Map>) columnsVals.get(0).get("column_vals");;
|
|
|
|
+ List<Map> cqMaps = (List<Map>) columnsVals.get(1).get("column_vals");
|
|
|
|
+
|
|
|
|
+ //应勤数据
|
|
|
|
+ int yqDays = 0;
|
|
|
|
+ for (int i = 0; i < yqMaps.size(); i++) {
|
|
|
|
+ float day = Float.parseFloat(yqMaps.get(i).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ yqDays = yqDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【应勤天数】:" + yqDays);
|
|
|
|
+
|
|
|
|
+ //出勤数据
|
|
|
|
+ int cqDays = 0;
|
|
|
|
+ for (int j = 0; j < cqMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(cqMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ cqDays = cqDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【出勤天数】:" + cqDays);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //获取考勤和出勤数据
|
|
|
|
+ Map mapAttNameValue = ddhxService.getleavetimebynames(ddClient.getAccessToken(), userId, leaveName, firstDayOfLastMonth.toString(), lastDayOfLastMonth.toString());
|
|
|
|
+
|
|
|
|
+ List<Map> NameValues = (List<Map>) mapAttNameValue.get("columns");
|
|
|
|
+
|
|
|
|
+ List<Map> nianjMaps = (List<Map>) NameValues.get(0).get("columnvals"); //年假
|
|
|
|
+ List<Map> shijMaps = (List<Map>) NameValues.get(1).get("columnvals"); //事假
|
|
|
|
+ List<Map> bingjMaps = (List<Map>) NameValues.get(2).get("columnvals"); //病假
|
|
|
|
+ List<Map> tiaoxMaps = (List<Map>) NameValues.get(3).get("columnvals"); //调休假
|
|
|
|
+ List<Map> chanjMaps = (List<Map>) NameValues.get(4).get("columnvals"); //产假
|
|
|
|
+ List<Map> peicjMaps = (List<Map>) NameValues.get(5).get("columnvals"); //陪产假
|
|
|
|
+ List<Map> hunjMaps = (List<Map>) NameValues.get(6).get("columnvals"); //婚假
|
|
|
|
+ List<Map> sangjMaps = (List<Map>) NameValues.get(7).get("columnvals"); //丧假
|
|
|
|
+ List<Map> burjMaps = (List<Map>) NameValues.get(8).get("columnvals"); //哺乳假
|
|
|
|
+ List<Map> chanjjMaps = (List<Map>) NameValues.get(9).get("columnvals"); //产检假
|
|
|
|
+ List<Map> yerjMaps = (List<Map>) NameValues.get(10).get("columnvals"); //育儿假
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //年假
|
|
|
|
+ int nianjDays = 0;
|
|
|
|
+ for (int j = 0; j < nianjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(nianjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ nianjDays = nianjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【年假】:" + nianjDays);
|
|
|
|
+
|
|
|
|
+ //事假
|
|
|
|
+ int shijDays = 0;
|
|
|
|
+ for (int j = 0; j < shijMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(shijMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ shijDays = shijDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【事假】:" + shijDays);
|
|
|
|
+
|
|
|
|
+ //病假
|
|
|
|
+ int bingjDays = 0;
|
|
|
|
+ for (int j = 0; j < bingjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(bingjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ bingjDays = bingjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【病假】:" + bingjDays);
|
|
|
|
+
|
|
|
|
+ //调休假
|
|
|
|
+ int tiaoxDays = 0;
|
|
|
|
+ for (int j = 0; j < tiaoxMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(tiaoxMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ tiaoxDays = tiaoxDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【调休假】:" + tiaoxDays);
|
|
|
|
+
|
|
|
|
+ //产假
|
|
|
|
+ int chanjDays = 0;
|
|
|
|
+ for (int j = 0; j < chanjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(chanjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ chanjDays = chanjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【产假】:" + chanjDays);
|
|
|
|
+
|
|
|
|
+ //陪产假
|
|
|
|
+ int peicjDays = 0;
|
|
|
|
+ for (int j = 0; j < peicjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(peicjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ peicjDays = peicjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【陪产假】:" + peicjDays);
|
|
|
|
+
|
|
|
|
+ //婚假
|
|
|
|
+ int hunjDays = 0;
|
|
|
|
+ for (int j = 0; j < hunjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(hunjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ hunjDays = hunjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【婚假】:" + peicjDays);
|
|
|
|
+
|
|
|
|
+ //丧假
|
|
|
|
+ int sangjDays = 0;
|
|
|
|
+ for (int j = 0; j < sangjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(sangjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ sangjDays = sangjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【丧假】:" + sangjDays);
|
|
|
|
+
|
|
|
|
+ //哺乳假
|
|
|
|
+ int burjDays = 0;
|
|
|
|
+ for (int j = 0; j < burjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(burjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ burjDays = burjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【哺乳假】:" + burjDays);
|
|
|
|
+
|
|
|
|
+ //产检假
|
|
|
|
+ int chanjjDays = 0;
|
|
|
|
+ for (int j = 0; j < chanjjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(chanjjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ chanjjDays = chanjjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【产检假】:" + chanjjDays);
|
|
|
|
+
|
|
|
|
+ //育儿假
|
|
|
|
+ int yerjDays = 0;
|
|
|
|
+ for (int j = 0; j < yerjMaps.size(); j++) {
|
|
|
|
+ float day = Float.parseFloat(yerjMaps.get(j).get("value").toString()) ;
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ yerjDays = yerjDays + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ log.info(userId+"【育儿假】:" + yerjDays);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ hashMap.put("employeeField_lzb09kqd",userId);
|
|
|
|
+ hashMap.put("dateField_lzb09kqf",UtilDateTime.parse(String.valueOf(firstDayOfLastMonth),"yyyy-MM"));
|
|
|
|
+ hashMap.put("textField_lzb0fjed",userId);
|
|
|
|
+ hashMap.put("textField_lzb0fjef",firstDayOfLastMonth);
|
|
|
|
+ hashMap.put("numberField_lzb09kqp",yqDays);
|
|
|
|
+ hashMap.put("numberField_lzb09kqr",cqDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i03",nianjDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i05",shijDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i08",bingjDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i0a",tiaoxDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i0d",chanjDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i0f",peicjDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i0i",hunjDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i0k",sangjDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i0n",burjDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i0p",chanjjDays);
|
|
|
|
+ hashMap.put("numberField_m0nb6i0s",yerjDays);
|
|
|
|
+ hashMap.put("numberField_m0ngfawd",nianjDays+shijDays+bingjDays+tiaoxDays+chanjDays+peicjDays+hunjDays+sangjDays+burjDays+chanjjDays+yerjDays);
|
|
|
|
+
|
|
|
|
+ log.info("hashMap:" + hashMap);
|
|
|
|
+
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
+
|
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("textField_lzb0fjed, textField_lzb0fjef",userId, firstDayOfLastMonth)))
|
|
|
|
+ .formUuid("FORM-1E031963745047CFA5BF98759F34C4C6W12H")
|
|
|
|
+ .formDataJson(JSON.toJSONString(hashMap))
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|