|
@@ -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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|