wzy 3 月之前
父節點
當前提交
6bee960e96

+ 6 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/impl/HuaGaoServiceImpl.java

@@ -81,6 +81,9 @@ public class HuaGaoServiceImpl implements HuaGaoService {
                         Map<String,String> dataMap=dateMap.get(date);
                         String workTime="休息".equals(dataMap.get("82772125"))?
                                 dataMap.get("89349019"): NumberUtil.add(dataMap.get("89349019"),dataMap.get("82772106")).toString();
+
+                        log.info("user:{},date:{},workTime:{},price:{}",user,date,workTime,price);
+
                         saveData(user,date,workTime,price);
 
                         //同步到数据库
@@ -233,6 +236,9 @@ public class HuaGaoServiceImpl implements HuaGaoService {
                     Map<String,String> dataMap=dateMap.get(date);
                     String workTime="休息".equals(dataMap.get("82772125"))?
                             dataMap.get("89349019"): NumberUtil.add(dataMap.get("89349019"),dataMap.get("82772106")).toString();
+
+                    log.info("加班/补卡更新员工工时 user:{},date:{},workTime:{},price:{}",user,date,workTime,price);
+
                     saveData(user,date,workTime,price);
 
                     //同步到数据库

+ 92 - 4
mjava-huagao/src/test/java/com/malk/huagao/YyYdTest.java

@@ -24,13 +24,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /***
  * 逸耀宜搭
@@ -49,6 +48,18 @@ public class YyYdTest {
     @Autowired
     private YdUserInputMapper ydUserInputMapper;
 
+    @Autowired
+    private YDService ydService;
+
+    @Autowired
+    private DDClient_Contacts ddClient_contacts;
+
+    @Autowired
+    private DDClient ddClient;
+
+    @Autowired
+    private DDClient_Attendance ddClientAttendance;
+
     @Test
     public void test() {
         List<Map> list=(List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-0D560B9D8B64464C8C885FE20B7C7C95T4IA")                .pageSize(1)
@@ -113,4 +124,81 @@ public class YyYdTest {
         List<YdUserInput> ydUserInputs = ydUserInputMapper.selectList(ydUserInputLambdaQueryWrapper);
 
     }
+
+    @Test
+    public void test5(){
+        String stTime="2025-08-21 00:00:00";
+        String edTime="2025-08-22 00:00:00";
+        List<Map> list=ydService.queryAllFormData(YDParam.builder().formUuid("FORM-5061F7AE543B429C8241EC730A6F31653NNK").build());
+        for(Map map:list){
+            Map formData= UtilMap.getMap(map,"formData");
+            String deptId=String.valueOf(UtilMap.getList(formData,"departmentSelectField_m8e4zaju_id").get(0));
+            String price=UtilMap.getString(formData,"numberField_m8e4zajw_value");
+            List<String> users=ddClient_contacts.listDepartmentUserId(ddClient.getAccessToken(),Long.parseLong(deptId));
+            for (String user : users) {
+                if (!user.equals("284156461536271475")){
+                    continue;
+                }
+                List<Map> valList=ddClientAttendance.getAttColumnVal(ddClient.getAccessToken(),user, Arrays.asList("82772106","89349019","82772125"),stTime,edTime);
+                if(valList!=null&&valList.size()==3){
+                    Map<String,Map<String,String>> dateMap=toDateMap(valList);
+                    for (String date:dateMap.keySet()) {
+                        Map<String,String> dataMap=dateMap.get(date);
+                        String workTime="休息".equals(dataMap.get("82772125"))?
+                                dataMap.get("89349019"): NumberUtil.add(dataMap.get("89349019"),dataMap.get("82772106")).toString();
+
+                        log.info("user:{},date:{},workTime:{},price:{}",user,date,workTime,price);
+
+                        //同步到数据库
+                        LambdaQueryWrapper<YdUserInput> ydUserInputLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                        ydUserInputLambdaQueryWrapper.eq(YdUserInput::getUserId,user)
+                                .eq(YdUserInput::getDate, date);
+
+                        YdUserInput ydUserInput = ydUserInputMapper.selectOne(ydUserInputLambdaQueryWrapper);
+
+                        if (Objects.nonNull(ydUserInput)){
+                            ydUserInput.setWorkHours(workTime);
+                            ydUserInput.setPrice(price);
+                            ydUserInput.setTotalPrice(NumberUtil.mul(workTime,price));
+
+                            ydUserInputMapper.update(ydUserInput,ydUserInputLambdaQueryWrapper);
+                        }else {
+                            try {
+                                ydUserInput = new YdUserInput();
+                                ydUserInput.setUserId(user);
+                                SimpleDateFormat formatter = new SimpleDateFormat(UtilDateTime.DATE_TIME_PATTERN);
+                                ydUserInput.setDate(formatter.parse(date));
+                                ydUserInput.setWorkHours(workTime);
+                                ydUserInput.setPrice(price);
+                                ydUserInput.setTotalPrice(NumberUtil.mul(workTime,price));
+
+                                ydUserInputMapper.insert(ydUserInput);
+                            }catch (ParseException e){
+                                log.info("无法解析日期字符串: {}",e.getMessage());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private Map<String,Map<String,String>> toDateMap(List<Map> valList){
+        Map<String,Map<String,String>>  result = new HashMap<>();
+        for(Map map:valList){
+            String columnId=UtilMap.getString(UtilMap.getMap(map,"column_vo"),"id");
+            List<Map> list=UtilMap.getList(map,"column_vals");
+            for(Map map1:list){
+                String date=UtilMap.getString(map1,"date");
+                String value=UtilMap.getString(map1,"value");
+                value=columnId.equals("82772106")?NumberUtil.round(NumberUtil.div(value,"60"),2).toString():value; // 工作时长 分钟转小时
+                if(result.containsKey(date)){
+                    result.get(date).put(columnId,value);
+                }else{
+                    result.put(date,UtilMap.map(columnId,value));
+                }
+            }
+        }
+        return result;
+    }
 }