Przeglądaj źródła

1.新增采购合同管理

WoNiu 4 lat temu
rodzic
commit
9a44386600

+ 1 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunSupplierDao.java

@@ -11,4 +11,5 @@ import org.springframework.stereotype.Repository;
  */
 @Repository
 public interface ChuanyunSupplierDao extends GalaxisRepository<ChuanyunSupplierDO,String> {
+    ChuanyunSupplierDO findBySupplierCode(String code);
 }

+ 25 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunPurContractDO.java

@@ -0,0 +1,25 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.Entity;
+
+@Slf4j
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity(name = "CHUANYUN_PURCONTRACT")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunPurContractDO extends BasicDO{
+
+    public static final String SCHEMA_CODE ="D0017897b322a28f07249f2b8f082d176a64686";
+
+    @JsonProperty("F0000010")
+    private String contractCode;
+
+    @JsonProperty("F0000011")
+    private String contractName;
+}

+ 30 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunPurContractDTO.java

@@ -0,0 +1,30 @@
+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 lombok.Data;
+
+import javax.persistence.Id;
+import java.time.LocalDateTime;
+
+@Data
+public class ChuanyunPurContractDTO {
+
+    @Id
+    private String docno;
+
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime businessdate;
+
+    private String orgname;
+
+    private String opername;
+
+    private String docname;
+
+    private String projectcode;
+
+}

+ 19 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunPurContractDetailDTO.java

@@ -0,0 +1,19 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+import lombok.Data;
+
+import javax.persistence.EmbeddedId;
+import java.math.BigDecimal;
+
+@Data
+public class ChuanyunPurContractDetailDTO {
+
+    @EmbeddedId
+    private ChuanyunSalesCollectionDetailPrimaryKey chuanyunSalesCollectionDetailPrimaryKey;
+
+    private String desnote;
+
+    private BigDecimal planaccount;
+
+    private BigDecimal planpercent;
+}

+ 14 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunPurContractDetailPrimaryKey.java

@@ -0,0 +1,14 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+import lombok.Data;
+
+import javax.persistence.Embeddable;
+
+@Embeddable
+@Data
+public class ChuanyunPurContractDetailPrimaryKey {
+
+    private String docno;
+
+    private String doclineno;
+}

+ 23 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunPurContractOfferDTO.java

@@ -0,0 +1,23 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+import lombok.Data;
+
+import javax.persistence.EmbeddedId;
+import java.math.BigDecimal;
+
+@Data
+public class ChuanyunPurContractOfferDTO {
+
+    @EmbeddedId
+    private ChuanyunPurContractOfferPrimaryKey chuanyunPurContractOfferPrimaryKey;
+
+    private String suppliername;
+
+    private String itemname;
+
+    private BigDecimal qty;
+
+    private BigDecimal taxrate;
+
+    private BigDecimal mny;
+}

+ 15 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunPurContractOfferPrimaryKey.java

@@ -0,0 +1,15 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+import lombok.Data;
+
+import javax.persistence.Embeddable;
+import java.io.Serializable;
+
+@Embeddable
+@Data
+public class ChuanyunPurContractOfferPrimaryKey implements Serializable {
+
+    private String docno;
+
+    private String doclineno;
+}

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

@@ -111,6 +111,30 @@ public interface ClawFeign {
     PageDTO<ChuanyunSalesCollectionDetailDTO> findChuanyunSalesCollectionDetail(@RequestParam Map<String,String> map);
 
     /**
+     * 查询采购合同管理
+     * @param map
+     * @return
+     */
+    @GetMapping("/purcontract/findAllByParameters")
+    PageDTO<ChuanyunPurContractDTO> findChuanyunPurContract(@RequestParam Map<String,String> map);
+
+    /**
+     * 根据合同号查询采购合同付款情况
+     * @param docno
+     * @return
+     */
+    @GetMapping("/purcontractdetail/findallbydocno")
+    List<ChuanyunPurContractDetailDTO> findPurContractDetailByDocno(@RequestParam String docno);
+
+    /**
+     * 根据合同号查询采购明细
+     * @param docno
+     * @return
+     */
+    @GetMapping("/purcontractoffer/findallbydocno")
+    List<ChuanyunPurContractOfferDTO> findPurContractOfferByDocno(@RequestParam String docno);
+
+    /**
      * 根据合同号查询回款明细
      * @param docno
      * @return

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

@@ -41,9 +41,10 @@ public class U9InfoTask {
     private final ChuanyunClientDao chuanyunClientDao;
     private final ChuanyunUserDao chuanyunUserDao;
     private final ChuanyunOutDepartmentDao chuanyunOutDepartmentDao;
+    private final ChuanyunSupplierDao chuanyunSupplierDao;
 
 
-    public U9InfoTask(ChuanYunManager chuanYunManager, ClawFeign clawFeign, ChuanyunBudgetStatisticsDao chuanyunBudgetStatisticsDao, ChuanyunCompanyDao chuanyunCompanyDao, ChuanyunClientDao chuanyunClientDao, ChuanyunUserDao chuanyunUserDao, ChuanyunOutDepartmentDao chuanyunOutDepartmentDao) {
+    public U9InfoTask(ChuanYunManager chuanYunManager, ClawFeign clawFeign, ChuanyunBudgetStatisticsDao chuanyunBudgetStatisticsDao, ChuanyunCompanyDao chuanyunCompanyDao, ChuanyunClientDao chuanyunClientDao, ChuanyunUserDao chuanyunUserDao, ChuanyunOutDepartmentDao chuanyunOutDepartmentDao, ChuanyunSupplierDao chuanyunSupplierDao) {
         this.chuanYunManager = chuanYunManager;
         this.clawFeign = clawFeign;
         this.chuanyunBudgetStatisticsDao = chuanyunBudgetStatisticsDao;
@@ -51,10 +52,12 @@ public class U9InfoTask {
         this.chuanyunClientDao = chuanyunClientDao;
         this.chuanyunUserDao = chuanyunUserDao;
         this.chuanyunOutDepartmentDao = chuanyunOutDepartmentDao;
+        this.chuanyunSupplierDao = chuanyunSupplierDao;
     }
 
     @Scheduled(fixedDelay = 3600000L)
     private void getDataFromU9() {
+        savePurContract();
         savePurCost();
         saveCashFlow();
         saveLaborCost();
@@ -119,6 +122,100 @@ public class U9InfoTask {
         }
     }
 
+
+    /**
+     * 更新采购合同管理
+     */
+    private void savePurContract(){
+        log.info("开始更新采购合同管理");
+        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<ChuanyunPurContractDTO> pageInfo = clawFeign.findChuanyunPurContract(map);
+            if (page<=pageInfo.getTotalPages()){
+                page += 1;
+            }else {
+                flag = false;
+                break;
+            }
+            List<ChuanyunPurContractDTO> list = pageInfo.getContent();
+            list.forEach(chuanyunPurContractDTO -> {
+                try {
+                    if (!StringUtils.isEmpty(chuanyunPurContractDTO.getOrgname())){
+                        chuanyunPurContractDTO.setOrgname(chuanyunCompanyDao.findByCompanyName(chuanyunPurContractDTO.getOrgname()).getObjectId());
+                    }
+                    if (!StringUtils.isEmpty(chuanyunPurContractDTO.getOpername())){
+                        chuanyunPurContractDTO.setOpername(chuanyunUserDao.findByName(chuanyunPurContractDTO.getOpername()).getObjectId());
+                    }
+                    PurContractDTO purContractDTO = new PurContractDTO(chuanyunPurContractDTO);
+                    purContractDTO.setDataSource("U9");
+                    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
+                    String newDate = dateTimeFormatter.format(chuanyunPurContractDTO.getBusinessdate());
+                    LocalDateTime dt = LocalDateTime.parse(newDate,dateTimeFormatter);
+                    purContractDTO.setSignedDateTime(dt);
+                    if (!StringUtils.isEmpty(chuanyunPurContractDTO.getProjectcode())){
+                        List<String> projectmatchers = new ArrayList<>();
+                        projectmatchers.add("F0000002_2,"+chuanyunPurContractDTO.getProjectcode());
+                        var projectfilter= Filter.instance(0,Integer.MAX_VALUE,true,"And",projectmatchers);
+                        ChuanyunFindAllBizDTO<Object> chuanyunFindResponse = null;
+                        chuanyunFindResponse = chuanYunManager.findAll(ChuanyunGroupProjectDO.SCHEMA_CODE,projectfilter);
+                        if (chuanyunFindResponse.getReturnData()!=null){
+                            List<ChuanyunGroupProjectDO> projectresult=objectMapper.convertValue(chuanyunFindResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                            purContractDTO.setProjectId(projectresult.get(0).getObjectId());
+                        }
+                    }
+                    List<ChuanyunPurContractOfferDTO> offerDTOS = clawFeign.findPurContractOfferByDocno(chuanyunPurContractDTO.getDocno());
+                    List<PurContractOfferDTO> purContractOfferDTOS = new ArrayList<>();
+                    offerDTOS.forEach(chuanyunPurContractOfferDTO -> {
+                        if (!StringUtils.isEmpty(chuanyunPurContractOfferDTO.getSuppliername())){
+                            ChuanyunSupplierDO chuanyunSupplierDO = chuanyunSupplierDao.findBySupplierCode(chuanyunPurContractOfferDTO.getSuppliername());
+                            if (chuanyunSupplierDO!=null){
+                                chuanyunPurContractOfferDTO.setSuppliername(chuanyunSupplierDO.getObjectId());
+                            }
+                        }
+                        PurContractOfferDTO purContractOfferDTO = new PurContractOfferDTO(chuanyunPurContractOfferDTO);
+                        purContractOfferDTOS.add(purContractOfferDTO);
+                    });
+                    purContractDTO.setChuanyunPurContractOfferDOList(purContractOfferDTOS);
+                    List<ChuanyunPurContractDetailDTO> detailDTOS = clawFeign.findPurContractDetailByDocno(chuanyunPurContractDTO.getDocno());
+                    List<PurContractDetailDTO> purContractDetailDTOS = new ArrayList<>();
+                    detailDTOS.forEach(chuanyunPurContractDetailDTO -> {
+                        PurContractDetailDTO purContractDetailDTO = new PurContractDetailDTO(chuanyunPurContractDetailDTO);
+                        purContractDetailDTOS.add(purContractDetailDTO);
+                    });
+                    purContractDTO.setChuanyunPurContractDetailDOList(purContractDetailDTOS);
+                    var purcostString=objectMapper.writeValueAsString(purContractDTO);
+                    List<String> macthers = new ArrayList<>();
+                    macthers.add("F0000010_2,"+chuanyunPurContractDTO.getDocno());
+                    macthers.add("F0000016_2,"+chuanyunPurContractDTO.getProjectcode());
+                    var filter= Filter.instance(0,1,true,"And",macthers);
+                    var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunPurContractDO.SCHEMA_CODE,filter);
+                    ChuanyunSaveDTO chuanyunSaveDTO;
+                    if (chuanyunFindAllResponse.getReturnData() != null) {
+                        List<ChuanyunPurContractDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                        chuanyunSaveDTO=chuanYunManager.delete(ChuanyunPurContractDO.SCHEMA_CODE,result.get(0).getObjectId());
+                    }
+                    chuanyunSaveDTO =chuanYunManager.save(ChuanyunPurContractDO.SCHEMA_CODE,purcostString,true);
+                    if(chuanyunSaveDTO.getSuccessful()){
+                        log.info("新增采购合同管理成功");
+                    }else{
+                        log.warn("新增采购合同管理失败");
+                    }
+
+                } catch (JsonProcessingException | BigSizeException e) {
+                    e.printStackTrace();
+                }
+
+
+            });
+        }
+    }
+
     /**
      * 更新销售合同管理
      */
@@ -286,6 +383,7 @@ public class U9InfoTask {
         }
     }
 
+
     /**
      * 更新项目收付款
      */
@@ -696,6 +794,130 @@ public class U9InfoTask {
     }
 
     @Data
+    class PurContractDTO{
+
+        @JsonProperty("F0000010")
+        private String contractCode;
+
+        @JsonProperty("F0000055")
+        @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
+        @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
+        private LocalDateTime signedDateTime;
+
+        @JsonProperty("F0000018")
+        private String companyId;
+
+        @JsonProperty("F0000013")
+        private String contractCreator;
+
+        @JsonProperty("F0000011")
+        private String contractName;
+
+        @JsonProperty("F0000015")
+        private String projectId;
+
+        @JsonProperty("F0000016")
+        private String projectCode;
+
+        @JsonProperty("F0000057")
+        private String dataSource;
+
+        @JsonProperty("D001789F42572596a43740a297245705dbf4b1b2")
+        @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
+        private List<PurContractOfferDTO> chuanyunPurContractOfferDOList;
+
+        @JsonProperty("D001789F07ac5fe52dc041b0b9e691ef8984093f")
+        @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
+        private List<PurContractDetailDTO> chuanyunPurContractDetailDOList;
+
+        public PurContractDTO(ChuanyunPurContractDTO chuanyunPurContractDTO){
+            if(null!=chuanyunPurContractDTO){
+                if (null!=chuanyunPurContractDTO.getDocno()){
+                    this.contractCode=chuanyunPurContractDTO.getDocno();
+                }
+                if (null!=chuanyunPurContractDTO.getOrgname()){
+                    this.companyId=chuanyunPurContractDTO.getOrgname();
+                }
+                if (null!=chuanyunPurContractDTO.getOpername()){
+                    this.contractCreator=chuanyunPurContractDTO.getOpername();
+                }
+                if (null!=chuanyunPurContractDTO.getDocname()){
+                    this.contractName=chuanyunPurContractDTO.getDocname();
+                }
+                if (null!=chuanyunPurContractDTO.getProjectcode()){
+                    this.projectCode=chuanyunPurContractDTO.getProjectcode();
+                }
+            }
+        }
+    }
+
+    @Data
+    class PurContractOfferDTO{
+
+        @JsonProperty("supplier")
+        private String supplierName;
+
+        @JsonProperty("procurementEquipmentName")
+        private String equipmentName;
+
+        @JsonProperty("F0000049")
+        private BigDecimal number;
+
+        @JsonProperty("taxRate")
+        private BigDecimal contractTax;
+
+        @JsonProperty("totalPrice")
+        private BigDecimal contractAmount;
+
+        public PurContractOfferDTO(ChuanyunPurContractOfferDTO chuanyunPurContractOfferDTO) {
+            if (null!=chuanyunPurContractOfferDTO){
+                if (null!=chuanyunPurContractOfferDTO.getItemname()){
+                    this.equipmentName=chuanyunPurContractOfferDTO.getItemname();
+                }
+                if (null!=chuanyunPurContractOfferDTO.getSuppliername()){
+                    this.supplierName=chuanyunPurContractOfferDTO.getSuppliername();
+                }
+                if (null!=chuanyunPurContractOfferDTO.getQty()){
+                    this.number=chuanyunPurContractOfferDTO.getQty();
+                }
+                if (null!=chuanyunPurContractOfferDTO.getTaxrate()){
+                    this.contractTax=chuanyunPurContractOfferDTO.getTaxrate();
+                }
+                if (null!=chuanyunPurContractOfferDTO.getMny()){
+                    this.contractAmount=chuanyunPurContractOfferDTO.getMny();
+                }
+            }
+        }
+    }
+
+    @Data
+    class PurContractDetailDTO{
+
+        @JsonProperty("F0000030")
+        private String purContractNode;
+
+        @JsonProperty("F0000047")
+        private BigDecimal purAmount;
+
+        @JsonProperty("F0000046")
+        private BigDecimal purTax;
+
+        public PurContractDetailDTO(ChuanyunPurContractDetailDTO chuanyunPurContractDetailDTO){
+            if (null!=chuanyunPurContractDetailDTO){
+                if (null!=chuanyunPurContractDetailDTO.getDesnote()){
+                    this.purContractNode=chuanyunPurContractDetailDTO.getDesnote();
+                }
+                if (null!=chuanyunPurContractDetailDTO.getPlanaccount()){
+                    this.purAmount=chuanyunPurContractDetailDTO.getPlanaccount();
+                }
+                if (null!=chuanyunPurContractDetailDTO.getPlanpercent()){
+                    this.purTax=chuanyunPurContractDetailDTO.getPlanpercent();
+                }
+            }
+        }
+    }
+
+    @Data
     class SalesContractDTO{
         @JsonProperty("F0000001")
         private String contractCode;