|
@@ -7,12 +7,16 @@ import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
import com.jeeplus.common.TokenProvider;
|
|
import com.jeeplus.common.TokenProvider;
|
|
import com.jeeplus.core.query.QueryWrapperGenerator;
|
|
import com.jeeplus.core.query.QueryWrapperGenerator;
|
|
import com.jeeplus.finance.ccpm.enums.TaskAliasEnum;
|
|
import com.jeeplus.finance.ccpm.enums.TaskAliasEnum;
|
|
|
|
+import com.jeeplus.finance.ccpm.vo.*;
|
|
import com.jeeplus.finance.invoice.domain.*;
|
|
import com.jeeplus.finance.invoice.domain.*;
|
|
import com.jeeplus.finance.invoice.mapper.*;
|
|
import com.jeeplus.finance.invoice.mapper.*;
|
|
import com.jeeplus.finance.invoice.service.dto.CwFinanceInvoiceBaseDTO;
|
|
import com.jeeplus.finance.invoice.service.dto.CwFinanceInvoiceBaseDTO;
|
|
@@ -24,6 +28,7 @@ import com.jeeplus.finance.projectRecords.domain.CwProjectRecords;
|
|
import com.jeeplus.finance.projectRecords.mapper.CwProjectRecordsMapper;
|
|
import com.jeeplus.finance.projectRecords.mapper.CwProjectRecordsMapper;
|
|
import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
|
|
import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
|
|
import com.jeeplus.finance.projectReport.mapper.CwProjectReportMapper;
|
|
import com.jeeplus.finance.projectReport.mapper.CwProjectReportMapper;
|
|
|
|
+import com.jeeplus.finance.utils.Global;
|
|
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBase;
|
|
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBase;
|
|
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBilling;
|
|
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBilling;
|
|
import com.jeeplus.finance.workClientInfo.service.CwWorkClientBillingService;
|
|
import com.jeeplus.finance.workClientInfo.service.CwWorkClientBillingService;
|
|
@@ -32,17 +37,21 @@ import com.jeeplus.finance.workClientInfo.service.CwWorkClientService;
|
|
//import com.jeeplus.pubmodules.oss.service.OssService;
|
|
//import com.jeeplus.pubmodules.oss.service.OssService;
|
|
//import com.jeeplus.pubmodules.serialNumTpl.service.SerialnumTplService;
|
|
//import com.jeeplus.pubmodules.serialNumTpl.service.SerialnumTplService;
|
|
import com.jeeplus.sys.domain.User;
|
|
import com.jeeplus.sys.domain.User;
|
|
|
|
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
|
|
import com.jeeplus.sys.feign.IDictApi;
|
|
import com.jeeplus.sys.feign.IDictApi;
|
|
import com.jeeplus.sys.feign.IRoleApi;
|
|
import com.jeeplus.sys.feign.IRoleApi;
|
|
import com.jeeplus.sys.feign.IUserApi;
|
|
import com.jeeplus.sys.feign.IUserApi;
|
|
import com.jeeplus.sys.feign.IWorkAttachmentApi;
|
|
import com.jeeplus.sys.feign.IWorkAttachmentApi;
|
|
//import com.jeeplus.sys.service.UserService;
|
|
//import com.jeeplus.sys.service.UserService;
|
|
|
|
+import com.jeeplus.sys.service.dto.AreaDTO;
|
|
import com.jeeplus.sys.service.dto.RoleDTO;
|
|
import com.jeeplus.sys.service.dto.RoleDTO;
|
|
import com.jeeplus.sys.service.dto.UserDTO;
|
|
import com.jeeplus.sys.service.dto.UserDTO;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
-import org.springframework.http.ResponseEntity;
|
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.http.*;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
@@ -69,6 +78,8 @@ public class CwFinanceInvoiceService extends ServiceImpl<CwFinanceInvoiceMapper,
|
|
private CwProjectRecordsMapper cwProjectRecordsMapper;
|
|
private CwProjectRecordsMapper cwProjectRecordsMapper;
|
|
@Resource
|
|
@Resource
|
|
private CwProjectReportMapper cwProjectReportMapper;
|
|
private CwProjectReportMapper cwProjectReportMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private RestTemplate restTemplate;
|
|
|
|
|
|
|
|
|
|
// @Resource
|
|
// @Resource
|
|
@@ -532,8 +543,94 @@ public class CwFinanceInvoiceService extends ServiceImpl<CwFinanceInvoiceMapper,
|
|
cwFinanceInvoiceInvalidMapper.insert(cwFinanceInvoiceInvalid);
|
|
cwFinanceInvoiceInvalidMapper.insert(cwFinanceInvoiceInvalid);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //新增时将数据同步到ccpm系统中
|
|
|
|
+ cwFinanceInvoiceDTO.setId(cwFinanceInvoice.getId());
|
|
|
|
+ cwFinanceInvoiceDTO.setNo(cwFinanceInvoice.getNo());
|
|
|
|
+ tractToCcpm(cwFinanceInvoiceDTO);
|
|
|
|
+
|
|
return cwFinanceInvoice;
|
|
return cwFinanceInvoice;
|
|
}
|
|
}
|
|
|
|
+ private ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
+ /**
|
|
|
|
+ * 同步数据到ccpm
|
|
|
|
+ * @param dto
|
|
|
|
+ */
|
|
|
|
+ private void tractToCcpm(CwFinanceInvoiceDTO dto) throws JsonProcessingException {
|
|
|
|
+ CwFinanceInvoiceDTO cwFinanceInvoiceDTO = cwFinanceInvoiceMapper.queryByIdNew(dto.getId());
|
|
|
|
+ if (cwFinanceInvoiceDTO != null){
|
|
|
|
+ dto.setCreateByName(cwFinanceInvoiceDTO.getCreateByName());
|
|
|
|
+ dto.setCreateTime(cwFinanceInvoiceDTO.getCreateTime());
|
|
|
|
+ dto.setReconciliationAreaName(cwFinanceInvoiceDTO.getReconciliationAreaName());
|
|
|
|
+ dto.setReconciliationPeopleName(cwFinanceInvoiceDTO.getReconciliationPeopleName());
|
|
|
|
+ dto.setBillingPeopleRealName(cwFinanceInvoiceDTO.getBillingPeopleRealName());
|
|
|
|
+ dto.setBillingPeople(cwFinanceInvoiceDTO.getBillingPeople());
|
|
|
|
+ dto.setBillingDate(cwFinanceInvoiceDTO.getBillingDate());
|
|
|
|
+ dto.setFinanceInvoiceDetailDTOList(cwFinanceInvoiceDTO.getFinanceInvoiceDetailDTOList());
|
|
|
|
+ dto.setFinanceInvoiceBaseDTOList(cwFinanceInvoiceDTO.getFinanceInvoiceBaseDTOList());
|
|
|
|
+ dto.setWorkAttachmentDtoList(cwFinanceInvoiceDTO.getWorkAttachmentDtoList());
|
|
|
|
+ dto.setCollectDate(cwFinanceInvoiceDTO.getCollectDate());
|
|
|
|
+ String label = SpringUtil.getBean(IDictApi.class).getDictLabel(cwFinanceInvoiceDTO.getReceivablesType(), "invoice_receivables_type", "");
|
|
|
|
+ dto.setReceivablesTypeLabel(label);
|
|
|
|
+ String contentLabel = SpringUtil.getBean(IDictApi.class).getDictLabel(cwFinanceInvoiceDTO.getBillingContent(), "invoice_billing_content", "");
|
|
|
|
+ dto.setBillingContentLabel(contentLabel);
|
|
|
|
+ // 电话号获取
|
|
|
|
+ if (ObjectUtil.isNotEmpty(cwFinanceInvoiceDTO) && StringUtils.isNotBlank(cwFinanceInvoiceDTO.getBillingId())) {
|
|
|
|
+ CwWorkClientBilling cwWorkClientBilling = cwWorkClientBillingService.getById(cwFinanceInvoiceDTO.getBillingId());
|
|
|
|
+ if (ObjectUtil.isNotEmpty(cwWorkClientBilling) && StringUtils.isNotBlank(cwWorkClientBilling.getPhone())) {
|
|
|
|
+ // 如果通过billingId(开票信息id)可以查询到数据,并且数据的phone(电话)有值的话,那么就将方法返回结果的telPhone替换为查询到的phone
|
|
|
|
+ dto.setTelPhone(cwWorkClientBilling.getPhone());
|
|
|
|
+ } else {
|
|
|
|
+ // 如果通过billingId(开票信息id)查询不到数据或者查询到数据的phone值为空
|
|
|
|
+ // 将billingId(开票信息id)置空,因为前端根据billingId是否有值来判断->是否允许电话号码可以手填
|
|
|
|
+ dto.setBillingId("");
|
|
|
|
+ // 将telPhone(电话号)置空
|
|
|
|
+// cwFinanceInvoiceDTO.setTelPhone("");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 实际开票单位名称获取
|
|
|
|
+ if (ObjectUtil.isNotEmpty(cwFinanceInvoiceDTO) && StringUtils.isNotBlank(cwFinanceInvoiceDTO.getBillingWorkplaceRealId())) {
|
|
|
|
+ CwWorkClientBase cwWorkClientBase = cwWorkClientService.getById(cwFinanceInvoiceDTO.getBillingWorkplaceRealId());
|
|
|
|
+ if (ObjectUtil.isNotEmpty(cwWorkClientBase) && StringUtils.isNotBlank(cwWorkClientBase.getName())) {
|
|
|
|
+ // 如果通过billingWorkplaceRealId(实际开票单位id)可以查询到数据,并且数据的name(实际开票单位名称)有值的话,
|
|
|
|
+ // 那么就将方法返回结果的billingWorkplaceReal替换
|
|
|
|
+ dto.setBillingWorkplaceReal(cwWorkClientBase.getName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+// WorkInvoiceVo workInvoiceVo = transformInfo(dto);
|
|
|
|
+ String json = objectMapper.writeValueAsString(dto);
|
|
|
|
+ String path = Global.getConfig("CCPM_PATH");
|
|
|
|
+ String url = path+"/a/cpa_finance/saveInfo";
|
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
|
+ headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
+ HttpEntity<String> httpEntity = new HttpEntity<>(json, headers);
|
|
|
|
+ try {
|
|
|
|
+ restTemplate.exchange(url, HttpMethod.POST,httpEntity,String.class);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ // 记录错误日志或进行其他处理
|
|
|
|
+ System.err.println("Error sending project info to cloud: " + e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private static Double parseDouble(String value) {
|
|
|
|
+ if (value == null || value.isEmpty()) {
|
|
|
|
+ return null; // 如果值为 null 或为空,返回 null
|
|
|
|
+ }
|
|
|
|
+ try {
|
|
|
|
+ return Double.parseDouble(value);
|
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
|
+ return null; // 如果解析失败,返回 null
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static String checkString(String value) {
|
|
|
|
+ return (value == null || value.isEmpty()) ? null : value; // 如果字符串为空,返回 null
|
|
|
|
+ }
|
|
|
|
|
|
public ResponseEntity saveInvoice(CwFinanceInvoiceDTO cwFinanceInvoiceDTO) throws Exception{
|
|
public ResponseEntity saveInvoice(CwFinanceInvoiceDTO cwFinanceInvoiceDTO) throws Exception{
|
|
this.saveForm(cwFinanceInvoiceDTO);
|
|
this.saveForm(cwFinanceInvoiceDTO);
|