瀏覽代碼

请假日期,天数,数据标题

xuj 5 年之前
父節點
當前提交
37e7a60d28

+ 10 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunMonthLaborCostDao.java

@@ -0,0 +1,10 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMonthLaborCostDO;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPayrollDO;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ChuanyunMonthLaborCostDao extends GalaxisRepository<ChuanyunMonthLaborCostDO,String> {
+}

+ 3 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunProjectCostDao.java

@@ -24,8 +24,9 @@ public interface ChuanyunProjectCostDao extends GalaxisRepository<ChuanyunProjec
             "SUM(chuanyun_member_cost.person_days) AS person_days," +
             "chuanyun_member_cost.project_type," +
             "chuanyun_member_cost.status," +
-            "chuanyun_member_cost.project_id " +
-            "FROM chuanyun_member_cost " +
+            "chuanyun_member_cost.project_id, " +
+            "chuanyun_member_cost.cost AS amount" +
+            " FROM chuanyun_member_cost " +
             "GROUP BY chuanyun_member_cost.project_id,"+
             "chuanyun_member_cost.status",
             nativeQuery = true)

+ 14 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementAmountDao.java

@@ -0,0 +1,14 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberCostDO;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunReimbursementAmountDO;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ChuanyunReimbursementAmountDao extends GalaxisRepository<ChuanyunReimbursementAmountDO,String> {
+
+    @Query(value="SELECT SUM(chuanyun_reimbursement.amount) AS total_amount,chuanyun_reimbursement.object_id  FROM chuanyun_reimbursement WHERE chuanyun_reimbursement.group_project_id = ?",nativeQuery = true)
+    ChuanyunReimbursementAmountDO getAmount(String projectId);
+}

+ 2 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementDao.java

@@ -26,4 +26,6 @@ public interface ChuanyunReimbursementDao extends GalaxisRepository<ChuanyunReim
     Page<ChuanyunReimbursementDO> findAllByErpFlag(Integer erpFlag, Pageable pageable);
 
     List<ChuanyunReimbursementDO> findAllByGroupProjectId(String projectId);
+
+
 }

+ 10 - 17
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunAskForLeaveDo.java

@@ -3,20 +3,13 @@ package com.galaxis.manatee.entity.chuanyun.data.object;
 import com.dingtalk.api.response.OapiProcessinstanceGetResponse;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.databind.annotation.JsonNaming;
-import com.galaxis.capsule.dto.MaterialDTO;
-import com.galaxis.manatee.constant.StringConstant;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
 import net.sf.json.JSONArray;
 import org.springframework.beans.BeanUtils;
-
 import javax.persistence.Entity;
 import java.math.BigDecimal;
-import java.nio.file.LinkOption;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
@@ -26,6 +19,7 @@ import net.sf.json.JSONArray;
  * Created by IntelliJ IDEA.
  * User: xuj
  * Date: 2020/7/23
+ * @author xuj
  */
 @Slf4j
 @EqualsAndHashCode(callSuper = true)
@@ -149,19 +143,18 @@ public class ChuanyunAskForLeaveDo extends BasicDO {
     public static ChuanyunAskForLeaveDo fromAskForLeaveDTO(OapiProcessinstanceGetResponse.ProcessInstanceTopVo processInstanceTopVo){
         ChuanyunAskForLeaveDo chuanyunAskForLeaveDo = new ChuanyunAskForLeaveDo();
         BeanUtils.copyProperties(processInstanceTopVo, chuanyunAskForLeaveDo);
-        List<OapiProcessinstanceGetResponse.FormComponentValueVo> formComponetList = processInstanceTopVo.getFormComponentValues();
-        if(formComponetList != null && formComponetList.size() > 0) {
-            for(int i = 0; i < formComponetList.size(); i++) {
-                if(formComponetList.get(i).getName().equals("请假事由")) {
-                    chuanyunAskForLeaveDo.setLeaveType(formComponetList.get(i).getValue());
+        List<OapiProcessinstanceGetResponse.FormComponentValueVo> formComponentList = processInstanceTopVo.getFormComponentValues();
+        if(formComponentList != null && formComponentList.size() > 0) {
+            for (OapiProcessinstanceGetResponse.FormComponentValueVo formComponentValueVo : formComponentList) {
+                if ("请假事由".equals(formComponentValueVo.getName())) {
+                    chuanyunAskForLeaveDo.setLeaveType(formComponentValueVo.getValue());
                 }
-                if(formComponetList.get(i).getName().equals("劳动合同所属公司")) {
-                    chuanyunAskForLeaveDo.setContractOwnerLtd(formComponetList.get(i).getValue());
+                if ("劳动合同所属公司".equals(formComponentValueVo.getName())) {
+                    chuanyunAskForLeaveDo.setContractOwnerLtd(formComponentValueVo.getValue());
                 }
-                if(formComponetList.get(i).getName().equals("[\"开始时间\",\"结束时间\"]")){
+                if(("[\"开始时间\",\"结束时间\"]").equals(formComponentValueVo.getName())){
                     try {
-                        String values = formComponetList.get(i).getValue();
-                        JSONArray json = JSONArray.fromObject(values);
+                        JSONArray json = JSONArray.fromObject(formComponentValueVo.getValue());
                         chuanyunAskForLeaveDo.setStartTime((String)json.get(0));
                         chuanyunAskForLeaveDo.setEndTime((String)json.get(1));
                         chuanyunAskForLeaveDo.setTotalDay(new BigDecimal(String.valueOf(json.get(2))));

+ 45 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunMonthLaborCostDO.java

@@ -0,0 +1,45 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.persistence.Entity;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Slf4j
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity(name = "CHUANYUN_MONTH_LABORCOST")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunMonthLaborCostDO extends BasicDO{
+
+    /**
+     * 表名
+     */
+    public static final String SCHEMA_CODE ="D001789c42dc40d56a84e84b09609bf44a77205";
+
+    @JsonProperty("F0000005")
+    private String projectCode;
+
+    @JsonProperty("F0000003")
+    private BigDecimal amount;
+
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    @JsonProperty("F0000002")
+    private LocalDateTime logDate;
+
+    @JsonProperty("F0000004")
+    private String dataType;
+}

+ 2 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunProjectCostDO.java

@@ -42,4 +42,6 @@ public class ChuanyunProjectCostDO {
     private BigDecimal cost;
 
     private BigDecimal personDays;
+
+    private BigDecimal amount;
 }

+ 29 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunReimbursementAmountDO.java

@@ -0,0 +1,29 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import java.math.BigDecimal;
+
+@Slf4j
+@Data
+@Entity
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunReimbursementAmountDO {
+    @Id
+//    @GeneratedValue(generator = "idGeneratorChuanyunReimbursementAmount")
+//    @GenericGenerator(name ="idGeneratorChuanyunReimbursementAmount" ,strategy="com.galaxis.capsule.util.GalaxisIdGenerator")
+    private String objectId;
+
+    private BigDecimal totalAmount;
+}

+ 17 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunLaborCostDTO.java

@@ -0,0 +1,17 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+
+import lombok.Data;
+
+import javax.persistence.Id;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+public class ChuanyunLaborCostDTO {
+
+
+    private ChuanyunLaborCostPrimaryKey chuanyunLaborCostPrimaryKey;
+
+    private BigDecimal costamount;
+}

+ 24 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunLaborCostPrimaryKey.java

@@ -0,0 +1,24 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.persistence.Embeddable;
+import java.time.LocalDateTime;
+
+@Embeddable
+@Data
+public class ChuanyunLaborCostPrimaryKey {
+
+    protected String projectcode;
+
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    protected LocalDateTime period;
+}

+ 9 - 0
src/main/java/com/galaxis/manatee/manager/ClawFeign.java

@@ -4,6 +4,7 @@ import com.galaxis.capsule.dto.*;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectCashFlowDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPurCostDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunReimbursementDO;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunLaborCostDTO;
 import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunProjectCashFlowDTO;
 import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunPurCostDTO;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -54,6 +55,14 @@ public interface ClawFeign {
     @GetMapping("/purcost/findAllByParameters")
     PageDTO<ChuanyunPurCostDTO> findChuanyunPurCost(@RequestParam Map<String,String> map);
 
+    /**
+     * 查询人力成本
+     * @param map
+     * @return
+     */
+    @GetMapping("/laborcost/findAllByParameters")
+    PageDTO<ChuanyunLaborCostDTO> findChuanyunLaborCost(@RequestParam Map<String,String> map);
+
 
     /**
      * 测试

+ 1 - 1
src/main/java/com/galaxis/manatee/service/DingTalkScheduledTask.java

@@ -199,4 +199,4 @@ public class DingTalkScheduledTask {
             }
         }
     }
-}
+}

+ 101 - 3
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -4,6 +4,10 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import com.galaxis.capsule.dto.PageDTO;
 import com.galaxis.manatee.constant.ChuanYunConstant;
 import com.galaxis.manatee.dao.*;
@@ -12,15 +16,19 @@ import com.galaxis.manatee.entity.chuanyun.dto.*;
 import com.galaxis.manatee.exception.BigSizeException;
 import com.galaxis.manatee.manager.ChuanYunManager;
 import com.galaxis.manatee.manager.ClawFeign;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
 import com.mysql.cj.x.protobuf.MysqlxExpr;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -97,7 +105,9 @@ public class ChuanyunBasicDataScheduledTask {
      */
     @Scheduled(fixedDelay = 3600L)
     private void getDataFromChuanyun() {
-        saveAskForLeave();
+        //项目人力成本
+        saveLaborCost();
+//        saveAskForLeave();
         //专项费用分摊
         getSpecialProcedure();
         //获取人员-归属公司信息
@@ -364,7 +374,7 @@ public class ChuanyunBasicDataScheduledTask {
                             chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectCashFlowDO.SCHEMA_CODE,chuanyunProjectCashFlowDO.getObjectId(),purcostString);
                         }
                         if(chuanyunSaveDTO.getSuccessful()){
-                            log.info("新增项目收付款成功");
+//                            log.info("新增项目收付款成功");
                         }else{
                             log.warn("新增项目收付款失败");
                         }
@@ -407,7 +417,7 @@ public class ChuanyunBasicDataScheduledTask {
                         chuanyunSaveDTO = chuanYunManager.update(ChuanyunAskForLeaveDo.SCHEMA_CODE,askForLeave.getObjectId(),purcostString);
                     }
                     if(chuanyunSaveDTO.getSuccessful()){
-                        log.info("新增请假信息成功");
+//                        log.info("新增请假信息成功");
                     }else{
                         log.warn("新增请假信息失败");
                     }
@@ -473,6 +483,62 @@ public class ChuanyunBasicDataScheduledTask {
     }
 
     /**
+     * 新增人力成本
+     */
+    private void saveLaborCost() {
+        var objectMapper=new ObjectMapper();
+        var page = 1;
+        var size = 20;
+        var flag=true;
+        while (flag) {
+            Map<String,String> map=new HashMap<>(1);
+            map.put("page",String.valueOf(page));
+            map.put("size",String.valueOf(size));
+            //获取物料成本
+            PageDTO<ChuanyunLaborCostDTO> pageInfo = clawFeign.findChuanyunLaborCost(map);
+            if (page<=pageInfo.getTotalPages()){
+                page += 1;
+            }else {
+                flag = false;
+                break;
+            }
+            List<ChuanyunLaborCostDTO> list = pageInfo.getContent();
+            list.forEach(chuanyunLaborCostDTO -> {
+                try {
+                    if(chuanyunLaborCostDTO != null) {
+                        LaborCostDTO laborCostDTO = new LaborCostDTO(chuanyunLaborCostDTO);
+                        laborCostDTO.setDataType("U9");
+                        var purcostString=objectMapper.writeValueAsString(laborCostDTO);
+                        ChuanyunSaveDTO chuanyunSaveDTO;
+                        //根据项目号判断是否存在
+                        List<String> macthers = new ArrayList<>();
+                        macthers.add("F0000005_2,"+chuanyunLaborCostDTO.getChuanyunLaborCostPrimaryKey().getProjectcode());
+                        macthers.add("F0000002_2,"+chuanyunLaborCostDTO.getChuanyunLaborCostPrimaryKey().getPeriod());
+                        var filter= Filter.instance(0,1,true,"And",macthers);
+                        var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMonthLaborCostDO.SCHEMA_CODE,filter);
+                        if (chuanyunFindAllResponse.getReturnData() == null) {
+                            //新增
+                            chuanyunSaveDTO =chuanYunManager.save(ChuanyunMonthLaborCostDO.SCHEMA_CODE,purcostString,true);
+                        }else {
+                            List<ChuanyunMonthLaborCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                            ChuanyunMonthLaborCostDO chuanyunMonthLaborCostDO = result.get(0);
+                            //更新
+                            chuanyunSaveDTO = chuanYunManager.update(ChuanyunMonthLaborCostDO.SCHEMA_CODE,chuanyunMonthLaborCostDO.getObjectId(),purcostString);
+                        }
+                        if(chuanyunSaveDTO.getSuccessful()){
+                            log.info("新增项目人力成本成功");
+                        }else{
+                            log.warn("新增项目人力成本失败");
+                        }
+                    }
+                } catch (JsonProcessingException | BigSizeException e) {
+                    e.printStackTrace();
+                }
+            });
+        }
+    }
+
+    /**
      * 获取供应商信息
      */
     private void getSupplier(){
@@ -1018,6 +1084,38 @@ public class ChuanyunBasicDataScheduledTask {
         }
     }
 
+    @Data
+    class LaborCostDTO {
+
+        @JsonProperty("F0000005")
+        private String projectCode;
+
+        @JsonProperty("F0000003")
+        private BigDecimal amount;
+
+        @JsonProperty("F0000002")
+        private LocalDateTime logDate;
+
+        @JsonProperty("F0000004")
+        private String dataType;
+
+        public LaborCostDTO(ChuanyunLaborCostDTO chuanyunMonthLaborCostDTO) {
+            if (null!=chuanyunMonthLaborCostDTO){
+                if (null!=chuanyunMonthLaborCostDTO.getCostamount()){
+                    this.amount=chuanyunMonthLaborCostDTO.getCostamount();
+                }
+                if (null!=chuanyunMonthLaborCostDTO.getChuanyunLaborCostPrimaryKey().getProjectcode()){
+                    this.projectCode=chuanyunMonthLaborCostDTO.getChuanyunLaborCostPrimaryKey().getProjectcode();
+                }
+                if (null!=chuanyunMonthLaborCostDTO.getChuanyunLaborCostPrimaryKey().getPeriod()){
+                    this.logDate=chuanyunMonthLaborCostDTO.getChuanyunLaborCostPrimaryKey().getPeriod();
+                }
+            }
+        }
+    }
+
+
+
     /**
      * 用于刷新项目经理权限的对象
      */

+ 1 - 1
src/main/java/com/galaxis/manatee/task/ChuanyunHumanResourceScheduledTask.java

@@ -68,7 +68,7 @@ public class ChuanyunHumanResourceScheduledTask {
         List<String> matchersString=new ArrayList<>();
         //由于需要统计流程中的日志,在日志数据同步时将状态为2的数据一并统计
 //        matchersString.add("Status_2,1");
-        matchersString.add("Status_6,[1,2]");
+        matchersString.add("Status_6,[1;2]");
         while (flag) {
             try {
                 //从氚云查询数据

File diff suppressed because it is too large
+ 73 - 105
src/main/java/com/galaxis/manatee/task/ChuanyunProjectScheduledTask.java