Commit 02cb5205 authored by eddie.woo's avatar eddie.woo

Merge branch 'dev_mysql' of http://code.tech.tax.asia.pwcinternal.com/root/atms into dev_mysql

parents 5c41d6eb bf945c3a
...@@ -23,122 +23,122 @@ public class EbsApiController { ...@@ -23,122 +23,122 @@ public class EbsApiController {
@Resource @Resource
private EbsApiService ebsApiService; private EbsApiService ebsApiService;
@RequestMapping(value = "/queryRemoteServerThenUpdateJE", method = RequestMethod.POST) @RequestMapping(value = "/updateJE", method = RequestMethod.POST)
public ApiResultDto queryRemoteServerThenUpdateJE(@RequestBody List<JournalEntryQueryDto> items) { public ApiResultDto updateJE(@RequestBody List<JournalEntryQueryDto> items) {
if (CollectionUtils.isEmpty(items)) { if (CollectionUtils.isEmpty(items)) {
logger.debug("the queryRemoteServerThenUpdateJE return items is empty"); logger.debug("the updateJE return items is empty");
return ApiResultDto.success(Collections.emptyList()); return ApiResultDto.success(Collections.emptyList());
} }
try { try {
ebsApiService.queryRemoteServerThenUpdateJE(items); ebsApiService.queryRemoteServerThenUpdateJE(items);
return ApiResultDto.success(); return ApiResultDto.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("queryRemoteServerThenUpdateJE error.", e); logger.error("updateJE error.", e);
} }
return ApiResultDto.fail(); return ApiResultDto.fail();
} }
@RequestMapping(value = "/queryRemoteServerThenUpdateTB", method = RequestMethod.POST) @RequestMapping(value = "/updateTB", method = RequestMethod.POST)
public ApiResultDto queryRemoteServerThenUpdateTB(@RequestBody List<TrialBalanceQueryDto> items) { public ApiResultDto updateTB(@RequestBody List<TrialBalanceQueryDto> items) {
if (CollectionUtils.isEmpty(items)) { if (CollectionUtils.isEmpty(items)) {
logger.debug("the queryRemoteServerThenUpdateTB return items is empty"); logger.debug("the updateTB return items is empty");
return ApiResultDto.success(Collections.emptyList()); return ApiResultDto.success(Collections.emptyList());
} }
try { try {
ebsApiService.queryRemoteServerThenUpdateTB(items); ebsApiService.queryRemoteServerThenUpdateTB(items);
return ApiResultDto.success(); return ApiResultDto.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("queryRemoteServerThenUpdateTB error.", e); logger.error("updateTB error.", e);
} }
return ApiResultDto.fail(); return ApiResultDto.fail();
} }
@RequestMapping(value = "/queryRemoteServerThenUpdateCF", method = RequestMethod.POST) @RequestMapping(value = "/updateCF", method = RequestMethod.POST)
public ApiResultDto queryRemoteServerThenUpdateCF(@RequestBody List<CashFlowQueryDto> items) { public ApiResultDto updateCF(@RequestBody List<CashFlowQueryDto> items) {
if (CollectionUtils.isEmpty(items)) { if (CollectionUtils.isEmpty(items)) {
logger.debug("the queryRemoteServerThenUpdateCF return items is empty"); logger.debug("the updateCF return items is empty");
return ApiResultDto.success(Collections.emptyList()); return ApiResultDto.success(Collections.emptyList());
} }
try { try {
ebsApiService.queryRemoteServerThenUpdateCF(items); ebsApiService.queryRemoteServerThenUpdateCF(items);
return ApiResultDto.success(); return ApiResultDto.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("queryRemoteServerThenUpdateCF error.", e); logger.error("updateCF error.", e);
} }
return ApiResultDto.fail(); return ApiResultDto.fail();
} }
@RequestMapping(value = "/queryRemoteServerThenUpdateBS", method = RequestMethod.POST) @RequestMapping(value = "/updateBS", method = RequestMethod.POST)
public ApiResultDto queryRemoteServerThenUpdateBS(@RequestBody List<BalanceSheetQueryDto> items) { public ApiResultDto updateBS(@RequestBody List<BalanceSheetQueryDto> items) {
if (CollectionUtils.isEmpty(items)) { if (CollectionUtils.isEmpty(items)) {
logger.debug("the queryRemoteServerThenUpdateBS return items is empty"); logger.debug("the updateBS return items is empty");
return ApiResultDto.success(Collections.emptyList()); return ApiResultDto.success(Collections.emptyList());
} }
try { try {
ebsApiService.queryRemoteServerThenUpdateBS(items); ebsApiService.queryRemoteServerThenUpdateBS(items);
return ApiResultDto.success(); return ApiResultDto.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("queryRemoteServerThenUpdateBS error.", e); logger.error("updateBS error.", e);
} }
return ApiResultDto.fail(); return ApiResultDto.fail();
} }
@RequestMapping(value = "/queryRemoteServerThenUpdatePL", method = RequestMethod.POST) @RequestMapping(value = "/updatePL", method = RequestMethod.POST)
public ApiResultDto queryRemoteServerThenUpdatePL(@RequestBody List<ProfitLossStatementQueryDto> items) { public ApiResultDto updatePL(@RequestBody List<ProfitLossStatementQueryDto> items) {
if (CollectionUtils.isEmpty(items)) { if (CollectionUtils.isEmpty(items)) {
logger.debug("the queryRemoteServerThenUpdatePL return items is empty"); logger.debug("the updatePL return items is empty");
return ApiResultDto.success(Collections.emptyList()); return ApiResultDto.success(Collections.emptyList());
} }
try { try {
ebsApiService.queryRemoteServerThenUpdatePL(items); ebsApiService.queryRemoteServerThenUpdatePL(items);
return ApiResultDto.success(); return ApiResultDto.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("queryRemoteServerThenUpdatePL error.", e); logger.error("updatePL error.", e);
} }
return ApiResultDto.fail(); return ApiResultDto.fail();
} }
@RequestMapping(value = "/queryRemoteServerThenUpdateBSprc", method = RequestMethod.POST) @RequestMapping(value = "/updateBSprc", method = RequestMethod.POST)
public ApiResultDto queryRemoteServerThenUpdateBSprc(@RequestBody List<BalanceSheetPrcQueryDto> items) { public ApiResultDto updateBSprc(@RequestBody List<BalanceSheetPrcQueryDto> items) {
if (CollectionUtils.isEmpty(items)) { if (CollectionUtils.isEmpty(items)) {
logger.debug("the queryRemoteServerThenUpdateBSprc return items is empty"); logger.debug("the updateBSprc return items is empty");
return ApiResultDto.success(Collections.emptyList()); return ApiResultDto.success(Collections.emptyList());
} }
try { try {
ebsApiService.queryRemoteServerThenUpdateBSprc(items); ebsApiService.queryRemoteServerThenUpdateBSprc(items);
return ApiResultDto.success(); return ApiResultDto.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("queryRemoteServerThenUpdateBSprc error.", e); logger.error("updateBSprc error.", e);
} }
return ApiResultDto.fail(); return ApiResultDto.fail();
} }
@RequestMapping(value = "/queryRemoteServerThenUpdatePLprc", method = RequestMethod.POST) @RequestMapping(value = "/updatePLprc", method = RequestMethod.POST)
public ApiResultDto queryRemoteServerThenUpdatePLprc(@RequestBody List<ProfitLossStatementPrcQueryDto> items) { public ApiResultDto updatePLprc(@RequestBody List<ProfitLossStatementPrcQueryDto> items) {
if (CollectionUtils.isEmpty(items)) { if (CollectionUtils.isEmpty(items)) {
logger.debug("the queryRemoteServerThenUpdatePL return items is empty"); logger.debug("the updatePLprc return items is empty");
return ApiResultDto.success(Collections.emptyList()); return ApiResultDto.success(Collections.emptyList());
} }
try { try {
ebsApiService.queryRemoteServerThenUpdatePLprc(items); ebsApiService.queryRemoteServerThenUpdatePLprc(items);
return ApiResultDto.success(); return ApiResultDto.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("queryRemoteServerThenUpdatePLprc error.", e); logger.error("updatePLprc error.", e);
} }
return ApiResultDto.fail(); return ApiResultDto.fail();
} }
@RequestMapping(value = "/queryRemoteServerThenUpdateOAR", method = RequestMethod.POST) @RequestMapping(value = "/updateOAR", method = RequestMethod.POST)
public ApiResultDto queryRemoteServerThenUpdateOAR(@RequestBody List<OrganizationAccountingRateQueryDto> items) { public ApiResultDto updateOAR(@RequestBody List<OrganizationAccountingRateQueryDto> items) {
if (CollectionUtils.isEmpty(items)) { if (CollectionUtils.isEmpty(items)) {
logger.debug("the queryRemoteServerThenUpdateOAR return items is empty"); logger.debug("the updateOAR return items is empty");
return ApiResultDto.success(Collections.emptyList()); return ApiResultDto.success(Collections.emptyList());
} }
try { try {
ebsApiService.queryRemoteServerThenUpdateOAR(items); ebsApiService.queryRemoteServerThenUpdateOAR(items);
return ApiResultDto.success(); return ApiResultDto.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("queryRemoteServerThenUpdateOAR error.", e); logger.error("updateOAR error.", e);
} }
return ApiResultDto.fail(); return ApiResultDto.fail();
} }
......
package pwc.taxtech.atms.controller; package pwc.taxtech.atms.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
...@@ -12,6 +13,7 @@ import pwc.taxtech.atms.constant.enums.EnumServiceType; ...@@ -12,6 +13,7 @@ import pwc.taxtech.atms.constant.enums.EnumServiceType;
import pwc.taxtech.atms.dpo.ReportDto; import pwc.taxtech.atms.dpo.ReportDto;
import pwc.taxtech.atms.dto.FileDto; import pwc.taxtech.atms.dto.FileDto;
import pwc.taxtech.atms.dto.OperationResultDto; import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.ReportAttachDto;
import pwc.taxtech.atms.dto.vatdto.*; import pwc.taxtech.atms.dto.vatdto.*;
import pwc.taxtech.atms.vat.entity.PeriodCellTemplateConfig; import pwc.taxtech.atms.vat.entity.PeriodCellTemplateConfig;
import pwc.taxtech.atms.vat.entity.PeriodJob; import pwc.taxtech.atms.vat.entity.PeriodJob;
...@@ -165,9 +167,15 @@ public class ReportController { ...@@ -165,9 +167,15 @@ public class ReportController {
return operationResultDto; return operationResultDto;
} }
@RequestMapping(value = "loadAttachList", method = RequestMethod.GET) @RequestMapping("loadAttachList")
public List<PwcReportAttach> loadAttachList(Long col, Long row, String templateId){ public List<PwcReportAttach> loadAttachList(@RequestBody ReportAttachDto reportAttachDto){
return reportService.loadAttachList(col, row, templateId); System.out.println("sdsdfsd");
return reportService.loadAttachList(reportAttachDto);
}
@RequestMapping("deleteAttach")
public OperationResultDto deleteAttach(Long id){
return reportService.deleteAttach(id);
} }
......
...@@ -13,6 +13,7 @@ import pwc.taxtech.atms.service.impl.RevenueConfService; ...@@ -13,6 +13,7 @@ import pwc.taxtech.atms.service.impl.RevenueConfService;
import pwc.taxtech.atms.vat.entity.RevenueConfig; import pwc.taxtech.atms.vat.entity.RevenueConfig;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
@RestController @RestController
@RequestMapping(value = "api/v1/revenueConf") @RequestMapping(value = "api/v1/revenueConf")
...@@ -26,6 +27,11 @@ public class RevenueConfController extends BaseController { ...@@ -26,6 +27,11 @@ public class RevenueConfController extends BaseController {
return new CamelPagingResultDto<>(revenueConfService.queryPage(param)); return new CamelPagingResultDto<>(revenueConfService.queryPage(param));
} }
@PostMapping("queryAll")
public List<RevenueConfResult> queryAll(@RequestBody RevenueConfParam param) {
return revenueConfService.queryAll(param);
}
@PostMapping("add") @PostMapping("add")
public ApiResultDto addConf(@RequestBody RevConfAddDto addDto) { public ApiResultDto addConf(@RequestBody RevConfAddDto addDto) {
revenueConfService.addConfig(addDto); revenueConfService.addConfig(addDto);
...@@ -37,5 +43,4 @@ public class RevenueConfController extends BaseController { ...@@ -37,5 +43,4 @@ public class RevenueConfController extends BaseController {
revenueConfService.updateConfig(config); revenueConfService.updateConfig(config);
return ApiResultDto.success(); return ApiResultDto.success();
} }
} }
package pwc.taxtech.atms.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import pwc.taxtech.atms.dto.input.CamelPagingResultDto;
import pwc.taxtech.atms.dto.revenueDetail.RevenueDetailParam;
import pwc.taxtech.atms.dto.revenueDetail.RevenueDetailResult;
import pwc.taxtech.atms.service.impl.RevenueDetailService;
import javax.annotation.Resource;
@RestController
@RequestMapping(value = "api/v1/revenueDetail")
public class RevenueDetailController extends BaseController {
@Resource
private RevenueDetailService revenueDetailService;
@PostMapping("queryPage")
public CamelPagingResultDto<RevenueDetailResult> queryPage(@RequestBody RevenueDetailParam param) {
return new CamelPagingResultDto<>(revenueDetailService.queryPage(param));
}
}
package pwc.taxtech.atms.dto;
import pwc.taxtech.atms.dto.revenuconf.RevenueConfParam;
public class ReportAttachDto extends RevenueConfParam {
private Long activeCol;
private Long activeRow;
private String activeTemplateId;
public Long getActiveCol() {
return activeCol;
}
public void setActiveCol(Long activeCol) {
this.activeCol = activeCol;
}
public Long getActiveRow() {
return activeRow;
}
public void setActiveRow(Long activeRow) {
this.activeRow = activeRow;
}
public String getActiveTemplateId() {
return activeTemplateId;
}
public void setActiveTemplateId(String activeTemplateId) {
this.activeTemplateId = activeTemplateId;
}
@Override
public String toString() {
return "ReportAttachDto{" +
"activeCol=" + activeCol +
", activeRow=" + activeRow +
", activeTemplateId='" + activeTemplateId + '\'' +
'}';
}
}
package pwc.taxtech.atms.dto.revenueDetail;
import pwc.taxtech.atms.dto.input.CamelPagingDto;
import java.io.Serializable;
public class RevenueDetailParam implements Serializable {
private static final long serialVersionUID = 6544829900689477447L;
private CamelPagingDto pageInfo;
private String accountCode;
private String accountName;
private String type;
private String profitCenterCode;
private String profitCenterName;
private Integer taxOn;
private String productCode;
private String productName;
private Integer category;
private String projectId;
private Integer period;
private String queryDate;
public String getQueryDate() {
return queryDate;
}
public void setQueryDate(String queryDate) {
this.queryDate = queryDate;
}
public String getAccountCode() {
return accountCode;
}
public void setAccountCode(String accountCode) {
this.accountCode = accountCode;
}
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getProfitCenterCode() {
return profitCenterCode;
}
public void setProfitCenterCode(String profitCenterCode) {
this.profitCenterCode = profitCenterCode;
}
public String getProfitCenterName() {
return profitCenterName;
}
public void setProfitCenterName(String profitCenterName) {
this.profitCenterName = profitCenterName;
}
public Integer getTaxOn() {
return taxOn;
}
public void setTaxOn(Integer taxOn) {
this.taxOn = taxOn;
}
public String getProductCode() {
return productCode;
}
public void setProductCode(String productCode) {
this.productCode = productCode;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public Integer getCategory() {
return category;
}
public void setCategory(Integer category) {
this.category = category;
}
public String getProjectId() {
return projectId;
}
public void setProjectId(String projectId) {
this.projectId = projectId;
}
public Integer getPeriod() {
return period;
}
public void setPeriod(Integer period) {
this.period = period;
}
public CamelPagingDto getPageInfo() {
return this.pageInfo;
}
public void setPageInfo(CamelPagingDto pageInfo) {
this.pageInfo = pageInfo;
}
}
package pwc.taxtech.atms.dto.revenueDetail;
import java.io.Serializable;
import java.math.BigDecimal;
public class RevenueDetailResult implements Serializable {
private static final long serialVersionUID = 8385521700489579616L;
private String subject;
private String account;
private String profitCenter;
private String product;
private String subjectExplain;
private String accountExplain;
private String profitCenterExplain;
private String productExplain;
private BigDecimal amount;
private String type;
private String category;
private String taxOn;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getProfitCenter() {
return profitCenter;
}
public void setProfitCenter(String profitCenter) {
this.profitCenter = profitCenter;
}
public String getProduct() {
return product;
}
public void setProduct(String product) {
this.product = product;
}
public String getSubjectExplain() {
return subjectExplain;
}
public void setSubjectExplain(String subjectExplain) {
this.subjectExplain = subjectExplain;
}
public String getAccountExplain() {
return accountExplain;
}
public void setAccountExplain(String accountExplain) {
this.accountExplain = accountExplain;
}
public String getProfitCenterExplain() {
return profitCenterExplain;
}
public void setProfitCenterExplain(String profitCenterExplain) {
this.profitCenterExplain = profitCenterExplain;
}
public String getProductExplain() {
return productExplain;
}
public void setProductExplain(String productExplain) {
this.productExplain = productExplain;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getTaxOn() {
return taxOn;
}
public void setTaxOn(String taxOn) {
this.taxOn = taxOn;
}
}
...@@ -22,7 +22,7 @@ public class WrapPeriodJobDto { ...@@ -22,7 +22,7 @@ public class WrapPeriodJobDto {
public static final String STEP_UPDATE_CONFIG = "UpdateConfig"; public static final String STEP_UPDATE_CONFIG = "UpdateConfig";
public static PeriodJob createReportGenJob(String projectId, Integer period, List<Template> templates) { public static PeriodJob createReportGenJob(String projectId, Integer period, List<Template> templates,List<String> dataValidateArray) {
MyAsserts.assertNotEmpty(templates, Exceptions.NOT_FOUND_TEMPLATE_EXCEPTION); MyAsserts.assertNotEmpty(templates, Exceptions.NOT_FOUND_TEMPLATE_EXCEPTION);
PeriodJob job = new PeriodJob(); PeriodJob job = new PeriodJob();
job.setCreateTime(new Date()); job.setCreateTime(new Date());
...@@ -33,10 +33,12 @@ public class WrapPeriodJobDto { ...@@ -33,10 +33,12 @@ public class WrapPeriodJobDto {
job.setCurrentStep(STEP_UPDATE_CONFIG); job.setCurrentStep(STEP_UPDATE_CONFIG);
setStatus(job,STEP_UPDATE_CONFIG,STATUS_BEGIN); setStatus(job,STEP_UPDATE_CONFIG,STATUS_BEGIN);
StringBuilder builder = new StringBuilder(STEP_UPDATE_CONFIG); StringBuilder builder = new StringBuilder(STEP_UPDATE_CONFIG);
dataValidateArray.forEach(m ->{
builder.append(",").append(m);
});
templates.forEach(m -> { templates.forEach(m -> {
builder.append(",").append(m.getCode()); builder.append(",").append(m.getCode());
}); });
job.setStepsCode(builder.toString()); job.setStepsCode(builder.toString());
return job; return job;
} }
......
...@@ -47,6 +47,12 @@ public class RevenueConfService extends BaseService { ...@@ -47,6 +47,12 @@ public class RevenueConfService extends BaseService {
return pageInfo; return pageInfo;
} }
public List<RevenueConfResult> queryAll(RevenueConfParam param) {
RevenueConfigExample example = new RevenueConfigExample();
example.createCriteria().andOrgIdEqualTo(param.getOrgId()).andStartDateLessThanOrEqualTo(param.getStartDate()).andEndDateGreaterThanOrEqualTo(param.getEndDate());
return revenueConfigMapper.selectByExample(example).stream()
.map( o -> beanUtil.copyProperties(o, new RevenueConfResult())).collect(Collectors.toList());
}
/** /**
* 新增配置 * 新增配置
* *
......
package pwc.taxtech.atms.service.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import pwc.taxtech.atms.dpo.RevenueDetailDto;
import pwc.taxtech.atms.dto.revenueDetail.RevenueDetailParam;
import pwc.taxtech.atms.dto.revenueDetail.RevenueDetailResult;
import pwc.taxtech.atms.vat.dao.TrialBalanceFinalMapper;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class RevenueDetailService extends BaseService {
@Resource
private TrialBalanceFinalMapper trialBalanceFinalMapper;
/**
* @param param
* @return
*/
public PageInfo<RevenueDetailResult> queryPage(RevenueDetailParam param) {
Page page = PageHelper.startPage(param.getPageInfo().getPageIndex(), param.getPageInfo().getPageSize());
List<RevenueDetailDto> dataList = trialBalanceFinalMapper.queryBalanceWithRevenueConfig(param.getAccountCode(), param.getAccountName(), param.getType(), param.getProfitCenterCode(), param.getProfitCenterName(), param.getTaxOn(), param.getProductCode(), param.getProductName(), param.getCategory(), param.getProjectId(), param.getPeriod(), param.getQueryDate());
PageInfo<RevenueDetailResult> pageInfo = new PageInfo<>(dataList.stream()
.map(o -> beanUtil.copyProperties(o, new RevenueDetailResult())).collect(Collectors.toList()));
pageInfo.setTotal(page.getTotal());
return pageInfo;
}
}
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.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
...@@ -23,6 +27,8 @@ import pwc.taxtech.atms.dao.*; ...@@ -23,6 +27,8 @@ import pwc.taxtech.atms.dao.*;
import pwc.taxtech.atms.dpo.ReportDto; import pwc.taxtech.atms.dpo.ReportDto;
import pwc.taxtech.atms.dto.FileDto; import pwc.taxtech.atms.dto.FileDto;
import pwc.taxtech.atms.dto.OperationResultDto; import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.ReportAttachDto;
import pwc.taxtech.atms.dto.revenuconf.RevenueConfResult;
import pwc.taxtech.atms.dto.vatdto.*; import pwc.taxtech.atms.dto.vatdto.*;
import pwc.taxtech.atms.entity.*; import pwc.taxtech.atms.entity.*;
import pwc.taxtech.atms.exception.Exceptions; import pwc.taxtech.atms.exception.Exceptions;
...@@ -273,12 +279,11 @@ public class ReportServiceImpl extends BaseService { ...@@ -273,12 +279,11 @@ public class ReportServiceImpl extends BaseService {
} }
private void updateConfig(String projectId, Integer period, Boolean isMergeManualData, List<Template> templates, PeriodJob job) { private void updateConfig(String projectId, Integer period, Boolean isMergeManualData, List<Template> templates, PeriodJob job) {
setStatus(job, STATUS_BEGIN);
periodJobMapper.updateByPrimaryKey(job);
List<Long> exceptTemplateIds = templateMapper.getIdsForExceptTemplate(); List<Long> exceptTemplateIds = templateMapper.getIdsForExceptTemplate();
clearPeriodData(projectId, period, exceptTemplateIds, isMergeManualData); clearPeriodData(projectId, period, exceptTemplateIds, isMergeManualData);
copyTemplateAndConfigFromAdmin(projectId, templates, period); copyTemplateAndConfigFromAdmin(projectId, templates, period);
setStatus(job, STATUS_END);
periodJobMapper.updateByPrimaryKey(job);
} }
private List<Template> getTemplatesByProjectId(String projectId) { private List<Template> getTemplatesByProjectId(String projectId) {
...@@ -489,13 +494,22 @@ public class ReportServiceImpl extends BaseService { ...@@ -489,13 +494,22 @@ public class ReportServiceImpl extends BaseService {
return operationResultDto; return operationResultDto;
} }
List<Template> templates = getTemplatesByProjectId(projectId); List<Template> templates = getTemplatesByProjectId(projectId);
PeriodJob genJob = WrapPeriodJobDto.createReportGenJob(projectId, periodParam, templates); List<String> dataValidateArray= new ArrayList<String>();
/*dataValidateArray.add("DA001");
dataValidateArray.add("DA002");
dataValidateArray.add("DA003");*/
dataValidateArray.add("DA004");
PeriodJob genJob = WrapPeriodJobDto.createReportGenJob(projectId, periodParam, templates, dataValidateArray);
periodJobMapper.insert(genJob); periodJobMapper.insert(genJob);
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
try { try {
//进行数据校验
DataValidation(periodParam, projectId,genJob );
updateConfig(projectId, periodParam, isMergeManualData, templates, genJob); updateConfig(projectId, periodParam, isMergeManualData, templates, genJob);
PeriodResources resources = reportGenerator.getPeriodResources(projectId, periodParam, PeriodResources resources = reportGenerator.getPeriodResources(projectId, periodParam,
...@@ -519,6 +533,7 @@ public class ReportServiceImpl extends BaseService { ...@@ -519,6 +533,7 @@ public class ReportServiceImpl extends BaseService {
periodJobMapper.updateByPrimaryKey(genJob); periodJobMapper.updateByPrimaryKey(genJob);
} }
} }
}).start(); }).start();
operationResultDto.setData(new PeriodJobDto().copyFromPeriodJob(genJob)); operationResultDto.setData(new PeriodJobDto().copyFromPeriodJob(genJob));
operationResultDto.setResult(true); operationResultDto.setResult(true);
...@@ -528,6 +543,67 @@ public class ReportServiceImpl extends BaseService { ...@@ -528,6 +543,67 @@ public class ReportServiceImpl extends BaseService {
} }
return operationResultDto; return operationResultDto;
} }
@Autowired
private TrialBalanceMapper trialBalanceMapper;
@Autowired
private AdjustmentTableMapper adjustmentTableMapper;
@Autowired
private ProfitLossStatementMapper profitLossStatementMapper;
@Autowired
private JournalEntryMapper journalEntryMapper;
/* @Autowired
private CitJour*/
//数据校验
private void DataValidation(Integer periodParam, String projectId, PeriodJob genJob) {
setStatus(genJob,"DA004", STATUS_BEGIN);
//本期余额表
/* TrialBalanceExample trialBalanceExample = new TrialBalanceExample();
TrialBalanceExample.Criteria criteria = trialBalanceExample.createCriteria();
criteria.andProjectIdEqualTo(projectId);
criteria.andPeriodEqualTo(periodParam);
TrialBalance trialBalances = trialBalanceMapper.selectByExample(trialBalanceExample).get(0);
//本期利润表
ProfitLossStatementExample profitLossStatementExample = new ProfitLossStatementExample();
ProfitLossStatementExample.Criteria criteria2 = profitLossStatementExample.createCriteria();
criteria2.andProjectIdEqualTo(projectId);
criteria2.andPeriodEqualTo(periodParam);
ProfitLossStatement profitLossStatements = profitLossStatementMapper.selectByExample(profitLossStatementExample).get(0);*/
//调整表
Map<String, Object> map1 = new HashedMap();
map1.put("projectId", projectId);
map1.put("period", periodParam);
if((periodParam+"").length() == 1){
map1.put("period", "0"+ periodParam);
}else{
map1.put("period", "" + periodParam);
}
List<AdjustmentTable> adjustmentTables = adjustmentTableMapper.selectBeforeAdjustData(map1);
Map<String, Object> map2 = new HashedMap();
map2.put("projectId", projectId);
if((periodParam+"").length() == 1){
map2.put("period", "0"+ periodParam);
}else{
map2.put("period", "" + periodParam);
}
List<JournalEntry> journalEntries = journalEntryMapper.selectNowAdjustData(map2);
for(int i =0; i< adjustmentTables.size(); i++){
for(int j =0; j< journalEntries.size(); j++){
if(journalEntries.get(j).getSegment3().equals(adjustmentTables.get(j).getSegment3()) &&
journalEntries.get(j).getSegment5().equals(adjustmentTables.get(j).getSegment5())&&
journalEntries.get(j).getSegment6().equals(adjustmentTables.get(j).getSegment6()) && journalEntries.get(j).getPeriodJrMinDr() != adjustmentTables.get(j).getPeriodDrMixCr() ){
setStatus(genJob,STATUS_ERROR );
}
}
}
setStatus(genJob, STATUS_END);
periodJobMapper.updateByPrimaryKey(genJob);
}
public List<CellTemplateReferenceDto> getTemplateReferences(int period) { public List<CellTemplateReferenceDto> getTemplateReferences(int period) {
return new ArrayList<>(); return new ArrayList<>();
...@@ -1333,17 +1409,37 @@ public class ReportServiceImpl extends BaseService { ...@@ -1333,17 +1409,37 @@ public class ReportServiceImpl extends BaseService {
pwcReportAttach.setUploadUser(file.getUploadUser()); pwcReportAttach.setUploadUser(file.getUploadUser());
pwcReportAttach.setFileUrl(file.getFileUrl()); pwcReportAttach.setFileUrl(file.getFileUrl());
pwcReportAttach.setSize(file.getSize()); pwcReportAttach.setSize(file.getSize());
pwcReportAttach.setRemarks(file.getRemarks());
pwcReportAttachMapper.insert(pwcReportAttach); pwcReportAttachMapper.insert(pwcReportAttach);
System.out.println("==>>>附件绑定成功"); System.out.println("==>>>附件绑定成功");
} }
public List<PwcReportAttach> loadAttachList(Long col, Long row, String templateId) { public List<PwcReportAttach> loadAttachList(ReportAttachDto param) {
PwcReportAttachExample example = new PwcReportAttachExample(); PwcReportAttachExample example = new PwcReportAttachExample();
Page page = PageHelper.startPage(param.getPageInfo().getPageIndex(), param.getPageInfo().getPageSize());
PwcReportAttachExample.Criteria criteria = example.createCriteria(); PwcReportAttachExample.Criteria criteria = example.createCriteria();
criteria.andColEqualTo(col); criteria.andColEqualTo(param.getActiveCol());
criteria.andRowEqualTo(row); criteria.andRowEqualTo(param.getActiveRow());
criteria.andTemplateIdEqualTo(templateId); criteria.andTemplateIdEqualTo(param.getActiveTemplateId());
example.setOrderByClause("create_time DESC"); example.setOrderByClause("create_time DESC");
/* PageInfo<PwcReportAttach> pageInfo = new PageInfo<PwcReportAttach>();
pageInfo.setTotal(page.getTotal());*/
return pwcReportAttachMapper.selectByExample(example); return pwcReportAttachMapper.selectByExample(example);
} }
/**
* 删除附件
* @param id
* @return
*/
public OperationResultDto deleteAttach(Long id) {
PwcReportAttachExample example = new PwcReportAttachExample();
OperationResultDto<Object> objectOperationResultDto = new OperationResultDto<>();
example.createCriteria().andIdEqualTo(id);
int i = pwcReportAttachMapper.deleteByExample(example);
if(i>0){
objectOperationResultDto.setResultMsg("success");
}
return objectOperationResultDto;
}
} }
package pwc.taxtech.atms.dpo;
import java.io.Serializable;
import java.math.BigDecimal;
public class RevenueDetailDto implements Serializable {
private static final long serialVersionUID = 3774022182707357862L;
private String subject;
private String account;
private String profitCenter;
private String product;
private String subjectExplain;
private String accountExplain;
private String profitCenterExplain;
private String productExplain;
private BigDecimal amount;
private String type;
private String category;
private String taxOn;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getProfitCenter() {
return profitCenter;
}
public void setProfitCenter(String profitCenter) {
this.profitCenter = profitCenter;
}
public String getProduct() {
return product;
}
public void setProduct(String product) {
this.product = product;
}
public String getSubjectExplain() {
return subjectExplain;
}
public void setSubjectExplain(String subjectExplain) {
this.subjectExplain = subjectExplain;
}
public String getAccountExplain() {
return accountExplain;
}
public void setAccountExplain(String accountExplain) {
this.accountExplain = accountExplain;
}
public String getProfitCenterExplain() {
return profitCenterExplain;
}
public void setProfitCenterExplain(String profitCenterExplain) {
this.profitCenterExplain = profitCenterExplain;
}
public String getProductExplain() {
return productExplain;
}
public void setProductExplain(String productExplain) {
this.productExplain = productExplain;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getTaxOn() {
return taxOn;
}
public void setTaxOn(String taxOn) {
this.taxOn = taxOn;
}
}
package pwc.taxtech.atms.vat.dao; package pwc.taxtech.atms.vat.dao;
import java.util.List; import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
...@@ -108,4 +110,5 @@ public interface AdjustmentTableMapper extends MyVatMapper { ...@@ -108,4 +110,5 @@ public interface AdjustmentTableMapper extends MyVatMapper {
int insertBatch(List<AdjustmentTable> rlits); int insertBatch(List<AdjustmentTable> rlits);
List<AdjustmentTable> selectBeforeAdjustData(Map<String,Object> map1);
} }
\ No newline at end of file
package pwc.taxtech.atms.vat.dao; package pwc.taxtech.atms.vat.dao;
import java.util.List; import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
...@@ -109,4 +111,5 @@ public interface JournalEntryMapper extends MyVatMapper { ...@@ -109,4 +111,5 @@ public interface JournalEntryMapper extends MyVatMapper {
List<JournalEntry> selectByCondition(@Param("jeCondition")JournalEntryCondition journalEntryCondition); List<JournalEntry> selectByCondition(@Param("jeCondition")JournalEntryCondition journalEntryCondition);
List<JournalEntry> selectNowAdjustData(Map<String,Object> map2);
} }
\ No newline at end of file
package pwc.taxtech.atms.vat.dao; package pwc.taxtech.atms.vat.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
import pwc.taxtech.atms.MyVatMapper; import pwc.taxtech.atms.MyVatMapper;
import pwc.taxtech.atms.dpo.RevenueDetailDto;
import pwc.taxtech.atms.vat.entity.TrialBalanceFinal; import pwc.taxtech.atms.vat.entity.TrialBalanceFinal;
import pwc.taxtech.atms.vat.entity.TrialBalanceFinalExample; import pwc.taxtech.atms.vat.entity.TrialBalanceFinalExample;
import java.util.List;
@Mapper @Mapper
public interface TrialBalanceFinalMapper extends MyVatMapper { public interface TrialBalanceFinalMapper extends MyVatMapper {
/** /**
...@@ -105,4 +107,18 @@ public interface TrialBalanceFinalMapper extends MyVatMapper { ...@@ -105,4 +107,18 @@ public interface TrialBalanceFinalMapper extends MyVatMapper {
* @mbg.generated * @mbg.generated
*/ */
int updateByPrimaryKey(TrialBalanceFinal record); int updateByPrimaryKey(TrialBalanceFinal record);
List<RevenueDetailDto> queryBalanceWithRevenueConfig(
@Param("accountCode") String accountCode,
@Param("accountName") String accountName,
@Param("type") String type,
@Param("profitCenterCode") String profitCenterCode,
@Param("profitCenterName") String profitCenterName,
@Param("taxOn") Integer taxOn,
@Param("productCode") String productCode,
@Param("productName") String productName,
@Param("category") Integer category,
@Param("projectId") String projectId,
@Param("period") Integer period,
@Param("queryDate") String queryDate);
} }
\ No newline at end of file
...@@ -35,6 +35,8 @@ public class AdjustmentTable extends BaseEntity implements Serializable { ...@@ -35,6 +35,8 @@ public class AdjustmentTable extends BaseEntity implements Serializable {
*/ */
private String organizationId; private String organizationId;
/** /**
* Database Column Remarks: * Database Column Remarks:
* 项目ID * 项目ID
...@@ -288,6 +290,14 @@ public class AdjustmentTable extends BaseEntity implements Serializable { ...@@ -288,6 +290,14 @@ public class AdjustmentTable extends BaseEntity implements Serializable {
*/ */
private BigDecimal periodDrBeq; private BigDecimal periodDrBeq;
/**
* 本位币借方发生额-本位币贷方发生额
*/
private BigDecimal periodDrMixCr;
/** /**
* Database Column Remarks: * Database Column Remarks:
* 本位币本期贷方发生额 * 本位币本期贷方发生额
...@@ -496,6 +506,14 @@ public class AdjustmentTable extends BaseEntity implements Serializable { ...@@ -496,6 +506,14 @@ public class AdjustmentTable extends BaseEntity implements Serializable {
return segment3; return segment3;
} }
public BigDecimal getPeriodDrMixCr() {
return periodDrMixCr;
}
public void setPeriodDrMixCr(BigDecimal periodDrMixCr) {
this.periodDrMixCr = periodDrMixCr;
}
/** /**
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method sets the value of the database column adjustment_table.segment3 * This method sets the value of the database column adjustment_table.segment3
......
...@@ -221,6 +221,15 @@ public class JournalEntry extends BaseEntity implements Serializable { ...@@ -221,6 +221,15 @@ public class JournalEntry extends BaseEntity implements Serializable {
* @mbg.generated * @mbg.generated
*/ */
private String voucherNum; private String voucherNum;
private BigDecimal periodJrMinDr;
public BigDecimal getPeriodJrMinDr() {
return periodJrMinDr;
}
public void setPeriodJrMinDr(BigDecimal periodJrMinDr) {
this.periodJrMinDr = periodJrMinDr;
}
/** /**
* Database Column Remarks: * Database Column Remarks:
......
...@@ -666,4 +666,35 @@ ...@@ -666,4 +666,35 @@
order by ${orderByClause} order by ${orderByClause}
</if> </if>
</select> </select>
<select id ="selectBeforeAdjustData" parameterType="java.util.Map" resultType="pwc.taxtech.atms.vat.entity.AdjustmentTable">
SELECT
max(CASE #{period}
WHEN 0 THEN
0
ELSE
(
t.period_dr_beq - t.period_cr_beq
) END )
periodDrMixCr,
max(t.period),
max(t.project_id),
t.segment3,
t.segment5,
t.segment6
FROM
adjustment_table t
WHERE
1 = 1
<if test="projectId!= '' and projectId != null">
and t.project_id = #{projectId}
</if>
<if test="period !=null and period != '' ">
AND substring(t.period, -2) = ${period}
</if>
group by t.segment3, t.segment5, t.segment6
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -1299,4 +1299,25 @@ ...@@ -1299,4 +1299,25 @@
order by ${orderByClause} order by ${orderByClause}
</if> </if>
</select> </select>
<select id ="selectNowAdjustData" parameterType="java.util.Map" resultType="pwc.taxtech.atms.vat.entity.JournalEntry">
SELECT
max(t.entered_dr - t.entered_cr) as periodJrMinDr,
max(t.period),
max(t.project_id),
t.segment3,
t.segment5,
t.segment6
FROM
journal_entry t
where 1 =1 and t.description like '%调表不调账%'
<if test="projectId != null and projectId != '' ">
and t.project_id = #{projectId}
</if>
<if test="period!= null and period != '' ">
and substring(t.period, -2) = ${period}
</if>
group by t.segment3, t.segment5, t.segment6
</select>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pwc.taxtech.atms.vat.dao.TrialBalanceFinalMapper">
<select id="queryBalanceWithRevenueConfig" resultType="pwc.taxtech.atms.dpo.RevenueDetailDto">
select detail.*
from (
select tbf.segment1 as subject,
tbf.segment3 as account,
tbf.segment5 profitCenter,
tbf.segment6 product,
tbf.segment1_name subjectExplain,
tbf.segment3_name accountExplain,
tbf.segment5_name profitCenterExplain,
tbf.segment6_name productExplain,
tbf.period_dr amount,
rc.name type,
rc.revenue_type category,
rc.tax_type taxOn,
case
when tbf.segment3 like '4001%' and rc.id is null then 1
when tbf.segment3 like '4002%' and rc.id is null then 1
when tbf.segment3 like '4010%' and rc.id is null then 1
when tbf.segment3 like '8002%' and rc.id is null then 1
<![CDATA[WHEN rc.id IS NOT NULL and (rc.start_date > #{queryDate} or rc.end_date < #{queryDate}) then 1]]>
<![CDATA[WHEN rc.id IS NOT NULL and rc.start_date <= #{queryDate} and rc.end_date >= #{queryDate} THEN 2]]>
else 3 end as isEmpty
from trial_balance_final as tbf
left join
revenue_config as rc
on
rc.org_id = tbf.organization_id
and
rc.tb_segment3 = tbf.segment3
and
rc.tb_segment5 = tbf.segment5
and
rc.tb_segment6 = tbf.segment6
where
tbf.project_id = #{projectId}
and tbf.period = #{period}
<if test="accountCode != null and accountCode != ''">
and tbf.segment3 like concat('%',#{accountCode},'%')
</if>
<if test="accountName != null and accountName != ''">
and tbf.segment3_name like concat('%',#{accountName},'%')
</if>
<if test="profitCenterCode != null and profitCenterCode != ''">
and tbf.segment5 like concat('%',#{profitCenterCode},'%')
</if>
<if test="profitCenterName != null and profitCenterName != ''">
and tbf.segment5_name like concat('%',#{profitCenterName},'%')
</if>
<if test="productCode != null and productCode != ''">
and tbf.segment6 like concat('%',#{productCode},'%')
</if>
<if test="productName != null and productName != ''">
and tbf.segment6_name like concat('%',#{productName},'%')
</if>
<if test="type != null">
and rc.name = #{type}
</if>
<if test="category != null">
and rc.revenue_type = #{category}
</if>
<if test="taxOn != null">
and rc.tax_type = #{taxOn}
</if>
) as detail
where
<![CDATA[detail.isEmpty < 3]]>
order by detail.isEmpty
</select>
</mapper>
\ No newline at end of file
...@@ -966,6 +966,22 @@ var vatModule = angular.module('app.vat', ['ui.grid', 'ui.grid.selection', 'ui.g ...@@ -966,6 +966,22 @@ var vatModule = angular.module('app.vat', ['ui.grid', 'ui.grid.selection', 'ui.g
sticky: true sticky: true
}); });
$stateProvider.state({
name: 'vat.reductionData.revenueDetail',
url: '/revenueDetail',
views: {
'@vat.reductionData': {
controller: ['$scope', '$stateParams', 'appTranslation',
function ($scope, $stateParams, appTranslation) {
appTranslation.load([appTranslation.vat]);
}],
template: '<vat-revenue-detail></vat-revenue-detail>',
}
},
resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
deepStateRedirect: true,
sticky: true
});
$stateProvider.state({ $stateProvider.state({
name: 'vat.reductionData.unbilledInvoice', name: 'vat.reductionData.unbilledInvoice',
url: '/unbilledInvoice', url: '/unbilledInvoice',
......
...@@ -1841,8 +1841,6 @@ ...@@ -1841,8 +1841,6 @@
"extractInvoiceData": "Extract Invoice Data", "extractInvoiceData": "Extract Invoice Data",
"ExtractInvoiceDataTitle": "Extract Invoice Data", "ExtractInvoiceDataTitle": "Extract Invoice Data",
"TBInterCompany": "Inter-Company", "TBInterCompany": "Inter-Company",
"~MustBeEndOneApp": "I Must be the End One, please!",
"dataValidate" : "data Validate"
"~MustBeEndOneApp": "I Must be the End One, please!"
} }
\ No newline at end of file
...@@ -1745,6 +1745,7 @@ ...@@ -1745,6 +1745,7 @@
"c_vatType": "增值税纳税类型", "c_vatType": "增值税纳税类型",
"c_year": "申报年", "c_year": "申报年",
"caculateData": "数据处理", "caculateData": "数据处理",
"revenueDetail": "收入明细",
"cancelled": "已作废", "cancelled": "已作废",
"caseNumberColon": "事件号", "caseNumberColon": "事件号",
"chartData": "数据", "chartData": "数据",
...@@ -2106,6 +2107,31 @@ ...@@ -2106,6 +2107,31 @@
"RevenueGetOrgError": "获取机构信息失败", "RevenueGetOrgError": "获取机构信息失败",
"RevenueAddSuccess": "添加成功", "RevenueAddSuccess": "添加成功",
"RevenueUpdateSuccess": "更新成功", "RevenueUpdateSuccess": "更新成功",
"dataValidate" : "数据校验",
"RevDetail": "收入明细",
"RevSearchAccountCode": "科目代码",
"RevSearchAccountName": "科目名称",
"RevSearchProfitCenterCode": "利润中心代码",
"RevSearchProfitCenterName": "利润中心名称",
"RevSearchProductCode": "产品代码",
"RevSearchProductName": "产品名称",
"RevSearchType": "收入类型",
"RevSearchCategory": "收入类别",
"RevSearchTaxOn": "计税方法",
"RevDetailSearch": "查询",
"RevDetailReset": "重置",
"RevDetailColSerialNo": "序号",
"RevDetailColSubject": "主体",
"RevDetailColAccount": "科目",
"RevDetailColProfitCenter": "利润中心",
"RevDetailProduct": "产品",
"RevDetailColSubjectExp": "主体说明",
"RevDetailColAccountExp": "科目说明",
"RevDetailColProfitCenterExp": "利润中心说明",
"RevDetailProductExp": "产品说明",
"RevDetailAmount": "发生额",
"RevDetailType": "收入类型",
"RevDetailCategory": "收入类别",
"RevDetailTaxOn": "计税方法",
"~MustBeEndOneApp": "我必须是最后一个!" "~MustBeEndOneApp": "我必须是最后一个!"
} }
\ No newline at end of file
...@@ -2338,11 +2338,8 @@ ...@@ -2338,11 +2338,8 @@
columns: [{caption: '序号', dataField: "xh"}, columns: [{caption: '序号', dataField: "xh"},
{caption: '文件名', dataField: "fileName",cellTemplate: function (container, options) { {caption: '文件名', dataField: "fileName",cellTemplate: function (container, options) {
try { try {
$('<i class="fa fa-pencil-square-o" style="cursor: pointer"></i>&nbsp;&nbsp;') $('<a href="'+options.data.fileUrl+'" target="_blank" style="cursor: pointer">"'+options.data.fileName+'"</a>&nbsp;&nbsp;')
.on('click', function () { .appendTo(container);
location.href = options.data.fileUrl;
});
} }
catch (e) { catch (e) {
$log.error(e); $log.error(e);
...@@ -2352,15 +2349,25 @@ ...@@ -2352,15 +2349,25 @@
{caption: '文件大小', dataField: "size"}, {caption: '文件大小', dataField: "size"},
{caption: '备注信息', dataField: "remarks"}, {caption: '备注信息', dataField: "remarks"},
{caption: '用户', dataField: "uploadUser"}, {caption: '用户', dataField: "uploadUser"},
{caption: '操作时间', dataField: "createTime"} {caption: '操作时间', dataField: "createTime"},
{caption : '操作' ,cellTemplate: function (container, options) {
try {
$('<button type="button" class="btn btn-in-grid" onclick = "deleteAttach('+options.data.id + ')"><i class="material-icons middle" style="vertical-align: text-bottom">delete</i>删除</button>&nbsp;&nbsp;')
.appendTo(container);
}
catch (e) {
$log.error(e);
}
} }
], ],
showBorders: true, showBorders: true/*,
editing: { editing: {
mode: "cell", mode: "cell",
allowAdding: false, allowAdding: false,
allowUpdating: false, allowUpdating: false,
allowDeleting: true allowDeleting: true,
},
}*/,
onInitialized : function(e){ onInitialized : function(e){
$scope.dataGrid = e.component; $scope.dataGrid = e.component;
}, },
...@@ -2368,27 +2375,61 @@ ...@@ -2368,27 +2375,61 @@
dataSource: '_gridData' dataSource: '_gridData'
} }
}; };
window.deleteAttach = function(id, data){
swal({
title: "warning!",
text: "确定删除该附件?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: $translate.instant('Yes'),
cancelButtonText: $translate.instant('No'),
closeOnConfirm: true,
closeOnCancel: true
},
function (tmpConfirm) {
if (tmpConfirm) {
vatReportService.deleteAttach(id).success(function(res){
if(res.resultMsg == "success"){
$scope.loadAttach();
}
});
}
});
}
//加载附件信息列表 //加载附件信息列表
$scope.loadAttach = function () { $scope.loadAttach = function () {
$scope._gridData = []; $scope._gridData = [];
$scope.activeSheet.pageInfo = $scope.pagingOptions;
if ($scope.activeSheet.activeRow && $scope.activeSheet.activeCol && $scope.activeSheet.activeTemplateId) { if ($scope.activeSheet.activeRow && $scope.activeSheet.activeCol && $scope.activeSheet.activeTemplateId) {
//获取附件信息 //获取附件信息
vatReportService.loadAttachList($scope.activeSheet).success(function (data) { vatReportService.loadAttachList($scope.activeSheet).success(function (data) {
var _xh = 0; if (data) {
for(var i = 0; i< data.length; i++){ var _xh = 0;
var _data = { for(var i = 0; i< data.length; i++){
xh : i+1, /* var _data1 = {
fileName : data[i].fileName, xh : i+1,
size : data[i].size, fileName : data[i].fileName,
remarks : data[i].remarks, size : data[i].size,
uploadUser : data[i].uploadUser, remarks : data[i].remarks,
createTime : data[i].createTime uploadUser : data[i].uploadUser,
createTime : data[i].createTime,
fileUrl : data[i].
}*/
data[i].xh = i+1;
$scope._gridData.push(data[i]);
_xh = i+1;
} }
$scope._gridData.push(_data); $scope.xh = _xh;
_xh = i+1; //$scope._gridData = data;
//$scope.pagingOptions.totalItems = data.totalCount;
}else {
SweetAlert.error($translate.instant('SystemError'));
} }
$scope.xh = _xh;
//刷新附件列表 //刷新附件列表
// $scope.dataGrid.refresh(); // $scope.dataGrid.refresh();
// dataGrid.refresh(); // dataGrid.refresh();
...@@ -2441,7 +2482,8 @@ ...@@ -2441,7 +2482,8 @@
size : dataSource.data.size, size : dataSource.data.size,
remarks : dataSource.data.remarks, remarks : dataSource.data.remarks,
uploadUser : dataSource.data.uploadUser, uploadUser : dataSource.data.uploadUser,
createTime : dataSource.data.createTime createTime : dataSource.data.createTime,
fileUrl : dataSource.data.fileUrl
} }
$scope._gridData.push(_data); $scope._gridData.push(_data);
...@@ -2494,6 +2536,22 @@ ...@@ -2494,6 +2536,22 @@
} }
} }
}); });
//点击分页
/* //刷新页面
$scope.refreshConfigGrid = function () {
$http.post('/revenueConf/queryPage',{pageInfo: $scope.pagingOptions}, apiConfig.createVat())
.success(function (res) {
if (res && res.list) {
$scope.pageConfDataSource = res.list;
$scope.pagingOptions.totalItems = res.pageInfo.totalCount;
}else {
SweetAlert.error($translate.instant('SystemError'));
}
})
};*/
//保存按钮 //保存按钮
$scope.uploadCellAttachment = function () { $scope.uploadCellAttachment = function () {
uploadfile($scope.fileNameWrapper); uploadfile($scope.fileNameWrapper);
...@@ -2504,8 +2562,12 @@ ...@@ -2504,8 +2562,12 @@
(function () { (function () {
//分页的设置
$scope.pagingOptions = {
pageIndex: 1, //当前页码
totalItems: 0, //总数据
pageSize: 20, //每页多少条数据
};
$scope.hidePanel = hidePanel; $scope.hidePanel = hidePanel;
$scope.isExpand = true; $scope.isExpand = true;
$scope.togglePanel = togglePanel; $scope.togglePanel = togglePanel;
......
...@@ -280,11 +280,18 @@ ...@@ -280,11 +280,18 @@
<div class="attach-upload" ng-show="tabType===5" style=""> <div class="attach-upload" ng-show="tabType===5" style="">
<button style="margin-bottom:20px;" class="btn btn-primary" ng-click="openAddCellAttachmentDialog();">上传文档 <button style="margin-bottom:20px;" class="btn btn-primary" ng-click="openAddCellAttachmentDialog();">上传文档
</button> </button>
<div class="dt-init-wrapper">
<div id="cellAttachmentDataGrid" dx-data-grid="cellAttachmentDataGirdOptions" <div id="cellAttachmentDataGrid" dx-data-grid="cellAttachmentDataGirdOptions"
class="dx-widget dx-visibility-change-handler" role="application" aria-label="Data grid" class="dx-widget dx-visibility-change-handler" role="application" aria-label="Data grid"
style="height: 450px;"> style="height: 450px;">
</div> </div>
<!-- <div class="page-footer">
<ack-pagination page-options="pagingOptions"
refresh-table="loadAttach()"></ack-pagination>
</div>-->
</div>
</div> </div>
</div> </div>
......
...@@ -500,8 +500,9 @@ constant.vatPermission = { ...@@ -500,8 +500,9 @@ constant.vatPermission = {
saveCode: '02.003.002.002' saveCode: '02.003.002.002'
}, },
revenueDetailCode:'02.003.004',
caculateDataCode: '02.003.003', caculateDataCode: '02.003.003',
unbilledInvoiceCode: '02.003.004', unbilledInvoiceCode: '02.003.004',
}, },
reportView: { reportView: {
...@@ -1435,7 +1436,7 @@ constant.fileTypeList = [ ...@@ -1435,7 +1436,7 @@ constant.fileTypeList = [
{code:2,type:"所有者权益变动表和汇率表"} {code:2,type:"所有者权益变动表和汇率表"}
]; ];
constant.maxButtonTitleLength = 20;
......
...@@ -196,8 +196,12 @@ ...@@ -196,8 +196,12 @@
return $http.get('/Report/hasManualDataSource/' + projectId+ '/' +period, apiConfig.createVat()); return $http.get('/Report/hasManualDataSource/' + projectId+ '/' +period, apiConfig.createVat());
}, },
loadAttachList : function(activeSheet){ loadAttachList : function(activeSheet){
return $http.get('/Report/loadAttachList?col='+ activeSheet.activeCol + "&row=" + activeSheet.activeRow + "&templateId=" +activeSheet.activeTemplateId, apiConfig.createVat()); return $http.post('/Report/loadAttachList' , activeSheet, apiConfig.createVat());
} },
deleteAttach : function(id){
var config = { isBusyRequest: true };
return $http.get('/Report/deleteAttach?id=' + id, apiConfig.create(config));
}
}; };
......
citModule.controller('VatRevenueConfigController', ['$scope', '$log', '$translate', '$timeout', 'SweetAlert', '$q', vatModule.controller('VatRevenueConfigController', ['$scope', '$log', '$translate', '$timeout', 'SweetAlert', '$q',
'$interval','dxDataGridService','$http','apiConfig', '$interval','dxDataGridService','$http','apiConfig',
function ($scope, $log, $translate, $timeout, SweetAlert, $q, $interval,dxDataGridService,$http,apiConfig) { function ($scope, $log, $translate, $timeout, SweetAlert, $q, $interval,dxDataGridService,$http,apiConfig) {
'use strict'; 'use strict';
......
...@@ -946,7 +946,9 @@ ...@@ -946,7 +946,9 @@
// } // }
else if (data[constant.vatPermission.dataManage.caculateDataCode]) { else if (data[constant.vatPermission.dataManage.caculateDataCode]) {
$state.go('vat.reductionData.caculateData'); $state.go('vat.reductionData.caculateData');
} /*else if (data[constant.vatPermission.dataManage.unbilledInvoiceCode]) { }else if (data[constant.vatPermission.dataManage.revenueDetailCode]){
$state.go('vat.reductionData.revenueDetail');
} /*else if (data[constant.vatPermission.dataManage.unbilledInvoiceCode]) {
$state.go('vat.reductionData.unbilledInvoice'); $state.go('vat.reductionData.unbilledInvoice');
}*/ else if (data[constant.vatPermission.reportView.bsplCode] || data[constant.vatPermission.reportView.taxReturnCode]) { }*/ else if (data[constant.vatPermission.reportView.bsplCode] || data[constant.vatPermission.reportView.taxReturnCode]) {
$state.go('vat.generateReport'); $state.go('vat.generateReport');
......
...@@ -103,6 +103,10 @@ function ($scope, $log, $translate, $location, loginContext, enums, vatSessionSe ...@@ -103,6 +103,10 @@ function ($scope, $log, $translate, $location, loginContext, enums, vatSessionSe
name: 'caculateData', permission: constant.vatPermission.dataManage.caculateDataCode, name: 'caculateData', permission: constant.vatPermission.dataManage.caculateDataCode,
text: $translate.instant('caculateData'), icon: 'fa fa-random', show: true text: $translate.instant('caculateData'), icon: 'fa fa-random', show: true
}, },
{
name: 'revenueDetail', permission: constant.vatPermission.dataManage.revenueDetailCode,
text: $translate.instant('revenueDetail'), icon: 'fa fa-random', show: true
},
/*{ /*{
name: 'accountMapping', permission: constant.vatPermission.dataManage.accountMappingCode, name: 'accountMapping', permission: constant.vatPermission.dataManage.accountMappingCode,
text: $translate.instant('accountMapping'), icon: 'fa fa-map', show: true text: $translate.instant('accountMapping'), icon: 'fa fa-map', show: true
......
...@@ -199,13 +199,27 @@ ...@@ -199,13 +199,27 @@
task.prototype.code =null; task.prototype.code =null;
vatReportService.getTemplate(vatSessionService.project.id, constant.serviceType.VAT, vatSessionService.month).then(function (report) { vatReportService.getTemplate(vatSessionService.project.id, constant.serviceType.VAT, vatSessionService.month).then(function (report) {
var result = []; var result = [];
// result.push({ name: $translate.instant('ProcessData'), items: [new task('GenerateStdTb', 'unstarted')] }); // result.push({ name: $translate.instant('ProcessData'), items: [new task('GenerateStdTb', 'unstarted')] });
// result.push({ name: $translate.instant('ProcessData'), items: [new task('CompareUnbilled', 'unstarted')] }); // result.push({ name: $translate.instant('ProcessData'), items: [new task('CompareUnbilled', 'unstarted')] });
// result.push({ name: $translate.instant('ProcessData'), items: [new task('CaculateUnbilled', 'unstarted'), new task('UpdateReportConfig', 'unstarted'), new task('GenerateFinanceReport', 'unstarted')] }); // result.push({ name: $translate.instant('ProcessData'), items: [new task('CaculateUnbilled', 'unstarted'), new task('UpdateReportConfig', 'unstarted'), new task('GenerateFinanceReport', 'unstarted')] });
/* var dataValidateItems = [/!*"本期余额表累计数+导入调整表是否等于本期利润表累计数", "本期余额表本期数+导入调整表是否等于本期利润表本期数", "上期利润表本年累进+本期利润表本期数是否等于本期利润表本年累计",*!/ ""];
var dataValidateCode = [/!*'DA001', 'DA002', 'DA003',*!/ ''];*/
//数据配置
result.push({ name: $translate.instant('ProcessData'), items: [new task('UpdateReportConfig', 'unstarted')] }); result.push({ name: $translate.instant('ProcessData'), items: [new task('UpdateReportConfig', 'unstarted')] });
result[result.length - 1].items.forEach(function (t) { t.seqNo = result.length - 1 }); result[result.length - 1].items.forEach(function (t) { t.seqNo = result.length - 1 });
//数据校验
var reItem = [];
reItem.push( new task(Math.ceil(Math.random()*1000000).toString(), "unstarted","上期导入调整表是否等于本期调整日记账发生额(摘要中包含“调表不调账”关键字)", "DA004"));
result.push({ name: $translate.instant('dataValidate'),isReportTask: true, items : reItem});
fixedRef = []; fixedRef = [];
if (report && report.data && report.data.data) { if (report && report.data && report.data.data) {
result.push({ result.push({
...@@ -238,7 +252,6 @@ ...@@ -238,7 +252,6 @@
i++; i++;
taskList = taskList.concat(item.items); taskList = taskList.concat(item.items);
}); });
$scope.tasks = result; $scope.tasks = result;
getInitTaskStatus(); getInitTaskStatus();
}); });
...@@ -556,7 +569,8 @@ ...@@ -556,7 +569,8 @@
}; };
var updateTasksStatus = function(job){ var updateTasksStatus = function(job){
var items = $scope.tasks[1].items; var items = $scope.tasks;
var tasks = JSON.parse(job.status)
if(job.jobStatus == 'End'){ if(job.jobStatus == 'End'){
items.forEach(function(item,index){ items.forEach(function(item,index){
item.status = 'completed'; item.status = 'completed';
...@@ -565,14 +579,13 @@ ...@@ -565,14 +579,13 @@
$scope.tasks[0].items[0].status = 'completed'; $scope.tasks[0].items[0].status = 'completed';
$scope.tasks[0].items[0].text= $translate.instant('completed'); $scope.tasks[0].items[0].text= $translate.instant('completed');
if($scope.timer){ if($scope.timer){
$interval.cancel($scope.timer); $interval.cancel($scope.timer);
vatCommonService.setProjectStatus(vatSessionService.project.id, vatSessionService.month, constant.ProjectStatusEnum.Generated vatCommonService.setProjectStatus(vatSessionService.project.id, vatSessionService.month, constant.ProjectStatusEnum.Generated
, constant.DictionaryDictKey.WFDataProcess, enums.FinishStatusEnum.Finished); , constant.DictionaryDictKey.WFDataProcess, enums.FinishStatusEnum.Finished);
} }
}else if(job.jobStatus=='Running'|| job.jobStatus=='Error'){ }else if(job.jobStatus=='Running'|| job.jobStatus=='Error'){
var tasks = JSON.parse(job.status)
var updateConfig = tasks[0]; var updateConfig = tasks[0];
if(updateConfig.status == 'Error'){ if(updateConfig.status == 'Error'){
...@@ -583,7 +596,7 @@ ...@@ -583,7 +596,7 @@
$scope.tasks[0].items[0].status = 'processing'; $scope.tasks[0].items[0].status = 'processing';
} }
$scope.tasks[0].items[0].text= $translate.instant($scope.tasks[0].items[0].status); $scope.tasks[0].items[0].text= $translate.instant($scope.tasks[0].items[0].status);
items.forEach(function(item,index){ /* items.forEach(function(item,index){
tasks.forEach(function(task){ tasks.forEach(function(task){
if(task.code==item.code){ if(task.code==item.code){
if(task.status == 'Error'){ if(task.status == 'Error'){
...@@ -596,12 +609,28 @@ ...@@ -596,12 +609,28 @@
item.text = $translate.instant(item.status); item.text = $translate.instant(item.status);
} }
}) })
}); });*/
if(job.jobStatus == 'Error'){ if(job.jobStatus == 'Error'){
if($scope.timer)$interval.cancel($scope.timer); if($scope.timer)$interval.cancel($scope.timer);
} }
} }
items.forEach(function(item,index){
item.items.forEach(function (_task, index) {
tasks.forEach(function(task){
if(task.code==_task.code){
if(task.status == 'Error'){
_task.status = 'error';
}else if(task.status == 'End'){
_task.status = 'completed';
}else if(task.status == 'Begin'){
_task.status = 'processing';
}
_task.text = $translate.instant(_task.status);
}
})
})
});
} }
var getInitTaskStatus = function(){ var getInitTaskStatus = function(){
...@@ -620,13 +649,11 @@ ...@@ -620,13 +649,11 @@
$interval.cancel($scope.timer); $interval.cancel($scope.timer);
} }
}); });
},1000); },1000);
} }
}else{ }else{
$log.debug("not running job"); $log.debug("not running job");
} }
}); });
} }
......
...@@ -29,11 +29,11 @@ ...@@ -29,11 +29,11 @@
<script type="text/ng-template" id="group_template"> <script type="text/ng-template" id="group_template">
<div> <div>
<div ng-if="group.items.length > 1" class="task" style="margin-bottom:5px;padding-left:20px;">{{group.name}}</div> <div ng-if="group.items.length >= 1" class="task" style="margin-bottom:5px;padding-left:20px;">{{group.name}}</div>
<ul ng-if="group.items.length > 1" ng-repeat="task in group.items track by $index"> <ul ng-if="group.items.length >= 1" ng-repeat="task in group.items track by $index">
<li ng-include="'task_template'" /> <li ng-include="'task_template'" />
</ul> </ul>
<div ng-if="group.items.length == 1" ng-repeat="task in group.items track by $index" style="height:42px;" ng-include="'task_template'" /> <!-- <div ng-if="group.items.length == 1" ng-repeat="task in group.items track by $index" style="height:42px;" ng-include="'task_template'" />-->
</script> </script>
<script type="text/ng-template" id="task_template"> <script type="text/ng-template" id="task_template">
......
<div class="vat-revenue-detail">
<div class="header-title">
<div style="display:inline-block"><span class="title-name">{{'RevDetail' | translate }}</span></div>
</div>
<div class="content-container">
<div class="header">
<div class="search-panel">
<table class="table borderless table-bottom">
<tr>
<td><span class="lbl-name">{{'RevSearchAccountCode' | translate }}:</span></td>
<td>
<input class="form-control" name="name" ng-model="searchParam.accountCode" maxlength="20">
</td>
<td><span class="lbl-name">{{'RevSearchAccountName' | translate }}:</span>:</td>
<td>
<input class="form-control" name="name" ng-model="searchParam.accountName" maxlength="20">
</td>
<td><span class="lbl-name">{{'RevSearchType' | translate }}:</span></td>
<td>
<div dx-select-box="searchOptions.typeOptions"></div>
</td>
<td ng-show="!hasShowMoreSearchBox">
<button type="button" class="btn btn-primary invoice-btn"
ng-click="searchboxService.search()">查询
</button>
</td>
<td ng-show="!hasShowMoreSearchBox">
<button type="button" class="btn btn-primary invoice-btn"
ng-click="searchboxService.resetBox()">重置
</button>
</td>
<td ng-show="!hasShowMoreSearchBox">
<span class="lbl-name">
<a href="javacript:void(0)" ng-click="searchboxService.showOrHideSearchBox()"><span><i
class="fa fa-chevron-down" aria-hidden="true"></i><span
style="margin-left:3px;">更多查询</span></span></a>
</span>
</td>
</tr>
<tr ng-show="hasShowMoreSearchBox">
</td>
<td><span class="lbl-name">{{'RevSearchProfitCenterCode' | translate }}:</span></td>
<td>
<input class="form-control" name="name" ng-model="searchParam.profitCenterCode" maxlength="20">
</td>
<td><span class="lbl-name">{{'RevSearchProfitCenterName' | translate }}:</span></td>
<td>
<input class="form-control" name="name" ng-model="searchParam.profitCenterName" maxlength="20">
</td>
<td><span class="lbl-name">{{'RevSearchTaxOn' | translate }}:</span></td>
<td>
<div dx-select-box="searchOptions.taxOnOptions"></div>
</td>
</tr>
<tr ng-show="hasShowMoreSearchBox">
<td><span class="lbl-name">{{'RevSearchProductCode' | translate }}:</span></td>
<td>
<input class="form-control" name="name" ng-model="searchParam.productCode" maxlength="20">
</td>
<td><span class="lbl-name">{{'RevSearchProductName' | translate }}:</span></td>
<td>
<input class="form-control" name="name" ng-model="searchParam.productName" maxlength="20">
</td>
<td><span class="lbl-name">{{'RevSearchCategory' | translate }}:</span></td>
<td>
<div dx-select-box="searchOptions.categoryOptions"></div>
</td>
<td>
<button type="button" class="btn btn-primary invoice-btn"
ng-click="searchboxService.search()">查询
</button>
</td>
<td>
<button type="button" class="btn btn-primary invoice-btn"
ng-click="searchboxService.resetBox()">重置
</button>
</td>
<td>
<a href="javascript:void(0);" ng-click="searchboxService.showOrHideSearchBox()">
<span><i class="fa fa-chevron-up" aria-hidden="true"></i><span
style="margin-left:3px;">收起</span></span></a>
</td>
</tr>
</table>
</div>
</div>
<div class="body">
<div class="grid-container">
<div id="invoiceGridContainer" dx-data-grid="revenueGridOptions">
<div data-options="dxTemplate:{ name:'editCellTemplate' }">
</div>
</div>
</div>
<div class="page-footer">
<ack-pagination page-options="pagingOptions"
refresh-table="refreshGrid()"></ack-pagination>
</div>
</div>
</div>
</div>
vatModule.directive('vatRevenueDetail', ['$log', 'browserService', '$translate', 'region', '$timeout',
function ($log, browserService, $translate, region, $timeout) {
$log.debug('vatRevenueDetail.ctor()...');
return {
restrict: 'E',
templateUrl: '/app/vat/reduction/vat-revenue-detail/vat-revenue-detail.html' + '?_=' + Math.random(),
scope: {},
controller: 'vatRevenueDetailController'
}
}
]);
\ No newline at end of file

@border-color: #d4d4d4;
@margin-left: 60px;
@container-width: 970px;
@control-width: 120px;
//sharing
.header {
padding: 15px;
img {
margin-top: 3px;
}
.search-panel {
border: 1px solid #CDCDCD;
border-radius: 5px;
padding: 5px;
.row {
margin: 10px 0;
.filter-item {
display: inline-block;
vertical-align: middle;
height: 32px;
}
.fileter-label {
text-align: right;
height: 32px;
padding-top: 5px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
padding-left: 0;
}
.invoice-btn {
min-width: 90px;
height: 34px;
}
}
.table-bottom {
margin-bottom: 0px !important;
.lbl-name {
word-break: keep-all;
}
td {
vertical-align: middle;
}
}
}
}
.table-bottom {
margin-bottom: 0px !important;
.lbl-name {
word-break: keep-all;
}
td {
vertical-align: middle;
}
}
.red-color {
color: #d04a02;
/*vertical-align: middle;*/
}
.dx-widget {
font-size: 13px;
}
//share
.header-title {
padding: 10px;
.sub-title {
font-family: "Microsoft YaHei";
font-weight: 400;
font-size: 12px;
color: rgb(153, 153, 153);
}
.title-name {
font-family: "Microsoft YaHei Bold", "Microsoft YaHei Regular", "Microsoft YaHei";
font-weight: 700;
font-style: normal;
}
}
.inline-block {
display: inline-block;
.left-side {
display: inline-block;
}
.right-side {
float: right;
display: inline-block;
}
}
.invoice-btn {
min-width: 80px;
height: 28px;
margin-right: 10px;
font-weight: normal;
font-size: 13px;
font-family: 'Microsoft YaHei';
}
.invoice-card {
width: 120px;
height: 130px;
border: 1px dashed @border-color;
border: 1px dashed rgba(0, 0, 0, 0.2);
border-radius: 5px;
background-color: #fff; /*#fbfbfb;*/
text-align: center;
cursor: pointer;
float: left;
margin: 10px;
position: relative;
&:hover {
background-color: #fff !important;
box-shadow: #a06748 1px 1px;
}
//卡片顶部的绝对定位
.dx-checkbox-container {
position: absolute;
left: 59px;
top: -8px;
}
}
.span-btn {
color: #6699CC;
padding: 0px 4px;
cursor: pointer;
font-size: 12px;
}
.borderless td, .borderless th {
border: none !important;
vertical-align: middle !important;
}
.page-footer {
display: inline-block;
float: right;
/*padding-right: 20px;*/
}
.invoice-table-dialog {
.modal-dialog {
min-width: 650px;
.modal-title {
color: red;
}
}
}
.invoiceNumber-link {
cursor: pointer;
/*color:#6699cc;*/
}
.vat-revenue-detail {
height: 100% !important;
padding-top: 0px !important;
position: relative;
font-size: 13px;
.dx-datagrid-group-closed:before {
/* font-family: "ui-grid"; */
font-style: normal;
font-weight: normal;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
font-variant: normal;
text-transform: none;
line-height: 1em;
margin-left: .2em;
content: inherit!important;
}
.header-title {
padding: 10px;
.title-name {
font-family: "Microsoft YaHei Bold", "Microsoft YaHei Regular", "Microsoft YaHei";
font-weight: 700;
font-style: normal;
}
}
.custom-control {
width: @control-width !important;
height: 25px;
line-height: 25px;
}
.btn-search {
width: @control-width !important;
}
.content-container {
height: calc(~'100% - 40px');
position: relative;
.body {
.buttom-row {
padding: 15px;
display: inline-block;
width: 100%;
.left-side {
display: inline-block;
/*padding-left:5px;*/
.select-title {
margin-left: 20px;
}
.select-number {
padding: 0 1px;
color: red;
}
}
.right-side {
float: right;
display: inline-block;
/*padding-right:5px;*/
.btn {
margin-left: 20px;
}
}
}
.grid-container {
padding: 0px 15px;
/*height: 350px;*/
/*height:100%;*/
#invoiceGridContainer {
max-height: 100%;
}
.dx-datagrid-rowsview .dx-row > .dx-master-detail-cell {
padding: 0px !important;
}
.dx-datagrid-nowrap.dx-datagrid-headers .dx-header-row > td > .dx-datagrid-text-content {
white-space: normal !important;
}
.internal-grid-container {
padding: 10px 10px 10px 0;
& > div:first-child {
padding: 0 0 5px 10px;
font-size: 13px;
/*font-weight: bold;*/
}
}
}
}
}
.importVerifyInvoiceModal {
.modal-dialog {
height: 200px;
width: 610px;
}
.modal-footer {
text-align: left;
}
}
}
...@@ -142,6 +142,7 @@ function ($scope, $rootScope, $q, $log, $timeout, $state, $translate, projectSer ...@@ -142,6 +142,7 @@ function ($scope, $rootScope, $q, $log, $timeout, $state, $translate, projectSer
constant.vatPermission.dataPreview.inputInvoice.queryCode, constant.vatPermission.dataPreview.inputInvoice.queryCode,
constant.vatPermission.dataManage.caculateDataCode, constant.vatPermission.dataManage.caculateDataCode,
constant.vatPermission.dataManage.revenueDetailCode,
// constant.vatPermission.dataManage.accountMappingCode, // constant.vatPermission.dataManage.accountMappingCode,
// constant.vatPermission.dataManage.goodsMappingCode, // constant.vatPermission.dataManage.goodsMappingCode,
// constant.vatPermission.dataManage.unbilledInvoiceCode, // constant.vatPermission.dataManage.unbilledInvoiceCode,
...@@ -331,6 +332,10 @@ function ($scope, $rootScope, $q, $log, $timeout, $state, $translate, projectSer ...@@ -331,6 +332,10 @@ function ($scope, $rootScope, $q, $log, $timeout, $state, $translate, projectSer
name: 'reductionData.caculateData', state: 'reductionData.caculateData', num: 3, name: 'reductionData.caculateData', state: 'reductionData.caculateData', num: 3,
permission: constant.vatPermission.dataManage.caculateDataCode, url: '#/vat/reductionData/caculateData' permission: constant.vatPermission.dataManage.caculateDataCode, url: '#/vat/reductionData/caculateData'
}); });
subMenus.push({
name: 'reductionData.revenueDetail', state: 'reductionData.revenueDetail', num: 3,
permission: constant.vatPermission.dataManage.revenueDetailCode, url: '#/vat/reductionData/revenueDetail'
});
} }
else if (data[constant.vatPermission.dataManage.accountMappingCode]) { else if (data[constant.vatPermission.dataManage.accountMappingCode]) {
$scope.menus.push({ $scope.menus.push({
......
...@@ -8,23 +8,23 @@ ...@@ -8,23 +8,23 @@
<span class="vat-subheader" style="margin:0px 20px 0px 0px;font-weight:bold" title="{{projectName}}">{{projectName | limitString:15}}</span> <span class="vat-subheader" style="margin:0px 20px 0px 0px;font-weight:bold" title="{{projectName}}">{{projectName | limitString:15}}</span>
<!--<span class="vat-subheader" style="margin:0px 20px 0px 0px;font-weight:bold">{{projectName}}</span>--> <!--<span class="vat-subheader" style="margin:0px 20px 0px 0px;font-weight:bold">{{projectName}}</span>-->
<span class="project-statuts-title"> <span class="project-statuts-title">
<i id="imgProjectStatus" class="fa fa-lightbulb-o" <i id="imgProjectStatus" class="fa fa-lightbulb-o"
ng-class="{'project-statuts-title-i-inactive' : layoutVatSession.project.projectStatusList[period] === 10}" ng-class="{'project-statuts-title-i-inactive' : layoutVatSession.project.projectStatusList[period] === 10}"
aria-hidden="true" ng-click="showProjectStatus()">&nbsp;&nbsp;{{statusTitle}}</i> aria-hidden="true" ng-click="showProjectStatus()">&nbsp;&nbsp;{{statusTitle}}</i>
</span> </span>
<!--<i id="imgProjectStatus" class="fa fa-info" aria-hidden="true" ng-click="showProjectStatus()"></i>--> <!--<i id="imgProjectStatus" class="fa fa-info" aria-hidden="true" ng-click="showProjectStatus()"></i>-->
<i class="fa fa-calendar vat-subheader red-color" style="font-size:20px;"></i> <i class="fa fa-calendar vat-subheader red-color" style="font-size:20px;"></i>
<input type="text" id="vatDatepicker" class="datepicker vat-subheader" style="border-width:0;outline:none;" readonly="readonly" /> <input type="text" id="vatDatepicker" class="datepicker vat-subheader" style="border-width:0;outline:none;" readonly="readonly" />
<div id="vat-menu-buttons" style="display:inline-block;"> <div id="vat-menu-buttons" style="display:inline-block;">
<a ng-repeat="menu in menus" ui-sref-active="active" ng-click="setReportSession(menu.name);" ui-sref=".{{menu.name}}" <a ng-repeat="menu in menus" ui-sref-active="active" ng-click="setReportSession(menu.name);" ui-sref=".{{menu.name}}"
atms-permission permission-control-type="ngIf" permission-code="{{menu.permission}}">{{menu.state | translate}}</a> atms-permission permission-control-type="ngIf" permission-code="{{menu.permission}}">{{menu.state | translate}}</a>
</div> </div>
<!--<button class="btn btn-vat-primary" translate="TriggerMessageSchedulerJob" ng-click="triggerSchedulerJob()"></button>--> <!--<button class="btn btn-vat-primary" translate="TriggerMessageSchedulerJob" ng-click="triggerSchedulerJob()"></button>-->
</div> </div>
<!--<div id="vat-menu-buttons"> <!--<div id="vat-menu-buttons">
<a ng-repeat="menu in menus" ui-sref-active="active" ui-sref=".{{menu.name}}"><span>{{menu.num}}</span>{{menu.name | translate}}</a> <a ng-repeat="menu in menus" ui-sref-active="active" ui-sref=".{{menu.name}}"><span>{{menu.num}}</span>{{menu.name | translate}}</a>
</div>--> </div>-->
...@@ -39,24 +39,24 @@ ...@@ -39,24 +39,24 @@
ng-class="[{ 'slideup': menuState === menuStates.collapsing }, { 'slidedown': menuState === menuStates.expanding }, { 'expanded': menuState === menuStates.collapsing || menuState === menuStates.collapsed }]"></div> ng-class="[{ 'slideup': menuState === menuStates.collapsing }, { 'slidedown': menuState === menuStates.expanding }, { 'expanded': menuState === menuStates.collapsing || menuState === menuStates.collapsed }]"></div>
<!-- 项目状态 --> <!-- 项目状态 -->
<script type="text/ng-template" id="model-project-status.html" class="model-project-status"> <script type="text/ng-template" id="model-project-status.html" class="model-project-status">
<!--<div class="modal-header"> <!--<div class="modal-header">
<div class="modal-title"> <div class="modal-title">
</div> </div>
</div>--> </div>-->
<div class="modal-body"> <div class="modal-body">
<i class="fa fa-times" aria-hidden="true" style="float: right; font-size: 11px; color: #CF2D1B" ng-click="closeModal()"></i> <i class="fa fa-times" aria-hidden="true" style="float: right; font-size: 11px; color: #CF2D1B" ng-click="closeModal()"></i>
<ul class="ul-status"> <ul class="ul-status">
<li> <li>
<i class="fa fa-circle" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] === 10}">&nbsp;&nbsp;&nbsp;{{startStatusText}}</i> <i class="fa fa-circle" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] === 10}">&nbsp;&nbsp;&nbsp;{{startStatusText}}</i>
<div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] === 10}">&nbsp;</div> <div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] === 10}">&nbsp;</div>
</li> </li>
<li ng-click="showSubStatus()"> <li ng-click="showSubStatus()">
<i class="fa fa-dot-circle-o" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] < 20}">&nbsp;&nbsp;&nbsp;{{'ProjectStatusImported' | translate }}</i> <i class="fa fa-dot-circle-o" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] < 20}">&nbsp;&nbsp;&nbsp;{{'ProjectStatusImported' | translate }}</i>
<div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] < 20, 'verticalLine-add-bottom-line' : displaySubStatus}">&nbsp;</div> <div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] < 20, 'verticalLine-add-bottom-line' : displaySubStatus}">&nbsp;</div>
<ul ng-show="displaySubStatus"> <ul ng-show="displaySubStatus">
<li ng-repeat="item in subStatusList track by $index"> <li ng-repeat="item in subStatusList track by $index">
<i class="fa fa-check-circle" aria-hidden="true" ng-class="{'i-inactive' : !item.isImported}">&nbsp;&nbsp;{{item.name }}</i> <i class="fa fa-check-circle" aria-hidden="true" ng-class="{'i-inactive' : !item.isImported}">&nbsp;&nbsp;{{item.name }}</i>
<div ng-show="$index < subStatusList.length - 1" class="vertical-bottom-line" ng-class="{'verticalLine-inactive' : !item.isImported}">&nbsp;</div> <div ng-show="$index < subStatusList.length - 1" class="vertical-bottom-line" ng-class="{'verticalLine-inactive' : !item.isImported}">&nbsp;</div>
...@@ -68,12 +68,12 @@ ...@@ -68,12 +68,12 @@
<div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] < 30}">&nbsp;</div> <div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] < 30}">&nbsp;</div>
</li> </li>
<li> <li>
<i class="fa fa-circle" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] < 40}">&nbsp;&nbsp;&nbsp;{{'ProjectStatusGenerated' | translate }} </i> <i class="fa fa-circle" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] < 40}">&nbsp;&nbsp;&nbsp;{{'ProjectStatusGenerated' | translate }} </i>
<div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] < 40}">&nbsp;</div> <div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] < 40}">&nbsp;</div>
</li> </li>
<li> <li>
<i class="fa fa-circle" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] < 50}"> <i class="fa fa-circle" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] < 50}">
&nbsp;&nbsp;{{'ProjectStatusReportSubmitted' | translate }} &nbsp;&nbsp;{{'ProjectStatusReportSubmitted' | translate }}
&nbsp;&nbsp;<span ng-show="submitDetailDto.isDone" style="font-size:12px">{{submitDetailDto.finishedData}}</span> &nbsp;&nbsp;<span ng-show="submitDetailDto.isDone" style="font-size:12px">{{submitDetailDto.finishedData}}</span>
</i> </i>
<div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] < 50}">&nbsp; </div> <div class="verticalLine" ng-class="{'verticalLine-inactive' : layoutVatSession.project.projectStatusList[period] < 50}">&nbsp; </div>
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
<li> <li>
<i class="fa fa-circle" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] < 100}">&nbsp;&nbsp;&nbsp;{{'ProejctStatusCompleted' | translate }} </i> <i class="fa fa-circle" aria-hidden="true" ng-class="{'i-inactive' : layoutVatSession.project.projectStatusList[period] < 100}">&nbsp;&nbsp;&nbsp;{{'ProejctStatusCompleted' | translate }} </i>
</li> </li>
</ul> </ul>
</div> </div>
...@@ -102,5 +102,5 @@ ...@@ -102,5 +102,5 @@
</div>--> </div>-->
</script> </script>
</div> </div>
\ No newline at end of file
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