Browse Source

1.更新销售合同管理

WoNiu 4 years ago
parent
commit
fe7046ec17

+ 57 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunSalesContractDTO.java

@@ -0,0 +1,57 @@
+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.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+public class ChuanyunSalesContractDTO {
+
+    private String docno;
+
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime businessdate;
+
+    private String orgname;
+
+    private String createdby;
+
+    private String deptcode;
+
+    private String custname;
+
+    private String projectcode;
+
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime receivedate;
+
+    private String contractname;
+
+    private String contracttype;
+
+    private String signaddress;
+
+    private String ownercust;
+
+    private String ownertrade;
+
+    private String businessfrom;
+
+    private String businesstype;
+
+    private String contractsubtype;
+
+    private String currencyname;
+
+    private BigDecimal netmoney;
+
+    private BigDecimal totalmoney;
+}

+ 26 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunSalesContractOfferDTO.java

@@ -0,0 +1,26 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+import lombok.Data;
+
+import javax.persistence.EmbeddedId;
+import java.math.BigDecimal;
+
+@Data
+public class ChuanyunSalesContractOfferDTO {
+
+    private ChuanyunSalesContractOfferPrimaryKey chuanyunSalesContractOfferPrimaryKey;
+
+    private String itemname;
+
+    private String qty;
+
+    private BigDecimal orderprice;
+
+    private BigDecimal orderpricenotax;
+
+    private BigDecimal taxrate;
+
+    private BigDecimal netmoney;
+
+    private BigDecimal totalmoney;
+}

+ 15 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunSalesContractOfferPrimaryKey.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 ChuanyunSalesContractOfferPrimaryKey implements Serializable {
+
+    private String docno;
+
+    private String doclineno;
+}

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

@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -85,6 +86,30 @@ public interface ClawFeign {
     @GetMapping("/device/findAllByParameters")
     PageDTO<ChuanyunDeviceDTO> findChuanyunDevice(@RequestParam Map<String,String> map);
 
+    /**
+     * 查询销售合同信息
+     * @param map
+     * @return
+     */
+    @GetMapping("/salescontract/findAllByParameters")
+    PageDTO<ChuanyunSalesContractDTO> findChuanyunSalesContract(@RequestParam Map<String,String> map);
+
+    /**
+     * 查询销售合同报价信息
+     * @param map
+     * @return
+     */
+    @GetMapping("/salescontractoffer/findAllByParameters")
+    PageDTO<ChuanyunSalesContractOfferDTO> findChuanyunSalesContractOffer(@RequestParam Map<String,String> map);
+
+    /**
+     * 根据合同号查询报价
+     * @param docno
+     * @return
+     */
+    @GetMapping("/salescontractoffer/findallbydocno")
+    List<ChuanyunSalesContractOfferDTO> findAllByDocno(@RequestParam String docno);
+
 
     /**
      * 测试

+ 242 - 0
src/main/java/com/galaxis/manatee/task/U9InfoTask.java

@@ -21,6 +21,8 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import javax.persistence.CascadeType;
+import javax.persistence.OneToMany;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -48,6 +50,7 @@ public class U9InfoTask {
 
     @Scheduled(fixedDelay = 3600000L)
     private void getDataFromU9() {
+//        saveSalesContract();
         savePurCost();
         saveCashFlow();
         saveSupplier();
@@ -110,6 +113,70 @@ public class U9InfoTask {
     }
 
     /**
+     * 更新销售合同管理
+     */
+    private void saveSalesContract(){
+        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<ChuanyunSalesContractDTO> pageInfo = clawFeign.findChuanyunSalesContract(map);
+            if (page<=pageInfo.getTotalPages()){
+                page += 1;
+            }else {
+                flag = false;
+                break;
+            }
+            List<ChuanyunSalesContractDTO> list = pageInfo.getContent();
+            list.forEach(chuanyunSalesContractDTO -> {
+                try {
+                SalesContractDTO salesContractDTO = new SalesContractDTO(chuanyunSalesContractDTO);
+                DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
+                String newDate = dateTimeFormatter.format(chuanyunSalesContractDTO.getBusinessdate());
+                LocalDateTime dt = LocalDateTime.parse(newDate,dateTimeFormatter);
+                salesContractDTO.setSignedDateTime(dt);
+                if (chuanyunSalesContractDTO.getReceivedate()!=null){
+                    String receiveDate = dateTimeFormatter.format(chuanyunSalesContractDTO.getReceivedate());
+                    LocalDateTime dt1 = LocalDateTime.parse(receiveDate,dateTimeFormatter);
+                    salesContractDTO.setReceivedDateTime(dt1);
+                }
+                List<ChuanyunSalesContractOfferDTO> offerDTOList = clawFeign.findAllByDocno(chuanyunSalesContractDTO.getDocno());
+                List<SalesContractOfferDTO> salesContractOfferDTOList = new ArrayList<>();
+                offerDTOList.forEach(chuanyunSalesContractOfferDTO -> {
+                    SalesContractOfferDTO salesContractOfferDTO = new SalesContractOfferDTO(chuanyunSalesContractOfferDTO);
+                    salesContractOfferDTOList.add(salesContractOfferDTO);
+                });
+                salesContractDTO.setChuanyunSaleContractDetailDOList(salesContractOfferDTOList);
+                var purcostString=objectMapper.writeValueAsString(salesContractDTO);
+                List<String> macthers = new ArrayList<>();
+                macthers.add("F0000001_2,"+chuanyunSalesContractDTO.getDocno());
+                var filter= Filter.instance(0,1,true,"And",macthers);
+                var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunSaleContractDO.SCHEMA_CODE,filter);
+                ChuanyunSaveDTO chuanyunSaveDTO;
+                if (chuanyunFindAllResponse.getReturnData() == null) {
+                    chuanyunSaveDTO =chuanYunManager.save(ChuanyunSaleContractDO.SCHEMA_CODE,purcostString,true);
+                }else {
+                    List<ChuanyunSaleContractDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                    //更新
+                    chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectCashFlowDO.SCHEMA_CODE,result.get(0).getObjectId(),purcostString);
+                }
+                    if(chuanyunSaveDTO.getSuccessful()){
+                        log.info("新增销售合同管理成功");
+                    }else{
+                        log.warn("新增销售合同管理失败");
+                    }
+                } catch (JsonProcessingException | BigSizeException e) {
+                    e.printStackTrace();
+                }
+            });
+        }
+    }
+
+    /**
      * 更新项目收付款
      */
     private void saveCashFlow() {
@@ -502,4 +569,179 @@ public class U9InfoTask {
             }
         }
     }
+
+    @Data
+    class SalesContractDTO{
+        @JsonProperty("F0000001")
+        private String contractCode;
+
+        @JsonProperty("F0000003")
+        @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
+        @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
+        private LocalDateTime signedDateTime;
+
+        @JsonProperty("F0000002")
+        private String companyId;
+
+        @JsonProperty("F0000072")
+        private String contractCreator;
+
+        @JsonProperty("F0000062")
+        private String salesManagerDepartment;
+
+        @JsonProperty("F0000027")
+        private String clientId;
+
+        @JsonProperty("F0000025")
+        private String projectCode;
+
+        @JsonProperty("F0000045")
+        @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
+        @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
+        private LocalDateTime receivedDateTime;
+
+        @JsonProperty("F0000004")
+        private String contractName;
+
+        @JsonProperty("F0000005")
+        private String contractType;
+
+        @JsonProperty("F0000028")
+        private String location;
+
+        @JsonProperty("F0000029")
+        private String ownerId;
+
+        @JsonProperty("F0000024")
+        private String ownerIndustry;
+
+        @JsonProperty("F0000056")
+        private String businessSource;
+
+        @JsonProperty("F0000058")
+        private String businessType;
+
+        @JsonProperty("F0000006")
+        private String contractSubType;
+
+        @JsonProperty("F0000067")
+        private String currency;
+
+        @JsonProperty("F0000047")
+        private BigDecimal totalAmountWithoutTax;
+
+        @JsonProperty("F0000021")
+        private BigDecimal totalAmount;
+
+        @JsonProperty("D001789Ffc834ddecbfe44b084795aa48e80bfcf")
+        @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
+        private List<SalesContractOfferDTO> chuanyunSaleContractDetailDOList;
+
+        public SalesContractDTO(ChuanyunSalesContractDTO chuanyunSalesContractDTO) {
+            if (null!=chuanyunSalesContractDTO){
+                if (null!=chuanyunSalesContractDTO.getDocno()){
+                    this.contractCode=chuanyunSalesContractDTO.getDocno();
+                }
+                if (null!=chuanyunSalesContractDTO.getOrgname()){
+                    this.companyId=chuanyunSalesContractDTO.getOrgname();
+                }
+                if (null!=chuanyunSalesContractDTO.getCreatedby()){
+                    this.contractCreator=chuanyunSalesContractDTO.getCreatedby();
+                }
+                if (null!=chuanyunSalesContractDTO.getDeptcode()){
+                    this.salesManagerDepartment=chuanyunSalesContractDTO.getDeptcode();
+                }
+                if (null!=chuanyunSalesContractDTO.getCustname()){
+                    this.clientId=chuanyunSalesContractDTO.getCustname();
+                }
+                if (null!=chuanyunSalesContractDTO.getProjectcode()){
+                    this.projectCode=chuanyunSalesContractDTO.getProjectcode();
+                }
+                if (null!=chuanyunSalesContractDTO.getContractname()){
+                    this.contractName=chuanyunSalesContractDTO.getContractname();
+                }
+                if (null!=chuanyunSalesContractDTO.getContracttype()){
+                    this.contractType=chuanyunSalesContractDTO.getContracttype();
+                }
+                if (null!=chuanyunSalesContractDTO.getSignaddress()){
+                    this.location=chuanyunSalesContractDTO.getSignaddress();
+                }
+                if (null!=chuanyunSalesContractDTO.getOwnercust()){
+                    this.ownerId=chuanyunSalesContractDTO.getOwnercust();
+                }
+                if (null!=chuanyunSalesContractDTO.getOwnertrade()){
+                    this.ownerIndustry=chuanyunSalesContractDTO.getOwnertrade();
+                }
+                if (null!=chuanyunSalesContractDTO.getBusinessfrom()){
+                    this.businessSource=chuanyunSalesContractDTO.getBusinessfrom();
+                }
+                if (null!=chuanyunSalesContractDTO.getBusinesstype()){
+                    this.businessType=chuanyunSalesContractDTO.getBusinesstype();
+                }
+                if (null!=chuanyunSalesContractDTO.getContractsubtype()){
+                    this.contractSubType=chuanyunSalesContractDTO.getContractsubtype();
+                }
+                if (null!=chuanyunSalesContractDTO.getCurrencyname()){
+                    this.currency=chuanyunSalesContractDTO.getCurrencyname();
+                }
+                if (null!=chuanyunSalesContractDTO.getNetmoney()){
+                    this.totalAmountWithoutTax=chuanyunSalesContractDTO.getNetmoney();
+                }
+                if (null!=chuanyunSalesContractDTO.getTotalmoney()){
+                    this.totalAmount=chuanyunSalesContractDTO.getTotalmoney();
+                }
+            }
+        }
+    }
+
+    @Data
+    class SalesContractOfferDTO{
+
+        @JsonProperty("F0000010")
+        private String productName;
+
+        @JsonProperty("F0000012")
+        private String number;
+
+        @JsonProperty("F0000070")
+        private BigDecimal unitPrice;
+
+        @JsonProperty("F0000071")
+        private BigDecimal unitPriceNoTax;
+
+        @JsonProperty("F0000015")
+        private BigDecimal rate;
+
+        @JsonProperty("F0000050")
+        private BigDecimal priceWithoutTax;
+
+        @JsonProperty("F0000013")
+        private BigDecimal price;
+
+        public SalesContractOfferDTO(ChuanyunSalesContractOfferDTO chuanyunSalesContractOfferDTO){
+            if (null!=chuanyunSalesContractOfferDTO){
+                if (null!=chuanyunSalesContractOfferDTO.getItemname()){
+                    this.productName=chuanyunSalesContractOfferDTO.getItemname();
+                }
+                if (null!=chuanyunSalesContractOfferDTO.getQty()){
+                    this.number=chuanyunSalesContractOfferDTO.getQty();
+                }
+                if (null!=chuanyunSalesContractOfferDTO.getOrderprice()){
+                    this.unitPrice=chuanyunSalesContractOfferDTO.getOrderprice();
+                }
+                if (null!=chuanyunSalesContractOfferDTO.getOrderpricenotax()){
+                    this.unitPriceNoTax=chuanyunSalesContractOfferDTO.getOrderpricenotax();
+                }
+                if (null!=chuanyunSalesContractOfferDTO.getTaxrate()){
+                    this.rate=chuanyunSalesContractOfferDTO.getTaxrate();
+                }
+                if (null!=chuanyunSalesContractOfferDTO.getNetmoney()){
+                    this.priceWithoutTax=chuanyunSalesContractOfferDTO.getNetmoney();
+                }
+                if (null!=chuanyunSalesContractOfferDTO.getTotalmoney()){
+                    this.price=chuanyunSalesContractOfferDTO.getTotalmoney();
+                }
+            }
+        }
+    }
 }