|
@@ -1,7 +1,11 @@
|
|
|
package com.usoftchina.saas.sale.service.impl;
|
|
package com.usoftchina.saas.sale.service.impl;
|
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
import com.github.pagehelper.PageInfo;
|
|
|
|
|
+import com.usoftchina.saas.commons.po.*;
|
|
|
|
|
+import com.usoftchina.saas.document.dto.CustomerDTO;
|
|
|
|
|
+import com.usoftchina.saas.document.dto.ProductDTO;
|
|
|
import com.usoftchina.saas.inquiry.api.InquiryApi;
|
|
import com.usoftchina.saas.inquiry.api.InquiryApi;
|
|
|
import com.usoftchina.saas.inquiry.po.inquiry.*;
|
|
import com.usoftchina.saas.inquiry.po.inquiry.*;
|
|
|
import com.usoftchina.saas.account.api.AccountApi;
|
|
import com.usoftchina.saas.account.api.AccountApi;
|
|
@@ -14,9 +18,6 @@ import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
|
|
|
import com.usoftchina.saas.commons.dto.DocBaseDTO;
|
|
import com.usoftchina.saas.commons.dto.DocBaseDTO;
|
|
|
import com.usoftchina.saas.commons.dto.ListReqDTO;
|
|
import com.usoftchina.saas.commons.dto.ListReqDTO;
|
|
|
import com.usoftchina.saas.commons.exception.BizExceptionCode;
|
|
import com.usoftchina.saas.commons.exception.BizExceptionCode;
|
|
|
-import com.usoftchina.saas.commons.po.BillCodeSeq;
|
|
|
|
|
-import com.usoftchina.saas.commons.po.Operation;
|
|
|
|
|
-import com.usoftchina.saas.commons.po.Status;
|
|
|
|
|
import com.usoftchina.saas.context.BaseContextHolder;
|
|
import com.usoftchina.saas.context.BaseContextHolder;
|
|
|
import com.usoftchina.saas.exception.BizException;
|
|
import com.usoftchina.saas.exception.BizException;
|
|
|
import com.usoftchina.saas.page.PageDefault;
|
|
import com.usoftchina.saas.page.PageDefault;
|
|
@@ -80,6 +81,8 @@ public class SaleServiceImpl implements SaleService{
|
|
|
private AccountApi accountApi;
|
|
private AccountApi accountApi;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private CompanyApi companyApi;
|
|
private CompanyApi companyApi;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private DataImportMapper dataImportMapper;
|
|
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(SaleServiceImpl.class);
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(SaleServiceImpl.class);
|
|
|
|
|
|
|
@@ -675,6 +678,74 @@ public class SaleServiceImpl implements SaleService{
|
|
|
return baseDTO;
|
|
return baseDTO;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional
|
|
|
|
|
+ public void saveToFormal(Long id, boolean update){
|
|
|
|
|
+ if (null == id || "0".equals(id)) {
|
|
|
|
|
+ throw new BizException(BizExceptionCode.NO_DATA);
|
|
|
|
|
+ }
|
|
|
|
|
+ String userName = BaseContextHolder.getUserName();
|
|
|
|
|
+ Long companyId = BaseContextHolder.getCompanyId();
|
|
|
|
|
+ SaleFormDTO saleFormDTO = null;
|
|
|
|
|
+ List<DataImportDetail> details = dataImportMapper.selectDataById(id);
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(details)) {
|
|
|
|
|
+ Map<String, List<DataImportDetail>> datas = CollectionUtils.groupBy(details, DataImportDetail::getDd_codevalue);
|
|
|
|
|
+ int detno = 0;
|
|
|
|
|
+ for (String code : datas.keySet()) {
|
|
|
|
|
+ saleFormDTO = new SaleFormDTO();
|
|
|
|
|
+ List<SaleDetailDTO> saleDetailDTOList = new ArrayList<>();
|
|
|
|
|
+ List<DataImportDetail> data = datas.get(code);
|
|
|
|
|
+ //准备主表数据
|
|
|
|
|
+ DataImportDetail main = dataImportMapper.selectMainBycode(code, id.intValue(), companyId);
|
|
|
|
|
+ if (StringUtils.isEmpty(main)){
|
|
|
|
|
+ throw new BizException(BizExceptionCode.BIZ_REPORT_NOTCORRECT);
|
|
|
|
|
+ }
|
|
|
|
|
+ SaleDTO saleDTO = JSONObject.parseObject(main.getDd_maindata(), SaleDTO.class);
|
|
|
|
|
+ CustomerDTO customerDTO = saleMapper.selectCustByCustCode(saleDTO.getSa_custcode(), companyId);
|
|
|
|
|
+ if (ObjectUtils.isEmpty(customerDTO)) {
|
|
|
|
|
+ throw new BizException(BizExceptionCode.BIZ_CUSTOMER_CODE_NOT_EXISTS.getCode(),
|
|
|
|
|
+ String.format(BizExceptionCode.BIZ_CUSTOMER_CODE_NOT_EXISTS.getMessage(), saleDTO.getSa_custname() + "(" + saleDTO.getSa_custcode() + ")"));
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!customerDTO.getCu_name().equals(saleDTO.getSa_custname())) {
|
|
|
|
|
+ throw new BizException(79360, "客户编号" + saleDTO.getSa_custcode() + "客户名称" + saleDTO.getSa_custname() + "匹配错误");
|
|
|
|
|
+ }
|
|
|
|
|
+ saleDTO.setSa_custid(customerDTO.getId().intValue());
|
|
|
|
|
+ saleDTO.setId(0L);
|
|
|
|
|
+ saleDTO.setCreateTime(new Date());
|
|
|
|
|
+ saleDTO.setCreatorName(userName);
|
|
|
|
|
+ saleDTO.setSa_date(new Date());
|
|
|
|
|
+ saleDTO.setSa_status(Status.UNAUDITED.getDisplay());
|
|
|
|
|
+ saleDTO.setSa_statuscode(Status.UNAUDITED.name());
|
|
|
|
|
+
|
|
|
|
|
+ saleFormDTO.setMain(saleDTO);
|
|
|
|
|
+ //准备从表数据
|
|
|
|
|
+ if (data.size() > 0) {
|
|
|
|
|
+ detno = 1;
|
|
|
|
|
+ for (DataImportDetail detail : data) {
|
|
|
|
|
+ SaleDetailDTO saleDetailDTO = JSONObject.parseObject(detail.getDd_detaildata(), SaleDetailDTO.class);
|
|
|
|
|
+ //校验明细物料
|
|
|
|
|
+ ProductDTO productDTO = saleMapper.selectProductByCode(saleDetailDTO.getSd_prodcode(), companyId);
|
|
|
|
|
+ if (ObjectUtils.isEmpty(productDTO)) {
|
|
|
|
|
+ throw new BizException(79360, "物料" + saleDetailDTO.getSd_prodcode() + "不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ saleDetailDTO.setSd_prodid(productDTO.getId());
|
|
|
|
|
+ saleDetailDTO.setSd_detno(detno++);
|
|
|
|
|
+ saleDetailDTO.setId(0L);
|
|
|
|
|
+ saleDetailDTO.setSd_price(saleDetailDTO.getSd_netprice() * (100 + saleDetailDTO.getSd_taxrate()) / 100);
|
|
|
|
|
+ saleDetailDTO.setSd_nettotal(saleDetailDTO.getSd_netprice() * saleDetailDTO.getSd_qty());
|
|
|
|
|
+ saleDetailDTO.setSd_total(saleDetailDTO.getSd_price() * saleDetailDTO.getSd_qty());
|
|
|
|
|
+
|
|
|
|
|
+ saleDetailDTOList.add(saleDetailDTO);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ saleFormDTO.setItems(saleDetailDTOList);
|
|
|
|
|
+ //保存
|
|
|
|
|
+ saleFormDTO.setCodeModified(true);
|
|
|
|
|
+ saveFormData(saleFormDTO);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 获取企业商机
|
|
* 获取企业商机
|
|
|
* @param remindReqDTO
|
|
* @param remindReqDTO
|