Commit 649d4716 authored by neo.wang's avatar neo.wang

Merge branch 'dev_neo' into 'dev'

Dev neo

See merge request root/atms!79
parents 1b005937 703733d3
package pwc.taxtech.atms.common.util; package pwc.taxtech.atms.common.util;
import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.exception.ApiException; import pwc.taxtech.atms.exception.ApiException;
import pwc.taxtech.atms.exception.FormulaException; import pwc.taxtech.atms.exception.FormulaException;
......
package pwc.taxtech.atms.constant;
public class DataImport {
public static final String DuplicateInputInvoices = "DuplicateInputInvoice";
public static final String InputInvoiceAlreadyPassed = "InputInvoiceAlreadyPassed";
public static final String NotHaveTotalInvoice = "NotHaveTotalInvoice";
public static final String LessThanDetailsTotal = "LessThanDetailsTotal";
public static final String DuplicateInDB = "DuplicateInDB";
public static final String DuplicateInFile = "DuplicateInFile";
public static final String EmptyField = "EmptyField";
public static final String OverLengthField = "OverLengthField";
}
...@@ -6,6 +6,8 @@ public class VatErpImportValidation { ...@@ -6,6 +6,8 @@ public class VatErpImportValidation {
public static final String BalanceTb = "Balance"; public static final String BalanceTb = "Balance";
public static final String AccountRemapTb = "AccountRemap"; public static final String AccountRemapTb = "AccountRemap";
public static final String VoucherTbName = "Voucher"; public static final String VoucherTbName = "Voucher";
public static final String ImportMethod_OneClick = "oneClick";
public static final String ImportMethod_Universal = "universal";
public static final String Const_ComBalanceAcctValidate = "试算平衡表科目存在于企业科目列表中"; public static final String Const_ComBalanceAcctValidate = "试算平衡表科目存在于企业科目列表中";
public static final String Const_ComBalanceAcctUnValidate = "试算平衡表中出现的科目不在科目表中"; public static final String Const_ComBalanceAcctUnValidate = "试算平衡表中出现的科目不在科目表中";
......
package pwc.taxtech.atms.constant.enums;
public enum ImportType {
Override(0),
Append(1);
private Integer code;
ImportType(Integer code) {
this.code = code;
}
public Integer getCode() {
return code;
}
}
...@@ -257,9 +257,8 @@ public class CustomsInvoiceController { ...@@ -257,9 +257,8 @@ public class CustomsInvoiceController {
} }
@RequestMapping(value = "ImportCustomsInvoice", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @RequestMapping(value = "ImportCustomsInvoice", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity ImportBalanceList(@RequestBody ImportCustomsInvoiceDto importDto) public ResponseEntity ImportBalanceList(@RequestBody ImportCustomsInvoiceDto importDto) {
{
String userId = identityService.getIdentityUser().getID(); String userId = identityService.getIdentityUser().getID();
return ResponseEntity.ok(customsInvoiceService.ImportCustomsInvoice(importDto.CustomsList, importDto.ImportType,userId)); return ResponseEntity.ok(customsInvoiceService.ImportCustomsInvoice(importDto.CustomsList, importDto.ImportType, userId));
} }
} }
package pwc.taxtech.atms.dto.vatdto; package pwc.taxtech.atms.dto.vatdto;
import pwc.taxtech.atms.vat.entity.CustomsInvoice;
import java.util.List; import java.util.List;
public class ImportCustomsInvoiceDto { public class ImportCustomsInvoiceDto {
public List<CustomsInvoiceDto> CustomsList; public List<CustomsInvoice> CustomsList;
public int ImportType; public int ImportType;
} }
package pwc.taxtech.atms.dto.vatdto;
public class ImportDataDto {
public Boolean Result ;
public String Guid ;
public Integer Number ;
public String FileExtension ;
public String FileName ;
public String ErrorMsg ;
}
package pwc.taxtech.atms.dto.vatdto; package pwc.taxtech.atms.dto.vatdto;
import pwc.taxtech.atms.vat.entity.InvoiceMapping;
import java.util.Date; import java.util.Date;
public class InvoiceMappingDto { public class InvoiceMappingDto {
public String ID ; public String ID;
public String TranCode ; public String TranCode;
public String InvoiceCode ; public String InvoiceCode;
public String InvoiceNumber ; public String InvoiceNumber;
public Integer Period ; public Integer Period;
public String CreatorID ; public String CreatorID;
public Date CreateTime ; public Date CreateTime;
public Boolean IsDuplicate ; public Boolean IsDuplicate;
public InvoiceMapping extractInvoiceMapping() {
InvoiceMapping invoiceMapping = new InvoiceMapping();
invoiceMapping.setID(ID);
invoiceMapping.setTranCode(TranCode);
invoiceMapping.setInvoiceCode(InvoiceCode);
invoiceMapping.setInvoiceNumber(InvoiceNumber);
invoiceMapping.setPeriod(Period);
invoiceMapping.setCreatorID(CreatorID);
invoiceMapping.setCreateTime(CreateTime);
return invoiceMapping;
}
} }
package pwc.taxtech.atms.dto.vatdto; package pwc.taxtech.atms.dto.vatdto;
import pwc.taxtech.atms.vat.entity.Voucher;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -25,4 +27,34 @@ public class VoucherDtoOnlyForImport { ...@@ -25,4 +27,34 @@ public class VoucherDtoOnlyForImport {
public Integer Status; public Integer Status;
public Integer PartBilledPeriod; public Integer PartBilledPeriod;
public Integer BilledPeriod; public Integer BilledPeriod;
public Integer getPeriod() {
return Period;
}
public Voucher extractVoucher(){
Voucher voucher = new Voucher();
voucher.setVoucherID(VoucherID);
voucher.setVID(VID);
voucher.setDate(date);
voucher.setGroup(Group);
voucher.setPeriod(Period);
voucher.setCustomerCode(CustomerCode);
voucher.setCustomerName(CustomerName);
voucher.setSummary(Summary);
voucher.setAcctCode(AcctCode);
voucher.setDebit(Debit);
voucher.setCredit(Credit);
voucher.setAttach(Attach);
voucher.setItemID(ItemID);
voucher.setCreateTime(CreateTime);
voucher.setImportType(ImportType);
voucher.setCreatorID(CreatorID);
voucher.setMonthID(MonthID);
voucher.setOriginalPeriod(OriginalPeriod);
voucher.setStatus(Status);
voucher.setPartBilledPeriod(PartBilledPeriod);
voucher.setBilledPeriod(BilledPeriod);
return voucher;
}
} }
package pwc.taxtech.atms.dto.vatdto; package pwc.taxtech.atms.dto.vatdto;
import pwc.taxtech.atms.vat.entity.VoucherMapping;
import java.util.Date; import java.util.Date;
import java.util.List;
public class VoucherMappingDto { public class VoucherMappingDto {
public String ID; public String ID;
...@@ -12,4 +15,18 @@ public class VoucherMappingDto { ...@@ -12,4 +15,18 @@ public class VoucherMappingDto {
public String CreatorID; public String CreatorID;
public Date CreateTime; public Date CreateTime;
public Boolean IsDuplicate; public Boolean IsDuplicate;
public VoucherMapping extractVoucherMapping(){
VoucherMapping voucherMapping = new VoucherMapping();
voucherMapping.setID(ID);
voucherMapping.setTranCode(TranCode);
voucherMapping.setVID(VID);
voucherMapping.setGroup(Group);
voucherMapping.setPeriod(Period);
voucherMapping.setItemID(ItemID);
voucherMapping.setCreatorID(CreatorID);
voucherMapping.setCreateTime(CreateTime);
return voucherMapping;
}
} }
package pwc.taxtech.atms.vat.service;
import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.vatdto.DataCheckDto;
import java.util.List;
public interface FinanceDataImportService {
OperationResultDto<List<DataCheckDto>> getBasicValidationResults(String userId);
}
...@@ -3,6 +3,7 @@ package pwc.taxtech.atms.vat.service.impl; ...@@ -3,6 +3,7 @@ package pwc.taxtech.atms.vat.service.impl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import pwc.taxtech.atms.common.CommonUtils; import pwc.taxtech.atms.common.CommonUtils;
import pwc.taxtech.atms.constant.enums.EnumTbImportType;
import pwc.taxtech.atms.constant.enums.EnumValidationType; import pwc.taxtech.atms.constant.enums.EnumValidationType;
import pwc.taxtech.atms.dto.FieldsMapper; import pwc.taxtech.atms.dto.FieldsMapper;
import pwc.taxtech.atms.dto.OperationResultDto; import pwc.taxtech.atms.dto.OperationResultDto;
...@@ -99,7 +100,25 @@ public class CustomsInvoiceServiceImpl extends VatAbstractService { ...@@ -99,7 +100,25 @@ public class CustomsInvoiceServiceImpl extends VatAbstractService {
return resultOpt; return resultOpt;
} }
public OperationResultDto ImportCustomsInvoice(List<CustomsInvoiceDto> customsList, int importType, String userId) { public OperationResultDto ImportCustomsInvoice(List<CustomsInvoice> custList, int importType, String userId) {
return null; try {
int periodId = 0;
if (importType == EnumTbImportType.CoverImport.getCode()) {
periodId = custList.get(0).getPeriodId().intValue();
CustomsInvoiceExample example = new CustomsInvoiceExample();
example.createCriteria().andPeriodIdEqualTo(periodId);
customsInvoiceMapper.deleteByExample(example);
}
custList.forEach(c -> {
c.setCreatorID(userId);
});
custList.forEach(m -> customsInvoiceMapper.insert(m));
// UpdateCustomsInvoiceValidation(userId, periodId);//todo:[validation] to be continue (neo)
return new OperationResultDto(true, "");
} catch (Exception ex) {
return new OperationResultDto(false, ex.getMessage());
}
} }
} }
...@@ -124,6 +124,7 @@ public class FileUploadAdapter { ...@@ -124,6 +124,7 @@ public class FileUploadAdapter {
} }
private FileParamBean getQueryStringParameters(MultipartHttpServletRequest request) { private FileParamBean getQueryStringParameters(MultipartHttpServletRequest request) {
FileParamBean param = new FileParamBean(); FileParamBean param = new FileParamBean();
param.fileName = request.getParameter(FILE_NAME); param.fileName = request.getParameter(FILE_NAME);
......
package pwc.taxtech.atms.vat.service.impl; package pwc.taxtech.atms.vat.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.SqlSessionTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import pwc.taxtech.atms.constant.VatErpImportValidation; import pwc.taxtech.atms.constant.VatErpImportValidation;
import pwc.taxtech.atms.constant.enums.EnumValidationType;
import pwc.taxtech.atms.constant.enums.ErpCheckType; import pwc.taxtech.atms.constant.enums.ErpCheckType;
import pwc.taxtech.atms.constant.enums.ImageType; import pwc.taxtech.atms.constant.enums.ImageType;
import pwc.taxtech.atms.dto.FieldsMapper; import pwc.taxtech.atms.dto.FieldsMapper;
import pwc.taxtech.atms.dto.OperationResultDto; import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.vatdto.DataCheckDto; import pwc.taxtech.atms.dto.vatdto.DataCheckDto;
import pwc.taxtech.atms.dto.vatdto.ImportDataDto;
import pwc.taxtech.atms.dto.vatdto.VoucherAccountMto; import pwc.taxtech.atms.dto.vatdto.VoucherAccountMto;
import pwc.taxtech.atms.dto.vatdto.VoucherBalanceDto; import pwc.taxtech.atms.dto.vatdto.VoucherBalanceDto;
import pwc.taxtech.atms.dto.vatdto.VoucherDto; import pwc.taxtech.atms.dto.vatdto.VoucherDto;
...@@ -18,14 +27,16 @@ import pwc.taxtech.atms.vat.entity.ValidationInfo; ...@@ -18,14 +27,16 @@ import pwc.taxtech.atms.vat.entity.ValidationInfo;
import pwc.taxtech.atms.vat.entity.ValidationInfoExample; import pwc.taxtech.atms.vat.entity.ValidationInfoExample;
import pwc.taxtech.atms.vat.entity.Voucher; import pwc.taxtech.atms.vat.entity.Voucher;
import pwc.taxtech.atms.vat.entity.VoucherExample; import pwc.taxtech.atms.vat.entity.VoucherExample;
import pwc.taxtech.atms.vat.service.FinanceDataImportService;
import sun.misc.BASE64Encoder; import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.sound.sampled.DataLine;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.StringReader;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
...@@ -41,13 +52,15 @@ import static pwc.taxtech.atms.constant.enums.EnumValidationType.ErpBasicCheck; ...@@ -41,13 +52,15 @@ import static pwc.taxtech.atms.constant.enums.EnumValidationType.ErpBasicCheck;
import static pwc.taxtech.atms.constant.enums.ImageType.Alert; import static pwc.taxtech.atms.constant.enums.ImageType.Alert;
@Service @Service
public class FinanceDataImportServiceImpl implements FinanceDataImportService { public class FinanceDataImportServiceImpl {
@Autowired @Autowired
private ValidationInfoMapper validationInfoMapper; private ValidationInfoMapper validationInfoMapper;
@Autowired @Autowired
private VoucherMapper voucherMapper; private VoucherMapper voucherMapper;
@Autowired
private SqlSessionTemplate dynamicSqlSessionTemplate;
private Logger logger = LoggerFactory.getLogger(FinanceDataImportServiceImpl.class);
@Override
public OperationResultDto<List<DataCheckDto>> getBasicValidationResults(String userId) { public OperationResultDto<List<DataCheckDto>> getBasicValidationResults(String userId) {
Integer number = 1; Integer number = 1;
List<DataCheckDto> results = new ArrayList<>(); List<DataCheckDto> results = new ArrayList<>();
...@@ -324,4 +337,105 @@ public class FinanceDataImportServiceImpl implements FinanceDataImportService { ...@@ -324,4 +337,105 @@ public class FinanceDataImportServiceImpl implements FinanceDataImportService {
private List<ValidationInfo> getValidationData(Integer typeId) { private List<ValidationInfo> getValidationData(Integer typeId) {
return getValidationData(typeId, null); return getValidationData(typeId, null);
} }
public Boolean ClearTable(int period, Boolean isClearCustTb) {
if (isClearCustTb == null) isClearCustTb = true;
ClearCustTable(period, VatErpImportValidation.CompanyBalanceTbName);
if (isClearCustTb) {
ClearCustTable(period, VatErpImportValidation.CustBalanceTb);
}
ClearCustTable(period, VatErpImportValidation.BalanceTb);
ClearVoucherTable(period);
ClearRemapTable(period);
return true;
}
private void ClearVoucherTable(int period) {
String command = IsImportByPeriod(period)
? "DELETE FROM " + VatErpImportValidation.VoucherTbName + " WHERE Period = " + period
: "TRUNCATE TABLE " + VatErpImportValidation.VoucherTbName;
exeCommand(command);
}
private boolean IsImportByPeriod(int period) {
return period >= 0;
}
private void ClearRemapTable(int period) {
String command = IsImportByPeriod(period)
? "DELETE FROM " + VatErpImportValidation.AccountRemapTb + " WHERE Period = " + period
: "TRUNCATE TABLE " + VatErpImportValidation.AccountRemapTb;
exeCommand(command);
}
private void ClearCustTable(int period, String tbName) {
String command = "";
if (IsImportByPeriod(period) && tbName != VatErpImportValidation.BalanceTb) {
if (tbName == VatErpImportValidation.CompanyBalanceTbName) {
command = String.format("DELETE FROM %s WHERE PeriodId = %s", tbName, period);
}
if (tbName == VatErpImportValidation.CustBalanceTb) {
command = String.format("DELETE FROM %s WHERE PeriodId >= %s", tbName, period);
}
} else {
command = "TRUNCATE TABLE " + tbName;
}
exeCommand(command);
}
private void exeCommand(String command) {
try (SqlSession sqlSession = dynamicSqlSessionTemplate.getSqlSessionFactory().openSession();) {
ScriptRunner scriptRunner = new ScriptRunner(sqlSession.getConnection());
scriptRunner.setAutoCommit(true);
scriptRunner.runScript(new StringReader(command));
}
}
public void DeleteErpValidation() {
List<Integer> deleteTypes = Lists.<Integer>newArrayList(EnumValidationType.ErpBasicCheck.getCode(),
EnumValidationType.ErpCorrect.getCode(),
EnumValidationType.ErpDuplicate.getCode());
ValidationInfoExample example = new ValidationInfoExample();
example.createCriteria().andImportTypeIdIn(deleteTypes);
validationInfoMapper.deleteByExample(example);
}
public ImportDataDto ImportData(String projectYear, String importMethod, String importType, Integer period,
String fileFullPath, MultipartFile f, String schemaPath, String userId) {
logger.info("开始导入数据: importMethod: {0}, importType: {1}", importMethod, importType);
ImportDataDto importResult = new ImportDataDto();
String ZipFileFolder = "";
try {
if (importMethod == VatErpImportValidation.ImportMethod_OneClick) {
// UnZipDataFile(fileFullPath, schemaPath);//todo: import data tobe continue(neo)
// ImportBalance(ZipFileFolder, period);
// ImportVoucher(ZipFileFolder, period);
}
if (importMethod == VatErpImportValidation.ImportMethod_Universal) {
// UniversalImportData(period, fileFullPath, f.getName(), schemaPath);
}
// SynAccountFromTaxAdmin(period, userId);
importResult.Result = true;
} catch (Exception ex) {
importResult.Result = false;
}
return importResult;
}
public void UpdateCompanyBalanceNullValue() {
String command = "UPDATE CompanyBalance SET BegDebitBal = 0 WHERE BegDebitBal IS NULL"
+ " UPDATE CompanyBalance SET BegCreditBal = 0 WHERE BegCreditBal IS NULL"
+ " UPDATE CompanyBalance SET BegBal = 0 WHERE BegBal IS NULL"
+ " UPDATE CompanyBalance SET EndBal = 0 WHERE EndBal IS NULL"
+ " UPDATE CompanyBalance SET EndDebitBal = 0 WHERE EndDebitBal IS NULL"
+ " UPDATE CompanyBalance SET EndCreditBal = 0 WHERE EndCreditBal IS NULL"
+ " UPDATE CompanyBalance SET DebitBal = 0 WHERE DebitBal IS NULL"
+ " UPDATE CompanyBalance SET CreditBal = 0 WHERE CreditBal IS NULL";
exeCommand(command);
}
} }
package pwc.taxtech.atms.vat.service.impl; package pwc.taxtech.atms.vat.service.impl;
import com.google.common.collect.Lists;
import com.mysql.jdbc.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import pwc.taxtech.atms.common.PagingList;
import pwc.taxtech.atms.constant.Constant;
import pwc.taxtech.atms.constant.DataImport;
import pwc.taxtech.atms.constant.enums.EnumTbImportType;
import pwc.taxtech.atms.constant.enums.EnumValidationType;
import pwc.taxtech.atms.constant.enums.VatImportType; import pwc.taxtech.atms.constant.enums.VatImportType;
import pwc.taxtech.atms.dto.FieldsMapper; import pwc.taxtech.atms.dto.FieldsMapper;
import pwc.taxtech.atms.dto.OperationResultDto; import pwc.taxtech.atms.dto.OperationResultDto;
...@@ -11,13 +18,24 @@ import pwc.taxtech.atms.dto.vatdto.VoucherDto; ...@@ -11,13 +18,24 @@ import pwc.taxtech.atms.dto.vatdto.VoucherDto;
import pwc.taxtech.atms.dto.vatdto.VoucherDtoOnlyForImport; import pwc.taxtech.atms.dto.vatdto.VoucherDtoOnlyForImport;
import pwc.taxtech.atms.vat.dao.JournalEntryImportMapper; import pwc.taxtech.atms.vat.dao.JournalEntryImportMapper;
import pwc.taxtech.atms.vat.dao.ValidationInfoMapper; import pwc.taxtech.atms.vat.dao.ValidationInfoMapper;
import pwc.taxtech.atms.vat.dao.VoucherMapper;
import pwc.taxtech.atms.vat.entity.ValidationInfo; import pwc.taxtech.atms.vat.entity.ValidationInfo;
import pwc.taxtech.atms.vat.entity.ValidationInfoExample; import pwc.taxtech.atms.vat.entity.ValidationInfoExample;
import pwc.taxtech.atms.vat.entity.Voucher; import pwc.taxtech.atms.vat.entity.Voucher;
import pwc.taxtech.atms.vat.entity.VoucherExample;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.function.ToDoubleFunction;
import java.util.function.ToIntFunction;
import java.util.stream.Collectors;
import static pwc.taxtech.atms.constant.Constant.WholeYear; import static pwc.taxtech.atms.constant.Constant.WholeYear;
...@@ -29,6 +47,11 @@ public class JournalEntryImportServiceImpl { ...@@ -29,6 +47,11 @@ public class JournalEntryImportServiceImpl {
@Autowired @Autowired
ValidationInfoMapper validationInfoMapper; ValidationInfoMapper validationInfoMapper;
private final static String _tableName = "Voucher";
private final static String _validationTableName = "ValidationInfo";
@Autowired
private VoucherMapper voucherMapper;
public PagingResultDto<VoucherDto> qeryJournalEntryData(QueryJeDto queryJeDto) { public PagingResultDto<VoucherDto> qeryJournalEntryData(QueryJeDto queryJeDto) {
PagingResultDto<VoucherDto> qResult = new PagingResultDto<VoucherDto>(); PagingResultDto<VoucherDto> qResult = new PagingResultDto<VoucherDto>();
qResult.setPageInfo(queryJeDto.getPageInfo()); qResult.setPageInfo(queryJeDto.getPageInfo());
...@@ -88,25 +111,137 @@ public class JournalEntryImportServiceImpl { ...@@ -88,25 +111,137 @@ public class JournalEntryImportServiceImpl {
if (period.intValue() != WholeYear) if (period.intValue() != WholeYear)
validationInfoExample.createCriteria().andImportTypeIdEqualTo(type).andPeriodIdEqualTo(period); validationInfoExample.createCriteria().andImportTypeIdEqualTo(type).andPeriodIdEqualTo(period);
else validationInfoExample.createCriteria().andImportTypeIdEqualTo(type); else validationInfoExample.createCriteria().andImportTypeIdEqualTo(type);
return validationInfoMapper.selectByExample(validationInfoExample); return validationInfoMapper.selectByExample(validationInfoExample);
} }
public void ImportJournalEntryData(List<VoucherDtoOnlyForImport> voucherList, Integer importType, String id) { public void ImportJournalEntryData(List<VoucherDtoOnlyForImport> journalEntryList, Integer importType, String userID) {
if (journalEntryList.size() > 0) {
Set<Integer> periods = journalEntryList.stream().collect(Collectors.groupingBy(
VoucherDtoOnlyForImport::getPeriod, Collectors.counting())).keySet();
journalEntryList.forEach(m -> {
m.VoucherID = UUID.randomUUID().toString();
m.CreatorID = userID;
m.CreateTime = new Date();
});
if (importType == EnumTbImportType.CoverImport.getCode()) {
periods.forEach(m -> ClearTableData(m, _tableName));
}
journalEntryList.forEach(m -> voucherMapper.insert(m.extractVoucher()));
// ValidateJournalEntryByPeriods(userID);//todo:[validation] to be continue (neo)
}
}
private void ClearTableData(Integer period, String tableName) {
switch (tableName) {
case _tableName:
VoucherExample example = new VoucherExample();
example.createCriteria().andPeriodEqualTo(period).andImportTypeEqualTo(VatImportType.JournalEntry.getCode());
voucherMapper.deleteByExample(period > 0 ? example : null);
break;
case _validationTableName:
ValidationInfoExample example1 = new ValidationInfoExample();
example1.createCriteria().andPeriodIdEqualTo(period).andImportTypeIdEqualTo(EnumValidationType.JournalEntry.getCode());
validationInfoMapper.deleteByExample(period > 0 ? example1 : null);
}
} }
public OperationResultDto<List<OperationResultDto<List<VoucherDtoOnlyForImport>>>> ImportAuditAdjust(List<VoucherDtoOnlyForImport> voucherList, public OperationResultDto<List<OperationResultDto<List<VoucherDtoOnlyForImport>>>> ImportAuditAdjust(List<VoucherDtoOnlyForImport> voucherList,
int period, Integer importType, String id) { int period, Integer importType, String userID) {
return null; OperationResultDto<List<OperationResultDto<List<VoucherDtoOnlyForImport>>>> result = new OperationResultDto<>();
result.setResult(true);
int num = 1;
for (VoucherDtoOnlyForImport v : voucherList) {
v.VoucherID = UUID.randomUUID().toString();
v.VID = String.format("%sNO%s", new SimpleDateFormat("MMddHHmmss").format(new Date()), num);
v.Group = v.VID;
num++;
v.CreatorID = userID;
if (v.CreateTime == null) {
v.date = new Date();
v.CreateTime = v.date;
}
v.ImportType = VatImportType.AuditAdjust.getCode();
}
result.setData(new ArrayList<>());
List<VoucherDtoOnlyForImport> emptyItems = voucherList.stream().filter(dto -> StringUtils.isEmptyOrWhitespaceOnly(dto.AcctCode)
|| dto.Credit == null || dto.Debit == null).collect(Collectors.toList());
if (emptyItems.size() > 0) {
result.setResult(false);
OperationResultDto<List<VoucherDtoOnlyForImport>> rr = new OperationResultDto<>();
rr.setData(emptyItems);
rr.setResult(false);
rr.setResultMsg(DataImport.EmptyField);
result.getData().add(rr);
}
emptyItems = voucherList.stream().filter(dto -> (dto.AcctCode != null && dto.AcctCode.length() > 50)
|| (dto.Summary != null && dto.Summary.length() > 500)).collect(Collectors.toList());
if (emptyItems.size() > 0) {
result.setResult(false);
result.setResult(false);
OperationResultDto<List<VoucherDtoOnlyForImport>> rr = new OperationResultDto<>();
rr.setData(emptyItems);
rr.setResult(false);
rr.setResultMsg(DataImport.OverLengthField);
result.getData().add(rr);
}
if (result.getResult()) {
if (importType == EnumTbImportType.CoverImport.getCode()) {
Set<Integer> perods = voucherList.stream().collect(Collectors.groupingBy(VoucherDtoOnlyForImport::getPeriod,
Collectors.counting())).keySet();
VoucherExample example = new VoucherExample();
example.createCriteria().andPeriodIn(Lists.newArrayList(period)).andImportTypeEqualTo(VatImportType.AuditAdjust.getCode());
voucherMapper.deleteByExample(example);
}
voucherList.forEach(m -> voucherMapper.insert(m.extractVoucher()));
}
return result;
} }
public List<VoucherDto> GetAuditAdjust(int period) { public List<Voucher> GetAuditAdjust(int period) {
return null; VoucherExample example = new VoucherExample();
example.createCriteria().andPeriodEqualTo(period).andImportTypeEqualTo(VatImportType.AuditAdjust.getCode());
List<Voucher> result = voucherMapper.selectByExample(example);
result.stream().sorted(Comparator.comparing(Voucher::getAcctCode));
return result;
} }
public PagingResultDto<VoucherDto> QueryAuditAdjust(QueryJeDto queryDto) { public PagingResultDto<Voucher> QueryAuditAdjust(QueryJeDto queryDto) {
return null; PagingResultDto<Voucher> qRsult = new PagingResultDto<>();
qRsult.setPageInfo(queryDto.getPageInfo());
qRsult.setList(new ArrayList<>());
qRsult.setCalculateData(new Voucher());
VoucherExample example = new VoucherExample();
VoucherExample.Criteria criteria = example.createCriteria();
criteria.andImportTypeEqualTo(VatImportType.AuditAdjust.getCode());
if (queryDto.getPeriodId() > Constant.WholeYear) criteria.andPeriodEqualTo(queryDto.getPeriodId());
List<Voucher> query = voucherMapper.selectByExample(example);
qRsult.getPageInfo().setTotalCount(query.size());
BigDecimal sumDebit = new BigDecimal(0);
BigDecimal sumCredit = new BigDecimal(0);
if (query.size() > 0)
for (Voucher v : query) {
sumDebit = sumDebit.add(v.getDebit());
sumCredit = sumCredit.add(v.getCredit());
}
qRsult.getCalculateData().setDebit(sumDebit);
qRsult.getCalculateData().setCredit(sumCredit);
if(qRsult.getPageInfo().getTotalCount()>0){
PagingList pagingList = new PagingList(query, qRsult.getPageInfo());
qRsult.setList(pagingList.getPagingList());
}
return qRsult;
} }
} }
package pwc.taxtech.atms.vat.service.impl; package pwc.taxtech.atms.vat.service.impl;
import com.mysql.jdbc.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import pwc.taxtech.atms.dao.AreaRegionMapper; import pwc.taxtech.atms.constant.DataImport;
import pwc.taxtech.atms.dto.OperationResultDto; import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.vatdto.InvoiceMappingDto; import pwc.taxtech.atms.dto.vatdto.InvoiceMappingDto;
import pwc.taxtech.atms.dto.vatdto.VoucherMappingDto; import pwc.taxtech.atms.dto.vatdto.VoucherMappingDto;
...@@ -13,8 +14,10 @@ import pwc.taxtech.atms.vat.entity.InvoiceMappingExample; ...@@ -13,8 +14,10 @@ import pwc.taxtech.atms.vat.entity.InvoiceMappingExample;
import pwc.taxtech.atms.vat.entity.VoucherMapping; import pwc.taxtech.atms.vat.entity.VoucherMapping;
import pwc.taxtech.atms.vat.entity.VoucherMappingExample; import pwc.taxtech.atms.vat.entity.VoucherMappingExample;
import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
public class VoucherInvoiceMappingServiceImpl { public class VoucherInvoiceMappingServiceImpl {
...@@ -45,11 +48,100 @@ public class VoucherInvoiceMappingServiceImpl { ...@@ -45,11 +48,100 @@ public class VoucherInvoiceMappingServiceImpl {
public OperationResultDto<List<OperationResultDto<List<VoucherMappingDto>>>> saveVourcherMappings(List<VoucherMappingDto> list, public OperationResultDto<List<OperationResultDto<List<VoucherMappingDto>>>> saveVourcherMappings(List<VoucherMappingDto> list,
int period, boolean isAddition) { int period, boolean isAddition) {
return null; OperationResultDto<List<OperationResultDto<List<VoucherMappingDto>>>> result = new OperationResultDto<>();
result.setResult(true);
result.setData(new ArrayList<OperationResultDto<List<VoucherMappingDto>>>());
List<VoucherMappingDto> emptyItems = list.stream().filter(m ->
StringUtils.isEmptyOrWhitespaceOnly(m.TranCode)
|| StringUtils.isEmptyOrWhitespaceOnly(m.VID)
|| StringUtils.isEmptyOrWhitespaceOnly(m.Group)
|| StringUtils.isEmptyOrWhitespaceOnly(m.ItemID)).collect(Collectors.toList());
if (emptyItems.size() > 0) {
result.setResult(false);
OperationResultDto<List<VoucherMappingDto>> rr = new OperationResultDto<>();
rr.setData(emptyItems);
rr.setResult(false);
rr.setResultMsg(DataImport.EmptyField);
result.getData().add(rr);
}
emptyItems = list.stream().filter(dto ->
dto.TranCode != null && dto.TranCode.length() > 50
|| (dto.VID != null && dto.VID.length() > 50) ||
(dto.Group != null && dto.Group.length() > 50) ||
(dto.ItemID != null && dto.ItemID.length() > 50)
).collect(Collectors.toList());
if (emptyItems.size() > 0) {
result.setResult(false);
OperationResultDto<List<VoucherMappingDto>> rr = new OperationResultDto<>();
rr.setData(emptyItems);
rr.setResult(false);
rr.setResultMsg(DataImport.OverLengthField);
result.getData().add(rr);
}
if (result.getResult()) {
if (!isAddition) {
VoucherMappingExample voucherMappingExample = new VoucherMappingExample();
voucherMappingExample.createCriteria().andPeriodEqualTo(period);
voucherMappingMapper.deleteByExample(voucherMappingExample);
}
list.forEach(m -> voucherMappingMapper.insert(m.extractVoucherMapping()));
}
// ValidDBVoucherMapping(period); todo:[validation] to be continue (neo)
return result;
} }
public OperationResultDto<List<OperationResultDto<List<InvoiceMappingDto>>>> SaveInvoiceMappings(List<InvoiceMappingDto> list, public OperationResultDto<List<OperationResultDto<List<InvoiceMappingDto>>>> SaveInvoiceMappings(List<InvoiceMappingDto> list,
int period, boolean isAddition) { int period, boolean isAddition) {
return null; OperationResultDto<List<OperationResultDto<List<InvoiceMappingDto>>>> result = new OperationResultDto<>();
result.setResult(true);
result.setData(new ArrayList<OperationResultDto<List<InvoiceMappingDto>>>());
List<InvoiceMappingDto> emptyItems = list.stream().filter(m ->
StringUtils.isEmptyOrWhitespaceOnly(m.TranCode)
|| StringUtils.isEmptyOrWhitespaceOnly(m.InvoiceCode)
|| StringUtils.isEmptyOrWhitespaceOnly(m.InvoiceNumber)).collect(Collectors.toList());
if (emptyItems.size() > 0) {
result.setResult(false);
OperationResultDto<List<InvoiceMappingDto>> rr = new OperationResultDto<>();
rr.setData(emptyItems);
rr.setResult(false);
rr.setResultMsg(DataImport.EmptyField);
result.getData().add(rr);
}
emptyItems = list.stream().filter(dto ->
dto.TranCode != null && dto.TranCode.length() > 50
|| (dto.InvoiceCode != null && dto.InvoiceCode.length() > 50) ||
(dto.InvoiceNumber != null && dto.InvoiceNumber.length() > 50)
).collect(Collectors.toList());
if (emptyItems.size() > 0) {
result.setResult(false);
OperationResultDto<List<InvoiceMappingDto>> rr = new OperationResultDto<>();
rr.setData(emptyItems);
rr.setResult(false);
rr.setResultMsg(DataImport.OverLengthField);
result.getData().add(rr);
}
if (result.getResult()) {
if (!isAddition) {
InvoiceMappingExample invoiceMappingExample = new InvoiceMappingExample();
invoiceMappingExample.createCriteria().andPeriodEqualTo(period);
invoiceMappingMapper.deleteByExample(invoiceMappingExample);
}
list.forEach(m -> invoiceMappingMapper.insert(m.extractInvoiceMapping()));
}
// ValidDBInvoiceMapping(period);todo:[validation] to be continue (neo)
return result;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment