|
@@ -0,0 +1,144 @@
|
|
|
+package com.management.platform.service.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.management.platform.entity.*;
|
|
|
+import com.management.platform.mapper.LeaveSheetFvMapper;
|
|
|
+import com.management.platform.mapper.TimeTypeMapper;
|
|
|
+import com.management.platform.mapper.UserMapper;
|
|
|
+import com.management.platform.service.LeaveSheetFvService;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.management.platform.util.DockWithMLD;
|
|
|
+import com.management.platform.util.HttpRespMsg;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.Duration;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author Seyason
|
|
|
+ * @since 2024-01-29
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Transactional
|
|
|
+public class LeaveSheetFvServiceImpl extends ServiceImpl<LeaveSheetFvMapper, LeaveSheetFv> implements LeaveSheetFvService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ LeaveSheetFvMapper leaveSheetFvMapper;
|
|
|
+ @Resource
|
|
|
+ TimeTypeMapper timeTypeMapper;
|
|
|
+ @Resource
|
|
|
+ UserMapper userMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer syncData(String startDate, String endDate, Integer companyId) {
|
|
|
+ TimeType comTimeType = timeTypeMapper.selectById(companyId);
|
|
|
+ DockWithMLD dockWithMLD=new DockWithMLD();
|
|
|
+ JSONObject jsonObject=new JSONObject();
|
|
|
+ DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ List<LeaveSheetFv> oldLeaveSheetList = list(new QueryWrapper<LeaveSheetFv>().eq("company_id", companyId));
|
|
|
+ jsonObject.put("workDate",startDate);
|
|
|
+ jsonObject.put("gmtFinished",endDate);
|
|
|
+ String jsonString = jsonObject.toJSONString();
|
|
|
+ List<LeaveSheetFv> leaveSheetList=new ArrayList<>();
|
|
|
+
|
|
|
+ List<User> allUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
|
|
|
+ //Todo: 获取请假数据
|
|
|
+ HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
|
|
|
+ List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
|
|
|
+ System.out.println("原始数据条数:"+leaveRecordList.size());
|
|
|
+ for (Map<String, Object> map : leaveRecordList) {
|
|
|
+ Optional<User> optional=allUserList.stream().filter(al->al.getJobNumber()!=null&&al.getJobNumber().equals(map.get("rybh"))).findFirst();
|
|
|
+ if(!optional.isPresent()){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ User user=optional.get();
|
|
|
+ LeaveSheetFv leaveSheet=new LeaveSheetFv();
|
|
|
+ leaveSheet.setCompanyId(user.getCompanyId());
|
|
|
+ leaveSheet.setStatus(0);
|
|
|
+ leaveSheet.setOwnerId(user.getId());
|
|
|
+ leaveSheet.setOwnerName(user.getName());
|
|
|
+ leaveSheet.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf1));
|
|
|
+ leaveSheet.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf1));
|
|
|
+ Integer timeType=null;
|
|
|
+ switch (String.valueOf(map.get("timeType"))){
|
|
|
+ case "小时":timeType=1;
|
|
|
+ break;
|
|
|
+ case "天":timeType=0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ leaveSheet.setTimeType(timeType);
|
|
|
+ leaveSheet.setTimeDays(Float.parseFloat(((String) map.get("timeDays")).equals("")?"0.00":((String) map.get("timeDays"))));
|
|
|
+ if (timeType == 0){
|
|
|
+ leaveSheet.setTimeHours(leaveSheet.getTimeDays()*comTimeType.getAllday());
|
|
|
+ }else {
|
|
|
+ leaveSheet.setTimeHours(Float.parseFloat(((String) map.get("timeHours")).equals("")?"0.00":((String) map.get("timeHours"))));
|
|
|
+ }
|
|
|
+ Integer leaveType;
|
|
|
+ switch (String.valueOf(map.get("leaveType"))){
|
|
|
+ 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);
|
|
|
+ leaveSheet.setProcinstId(String.valueOf(map.get("id")));
|
|
|
+ leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
|
|
|
+ leaveSheetList.add(leaveSheet);
|
|
|
+ }
|
|
|
+ if(leaveSheetList.size()>0){
|
|
|
+ //删掉该公司的所有请假数据
|
|
|
+ System.out.println("删除老数据");
|
|
|
+ leaveSheetFvMapper.delete(new QueryWrapper<LeaveSheetFv>().eq("company_id",companyId));
|
|
|
+ //再重新插入
|
|
|
+ saveBatch(leaveSheetList);
|
|
|
+ }
|
|
|
+ System.out.println("请假数据同步完成,共获取到"+leaveSheetList.size()+"条数据");
|
|
|
+ return new Integer(leaveSheetList.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void testAdd(Integer companyId) {
|
|
|
+ LeaveSheetFv leaveSheetFv=new LeaveSheetFv();
|
|
|
+ leaveSheetFv.setCompanyId(companyId);
|
|
|
+ leaveSheetFv.setOwnerId("1");
|
|
|
+ leaveSheetFv.setOwnerName("张三");
|
|
|
+ leaveSheetFv.setStartDate(LocalDate.of(2024,1,1));
|
|
|
+ leaveSheetFv.setEndDate(LocalDate.of(2024,1,2));
|
|
|
+ leaveSheetFv.setTimeType(0);
|
|
|
+ leaveSheetFv.setTimeDays(1.0f);
|
|
|
+ leaveSheetFv.setTimeHours(8.0f);
|
|
|
+ leaveSheetFv.setLeaveType(0);
|
|
|
+ leaveSheetFv.setProcinstId("1");
|
|
|
+ leaveSheetFv.setGmtFinished(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
+ leaveSheetFvMapper.insert(leaveSheetFv);
|
|
|
+ }
|
|
|
+}
|