|
@@ -22,14 +22,12 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.persistence.CascadeType;
|
|
|
+import javax.persistence.FetchType;
|
|
|
import javax.persistence.OneToMany;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
@@ -39,18 +37,22 @@ public class U9InfoTask {
|
|
|
private final ChuanYunManager chuanYunManager;
|
|
|
private final ClawFeign clawFeign;
|
|
|
private final ChuanyunBudgetStatisticsDao chuanyunBudgetStatisticsDao;
|
|
|
+ private final ChuanyunCompanyDao chuanyunCompanyDao;
|
|
|
+ private final ChuanyunClientDao chuanyunClientDao;
|
|
|
|
|
|
|
|
|
- public U9InfoTask(ChuanYunManager chuanYunManager, ClawFeign clawFeign, ChuanyunBudgetStatisticsDao chuanyunBudgetStatisticsDao) {
|
|
|
+ public U9InfoTask(ChuanYunManager chuanYunManager, ClawFeign clawFeign, ChuanyunBudgetStatisticsDao chuanyunBudgetStatisticsDao, ChuanyunCompanyDao chuanyunCompanyDao, ChuanyunClientDao chuanyunClientDao) {
|
|
|
this.chuanYunManager = chuanYunManager;
|
|
|
this.clawFeign = clawFeign;
|
|
|
this.chuanyunBudgetStatisticsDao = chuanyunBudgetStatisticsDao;
|
|
|
-
|
|
|
+ this.chuanyunCompanyDao = chuanyunCompanyDao;
|
|
|
+ this.chuanyunClientDao = chuanyunClientDao;
|
|
|
}
|
|
|
|
|
|
@Scheduled(fixedDelay = 3600000L)
|
|
|
private void getDataFromU9() {
|
|
|
-// saveSalesContract();
|
|
|
+// saveSalesCollection();
|
|
|
+ saveSalesContract();
|
|
|
savePurCost();
|
|
|
saveCashFlow();
|
|
|
saveSupplier();
|
|
@@ -134,49 +136,132 @@ public class U9InfoTask {
|
|
|
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) {
|
|
|
+ if (!StringUtils.isEmpty(chuanyunSalesContractDTO.getOrgname())){
|
|
|
+ chuanyunSalesContractDTO.setOrgname(chuanyunCompanyDao.findByCompanyName(chuanyunSalesContractDTO.getOrgname()).getObjectId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(chuanyunSalesContractDTO.getCustname())){
|
|
|
+ chuanyunSalesContractDTO.setCustname(chuanyunClientDao.findByName(chuanyunSalesContractDTO.getCustname()).getObjectId());
|
|
|
+ }
|
|
|
+ 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<String> projectmatchers = new ArrayList<>();
|
|
|
+ projectmatchers.add("F0000002_2,"+chuanyunSalesContractDTO.getProjectcode());
|
|
|
+ var projectfilter= Filter.instance(0,Integer.MAX_VALUE,true,"And",projectmatchers);
|
|
|
+ var chuanyunFindResponse = chuanYunManager.findAll(ChuanyunGroupProjectDO.SCHEMA_CODE,projectfilter);
|
|
|
+ if (chuanyunFindResponse.getReturnData()!=null){
|
|
|
+ List<ChuanyunGroupProjectDO> projectresult=objectMapper.convertValue(chuanyunFindResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
+ salesContractDTO.setProjectId(projectresult.get(0).getObjectId());
|
|
|
+ }
|
|
|
+ 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) {
|
|
|
+ List<ChuanyunSaleContractDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
+ chuanyunSaveDTO=chuanYunManager.delete(ChuanyunSaleContractDO.SCHEMA_CODE,result.get(0).getObjectId());
|
|
|
+ }
|
|
|
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();
|
|
|
- }
|
|
|
+ } catch (JsonProcessingException | BigSizeException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 更新销售合同回款明细
|
|
|
+ */
|
|
|
+ private void saveSalesCollection(){
|
|
|
+ var objectMapper=new ObjectMapper();
|
|
|
+ var start=0;
|
|
|
+ var totalCount=0L;
|
|
|
+ var flag=true;
|
|
|
+ while (flag){
|
|
|
+ try {
|
|
|
+ var filter= Filter.instance(start,start+pageSize,true);
|
|
|
+ //获取销售合同管理
|
|
|
+ var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunSaleContractDO.SCHEMA_CODE,filter);
|
|
|
+ if(chuanyunFindAllResponse.getReturnData()==null){
|
|
|
+ flag=false;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
|
|
|
+ start+=pageSize;
|
|
|
+ }else{
|
|
|
+ flag=false;
|
|
|
+ }
|
|
|
+ List<ChuanyunSaleContractDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
+ totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
|
|
|
+ result.forEach(chuanyunSaleContractDO -> {
|
|
|
+ //根据合同号获取回款明细
|
|
|
+ List<ChuanyunSalesCollectionDetailDTO> collectionDetailDTOList = clawFeign.findCollectionByDocno(chuanyunSaleContractDO.getContractCode());
|
|
|
+ if (collectionDetailDTOList!=null&&collectionDetailDTOList.size()>0){
|
|
|
+ try {
|
|
|
+ SalesCollectionDTO salesCollectionDTO = new SalesCollectionDTO();
|
|
|
+ salesCollectionDTO.setSaleContractId(chuanyunSaleContractDO.getObjectId());
|
|
|
+ Set<ReceivePlanDTO> receivePlanDTOS = new HashSet<>();
|
|
|
+ collectionDetailDTOList.forEach(chuanyunSalesCollectionDetailDTO -> {
|
|
|
+ ReceivePlanDTO receivePlanDTO = new ReceivePlanDTO(chuanyunSalesCollectionDetailDTO);
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
|
|
|
+ String newDate = dateTimeFormatter.format(chuanyunSalesCollectionDetailDTO.getPlandate());
|
|
|
+ LocalDateTime dt = LocalDateTime.parse(newDate,dateTimeFormatter);
|
|
|
+ receivePlanDTO.setPlanDateTime(dt);
|
|
|
+ receivePlanDTOS.add(receivePlanDTO);
|
|
|
+ });
|
|
|
+ salesCollectionDTO.setPlanList(receivePlanDTOS);
|
|
|
+ var purcostString=objectMapper.writeValueAsString(salesCollectionDTO);
|
|
|
+ //根据合同号新增回款明细
|
|
|
+ List<String> macthers = new ArrayList<>();
|
|
|
+ macthers.add("F0000002_2,"+chuanyunSaleContractDO.getContractCode());
|
|
|
+ var newfilter= Filter.instance(0,1,true,"And",macthers);
|
|
|
+ var newchuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunPaymentReceiveDO.SCHEMA_CODE,newfilter);
|
|
|
+ ChuanyunSaveDTO chuanyunSaveDTO;
|
|
|
+ if (newchuanyunFindAllResponse.getReturnData() != null) {
|
|
|
+ List<ChuanyunPaymentReceiveDO> receiveDOSresult=objectMapper.convertValue(newchuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
+ chuanyunSaveDTO=chuanYunManager.delete(ChuanyunPaymentReceiveDO.SCHEMA_CODE,receiveDOSresult.get(0).getObjectId());
|
|
|
+ }
|
|
|
+ chuanyunSaveDTO =chuanYunManager.save(ChuanyunPaymentReceiveDO.SCHEMA_CODE,purcostString,true);
|
|
|
+ if(chuanyunSaveDTO.getSuccessful()){
|
|
|
+ log.info("新增销售合同汇款明细成功");
|
|
|
+ }else{
|
|
|
+ log.warn("新增销售合同汇款明细失败");
|
|
|
+ }
|
|
|
+ } catch (JsonProcessingException | BigSizeException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 更新项目收付款
|
|
|
*/
|
|
|
private void saveCashFlow() {
|
|
@@ -592,6 +677,9 @@ public class U9InfoTask {
|
|
|
@JsonProperty("F0000027")
|
|
|
private String clientId;
|
|
|
|
|
|
+ @JsonProperty("F0000020")
|
|
|
+ private String projectId;
|
|
|
+
|
|
|
@JsonProperty("F0000025")
|
|
|
private String projectCode;
|
|
|
|
|
@@ -701,7 +789,7 @@ public class U9InfoTask {
|
|
|
private String productName;
|
|
|
|
|
|
@JsonProperty("F0000012")
|
|
|
- private String number;
|
|
|
+ private BigDecimal number;
|
|
|
|
|
|
@JsonProperty("F0000070")
|
|
|
private BigDecimal unitPrice;
|
|
@@ -744,4 +832,56 @@ public class U9InfoTask {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Data
|
|
|
+ class SalesCollectionDTO{
|
|
|
+
|
|
|
+ @JsonProperty("F0000001")
|
|
|
+ private String saleContractId;
|
|
|
+
|
|
|
+ @JsonProperty("D001789F2a010fe1818a4020b1ff5a33533f9e44")
|
|
|
+ @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true,fetch = FetchType.EAGER)
|
|
|
+ private Set<ReceivePlanDTO> planList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Data
|
|
|
+ class ReceivePlanDTO{
|
|
|
+
|
|
|
+ @JsonProperty("F0000033")
|
|
|
+ @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
|
|
|
+ @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
|
|
|
+ private LocalDateTime planDateTime;
|
|
|
+
|
|
|
+ @JsonProperty("F0000036")
|
|
|
+ private BigDecimal receiveAmount;
|
|
|
+
|
|
|
+ @JsonProperty("F0000035")
|
|
|
+ private BigDecimal rate;
|
|
|
+
|
|
|
+ @JsonProperty("F0000034")
|
|
|
+ private String step;
|
|
|
+
|
|
|
+ @JsonProperty("F0000032")
|
|
|
+ private String receiveCondition;
|
|
|
+
|
|
|
+ public ReceivePlanDTO(ChuanyunSalesCollectionDetailDTO chuanyunSalesCollectionDetailDTO){
|
|
|
+ if (null!=chuanyunSalesCollectionDetailDTO){
|
|
|
+ if (null!=chuanyunSalesCollectionDetailDTO.getPlanaccount()){
|
|
|
+ this.receiveAmount=chuanyunSalesCollectionDetailDTO.getPlanaccount();
|
|
|
+ }
|
|
|
+ if (null!=chuanyunSalesCollectionDetailDTO.getPlanpercent()){
|
|
|
+ this.rate=chuanyunSalesCollectionDetailDTO.getPlanpercent();
|
|
|
+ }
|
|
|
+ if (null!=chuanyunSalesCollectionDetailDTO.getPlanpercent()){
|
|
|
+ this.rate=chuanyunSalesCollectionDetailDTO.getPlanpercent();
|
|
|
+ }
|
|
|
+ if (null!=chuanyunSalesCollectionDetailDTO.getDesnote()){
|
|
|
+ this.step=chuanyunSalesCollectionDetailDTO.getDesnote();
|
|
|
+ }
|
|
|
+ if (null!=chuanyunSalesCollectionDetailDTO.getAccountnote()){
|
|
|
+ this.receiveCondition=chuanyunSalesCollectionDetailDTO.getAccountnote();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|