|
@@ -3,18 +3,27 @@ package com.management.platform.controller;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.management.platform.entity.LeaveSheet;
|
|
|
import com.management.platform.entity.User;
|
|
|
import com.management.platform.entity.WxCorpInfo;
|
|
|
import com.management.platform.mapper.UserMapper;
|
|
|
+import com.management.platform.service.LeaveSheetService;
|
|
|
import com.management.platform.service.WxCorpInfoService;
|
|
|
+import com.management.platform.util.DateTimeUtil;
|
|
|
import com.management.platform.util.HttpRespMsg;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -32,6 +41,8 @@ public class WxCorpInfoController {
|
|
|
WxCorpInfoService wxCorpInfoService;
|
|
|
@Resource
|
|
|
UserMapper userMapper;
|
|
|
+ @Resource
|
|
|
+ LeaveSheetService leaveSheetService;
|
|
|
|
|
|
@RequestMapping("/testDownload")
|
|
|
public HttpRespMsg testDownload() {
|
|
@@ -95,6 +106,93 @@ public class WxCorpInfoController {
|
|
|
filter2.put("value",2);
|
|
|
jsonArrayFilter.add(filter2);
|
|
|
List<String> approvalInfo = wxCorpInfoService.getApprovalInfo(7, startDate, endDate, "", jsonArrayFilter);
|
|
|
+ List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId,7));
|
|
|
+ if(approvalInfo!=null){
|
|
|
+ List<LeaveSheet> leaveSheets = new ArrayList<>();
|
|
|
+ for (int i = 0; i < approvalInfo.size(); i++) {
|
|
|
+ String codeNum = approvalInfo.get(i);
|
|
|
+ String approvalInfoDetailResp = wxCorpInfoService.getApprovalInfoDetail(7, codeNum);
|
|
|
+ JSONObject approvalInfoDetail = JSONObject.parseObject(approvalInfoDetailResp);
|
|
|
+ JSONObject info = approvalInfoDetail.getJSONObject("info");
|
|
|
+ JSONObject applyer = info.getJSONObject("applyer");
|
|
|
+ String userid = applyer.getString("userid");
|
|
|
+ Optional<User> first = userList.stream().filter(u -> u.getCorpwxUserid().equals(userid)).findFirst();
|
|
|
+ if(!first.isPresent()){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ LeaveSheet leaveSheet=new LeaveSheet();
|
|
|
+ leaveSheet.setCompanyId(7);
|
|
|
+ leaveSheet.setStatus(0);
|
|
|
+ leaveSheet.setOwnerId(first.get().getId());
|
|
|
+ leaveSheet.setOwnerName(first.get().getName());
|
|
|
+ JSONObject apply_data = info.getJSONObject("apply_data");
|
|
|
+ System.out.println("获取到的单据信息===========>"+apply_data);
|
|
|
+ JSONArray contents = apply_data.getJSONArray("contents");
|
|
|
+ for (int i1 = 0; i1 < contents.size(); i1++) {
|
|
|
+ JSONObject map = contents.getJSONObject(i1);
|
|
|
+ JSONArray title = map.getJSONArray("title");
|
|
|
+ JSONObject value = map.getJSONObject("value");
|
|
|
+ String control = map.getString("control");
|
|
|
+ if(control.equals("Vacation")){
|
|
|
+ JSONObject vacation = value.getJSONObject("vacation");
|
|
|
+ JSONObject selector = vacation.getJSONObject("selector");
|
|
|
+ //企业微信请假默认单选
|
|
|
+ JSONArray options = selector.getJSONArray("options");
|
|
|
+ JSONObject option = options.getJSONObject(0);
|
|
|
+ int leaveType;
|
|
|
+ switch (option.getJSONArray("value").getJSONObject(0).getString("text")){
|
|
|
+ case "事假":leaveType=0;
|
|
|
+ break;
|
|
|
+ case "病假":leaveType=1;
|
|
|
+ break;
|
|
|
+ case "年假":leaveType=2;
|
|
|
+ break;
|
|
|
+ case "产假":leaveType=3;
|
|
|
+ break;
|
|
|
+ case "婚假":leaveType=4;
|
|
|
+ break;
|
|
|
+ case "丧假":leaveType=5;
|
|
|
+ break;
|
|
|
+ case "调休":leaveType=6;
|
|
|
+ break;
|
|
|
+ case "陪产假":leaveType=7;
|
|
|
+ break;
|
|
|
+ default:leaveType=8;
|
|
|
+ }
|
|
|
+ leaveSheet.setLeaveType(leaveType);
|
|
|
+ JSONObject attendance = vacation.getJSONObject("attendance");
|
|
|
+ JSONObject date_range = attendance.getJSONObject("date_range");
|
|
|
+ leaveSheet.setTimeType(date_range.getString("type").equals("hour")?1:0);
|
|
|
+ long new_begin = date_range.getLongValue("new_begin");
|
|
|
+ long new_end = date_range.getLongValue("new_end");
|
|
|
+ LocalDate startDate1 = DateTimeUtil.getLocalDateFromUnix(new_begin);
|
|
|
+ LocalDate endDate1 = DateTimeUtil.getLocalDateFromUnix(new_end);
|
|
|
+ leaveSheet.setStartDate(startDate1);
|
|
|
+ leaveSheet.setEndDate(endDate1);
|
|
|
+ long new_duration = date_range.getLongValue("new_duration");
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(new_duration);
|
|
|
+ bigDecimal=bigDecimal.divide(new BigDecimal(3600),1, RoundingMode.HALF_DOWN);
|
|
|
+ leaveSheet.setTimeHours(bigDecimal.floatValue());
|
|
|
+ bigDecimal=bigDecimal.divide(new BigDecimal(8),1,RoundingMode.HALF_DOWN);
|
|
|
+ leaveSheet.setTimeDays(bigDecimal.floatValue());
|
|
|
+ leaveSheet.setLeaveType(1);
|
|
|
+ }
|
|
|
+ if(control.equals("Text")){
|
|
|
+ if(title.getJSONObject(0).getString("text").equals("请假事由")){
|
|
|
+ leaveSheet.setRemark(value.getString("text"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LeaveSheet one = leaveSheetService.getOne(new LambdaQueryWrapper<LeaveSheet>().eq(LeaveSheet::getStartDate, leaveSheet.getStartDate()).eq(LeaveSheet::getEndDate, leaveSheet.getEndDate()).eq(LeaveSheet::getOwnerId, leaveSheet.getOwnerId()));
|
|
|
+ if(one!=null){
|
|
|
+ leaveSheet.setId(one.getId());
|
|
|
+ }
|
|
|
+ leaveSheets.add(leaveSheet);
|
|
|
+ }
|
|
|
+ if(leaveSheets.size()>0){
|
|
|
+ leaveSheetService.saveOrUpdateBatch(leaveSheets);
|
|
|
+ }
|
|
|
+ }
|
|
|
msg.setData(approvalInfo);
|
|
|
return msg;
|
|
|
}
|