From 77480a7ade580d2197a687b31bcded20184ba1c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= <18222067976@163.com> Date: Wed, 8 Sep 2021 17:02:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E5=87=BA=E5=90=88=E5=90=8C=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=EF=BC=8C=E6=A8=A1=E6=9D=BF=E4=B8=8B=E8=BD=BD=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PayContactsManagementController.java | 21 ++- .../PayIncomeContractController.java | 4 + .../PaySpendingContractController.java | 165 +++++++++++++++++- .../contract/entity/PayIncomeContract.java | 4 +- .../contract/entity/PaySpendingContract.java | 6 +- .../mapper/xml/PaySpendingContractMapper.xml | 2 +- .../vo/PaySpendingContractDetailOutput.java | 31 ++++ .../contract/vo/PaySpendingContractExcel.java | 101 +++++++++++ 8 files changed, 317 insertions(+), 17 deletions(-) create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractDetailOutput.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractExcel.java diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayContactsManagementController.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayContactsManagementController.java index a256a102..266712c2 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayContactsManagementController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayContactsManagementController.java @@ -458,15 +458,22 @@ public class PayContactsManagementController extends JeroController listContactsAll = payContactsManagementService.listPayContactsManagement(phoneList); List companyList = list.stream().map(PayContactsManagement::getCompanyName).collect(Collectors.toList()); List listCompanyAll = payCompanyManagementService.listPayCompanyManagement(companyList); - List listContacts = new ArrayList<>(); + List listContacts = new ArrayList<>(); StringBuilder msg = new StringBuilder(); list.forEach(p->{ int count = list.indexOf(p); // 校验excel表中是否存在重复手机号 - if(listContacts.contains(p.getPhone())){ + List listContactsPhone = listContacts.stream().filter(p1->Objects.equals(p1.getPhone(),p.getPhone())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listContactsPhone)){ msg.append("第 ").append(count + 3).append(" 行:手机号在excel中重复,请修改。
"); } - listContacts.add(p.getPhone()); + // 校验excel表中是否存在重复联系人 + List listContactsName = listContacts.stream().filter(p1->Objects.equals(p1.getName(),p.getName()) + && Objects.equals(p1.getCompanyId(),p.getCompanyId())).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(listContactsName)){ + msg.append("第 ").append(count + 3).append(" 行:联系人姓名在excel中重复,请修改。
"); + } + listContacts.add(p); p.setDataSource(PayContactsManagementCommon.DATA_SOURCE1); p.setSigningUp(PayContactsManagementCommon.SIGNING_UP0); // 校验字段值 @@ -483,8 +490,9 @@ public class PayContactsManagementController extends JeroController"); } } - // 校验 表中是否存手机号 + // 校验 手机号,姓名 if(!CollectionUtils.isEmpty(listContactsAll)){ + // 校验 表中是否存手机号 List listCompanyEquals = listContactsAll.stream().filter(p1->Objects.equals(p1.getPhone(),p.getPhone())).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(listCompanyEquals)){ // 已存在数据来源是报名,变更来源为管理端,替换掉数据 @@ -499,6 +507,11 @@ public class PayContactsManagementController extends JeroController"); } + List listContactsEquals = listContactsAll.stream().filter(p1->Objects.equals(p1.getCompanyId(),p.getCompanyId()) + && Objects.equals(p1.getName(),p.getName())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listContactsEquals)){ + msg.append("第").append(count + 3).append("行:联系人姓名已经存在,请修改。
"); + } } if (!StringUtils.isBlank(p.getPhone())){ p.setPhone(PasswordUtil.encrypt(p.getPhone())); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractController.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractController.java index 3c349907..4d133475 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractController.java @@ -492,6 +492,10 @@ public class PayIncomeContractController extends JeroController { @Autowired private IPaySpendingContractService paySpendingContractService; + @Autowired + private IPaySpendingContractInstallmentService paySpendingContractInstallmentService; + @Autowired + private Environment env; + @Autowired + private ISysBaseAPI sysBaseAPI; /** * 分页列表查询 @@ -144,15 +170,44 @@ public class PaySpendingContractController extends JeroController queryById(@RequestParam(name="id",required=true) String id) { + public Result queryById(@RequestParam(name="id") String id) { + if(StringUtils.isBlank(id)){ + return Result.error("id不能为空!"); + } PaySpendingContract paySpendingContract = paySpendingContractService.getById(id); if(paySpendingContract==null) { return Result.error("未找到对应数据"); } - return Result.OK(paySpendingContract); + + // 获取分期信息 + LambdaQueryWrapper queryPaySpendingContractInstallment = new LambdaQueryWrapper<>(); + queryPaySpendingContractInstallment.eq(PaySpendingContractInstallment::getContractId,paySpendingContract.getId()); + List listPaySpendingContractInstallment = paySpendingContractInstallmentService.list(queryPaySpendingContractInstallment); + String str = JSON.toJSONString(paySpendingContract); + PaySpendingContractDetailOutput paySpendingContractDetailOutput = JSONObject.parseObject(str,PaySpendingContractDetailOutput.class); + // 字典翻译 + paySpendingContractDetailOutput.setOpening_dictText(sysBaseAPI.translateDict("yn",String.valueOf(paySpendingContract.getOpening()))); + paySpendingContractDetailOutput.setAccountStatus_dictText(sysBaseAPI.translateDict("revenue_contract_account_status",String.valueOf(paySpendingContract.getAccountStatus()))); + paySpendingContractDetailOutput.setPack_dictText(sysBaseAPI.translateDict("yn",String.valueOf(paySpendingContract.getPack()))); + if(!CollectionUtils.isEmpty(listPaySpendingContractInstallment)){ + paySpendingContractDetailOutput.setListInstallment(listPaySpendingContractInstallment); + } + return Result.OK(paySpendingContractDetailOutput); } - /** + /** + * 模板下载 + * + * @return + */ + @ApiOperation(value="支出合同-模板下载", notes="支出合同-模板下载") + @GetMapping(value = "/downloadExcelModel") + public ModelAndView downloadExcelModel() { + return super.exportTemplate(PaySpendingContractExcel.class,"支出合同导入模板"); + } + + + /** * 导出excel * * @param request @@ -160,7 +215,103 @@ public class PaySpendingContractController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(paySpendingContract, request.getParameterMap()); + // Step.2 获取导出数据 + List pageList = paySpendingContractService.list(queryWrapper); + List exportList = null; + + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + exportList = pageList.stream().filter(item -> selectionList.contains(paySpendingContract.getId())).collect(Collectors.toList()); + } else { + exportList = pageList; + } + List> list = new ArrayList<>(); + // excel字段长度 + Map mapCount = new HashMap<>(); + mapCount.put("count",0); + if(!CollectionUtils.isEmpty(exportList)){ + List listId = exportList.stream().map(PaySpendingContract::getId).collect(Collectors.toList()); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.in(PaySpendingContractInstallment::getContractId,listId); + List listPaySpendingContractInstallment = paySpendingContractInstallmentService.list(query); + if(!CollectionUtils.isEmpty(listPaySpendingContractInstallment)){ + exportList.forEach(p->{ + String str = JSON.toJSONString(p); + Map map = JSONObject.parseObject(str,Map.class); + map.put("contractDate", DateUtils.date2Str(p.getContractDate(),new SimpleDateFormat("yyyy-MM-dd"))); + map.put("terminationDate",DateUtils.date2Str(p.getTerminationDate(),new SimpleDateFormat("yyyy-MM-dd"))); + map.put("opening",sysBaseAPI.translateDict("yn",String.valueOf(p.getOpening()))); + map.put("accountStatus",sysBaseAPI.translateDict("revenue_contract_account_status",String.valueOf(p.getAccountStatus()))); + map.put("pack",sysBaseAPI.translateDict("yn",String.valueOf(p.getPack()))); + List listSub = listPaySpendingContractInstallment.stream().filter(item-> + Objects.equals(p.getId(),item.getContractId())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listSub)){ + int count = mapCount.get("count"); + if(count < listSub.size()){ + mapCount.put("count",listSub.size()); + } + listSub.forEach(p1->{ + int n = listSub.indexOf(p1) + 1; + map.put("phaseName" + n,p1.getPhaseName()); + map.put("accountsReceivableAmount" + n,String.valueOf(p1.getAccountsReceivableAmount())); + map.put("accountsReceivableTime" + n, DateUtils.date2Str(p1.getAccountsReceivableTime(),new SimpleDateFormat("yyyy-MM-dd"))); + map.put("paidAmount" + n,String.valueOf(p1.getPaidAmount())); + map.put("paidTime" + n,DateUtils.date2Str(p1.getPaidTime(),new SimpleDateFormat("yyyy-MM-dd"))); + }); + } + list.add(map); + }); + } + }else{ + throw new JeroBootException("数据为空!"); + } + // 设置表头样式 + List filedsList = new ArrayList<>(); + filedsList.add(new ExcelExportEntity("合同编号", "contractNum")); + filedsList.add(new ExcelExportEntity("合同名称", "contractName")); + filedsList.add(new ExcelExportEntity("签订单位", "signedCompanyTemporaryName")); + filedsList.add(new ExcelExportEntity("签订单位联系人", "signedContactsTemporaryName")); + filedsList.add(new ExcelExportEntity("是否开口", "opening")); + filedsList.add(new ExcelExportEntity("负责人", "principalName")); + filedsList.add(new ExcelExportEntity("部门名称", "departmentName")); + filedsList.add(new ExcelExportEntity("签订合同总金额", "contractAmount")); + filedsList.add(new ExcelExportEntity("税率", "rate")); + filedsList.add(new ExcelExportEntity("未税金额", "noTaxAmount")); + filedsList.add(new ExcelExportEntity("合同签订日期", "contractDate")); + filedsList.add(new ExcelExportEntity("合同终止日期", "terminationDate")); + filedsList.add(new ExcelExportEntity("合同约定主要时点", "contractTimePoints")); + filedsList.add(new ExcelExportEntity("应收金额", "accountsReceivableAmount")); + filedsList.add(new ExcelExportEntity("已收金额", "amountReceived")); + filedsList.add(new ExcelExportEntity("未收金额", "outstandingAmount")); + filedsList.add(new ExcelExportEntity("账款状态", "accountStatus")); + filedsList.add(new ExcelExportEntity("是否打包", "pack")); + filedsList.add(new ExcelExportEntity("打包年份", "packYear")); + int count = mapCount.get("count"); + if(count > 0){ + for (int i = 1; i <= count; i++){ + filedsList.add(new ExcelExportEntity(i + "阶段", "phaseName" + i)); + filedsList.add(new ExcelExportEntity(i + "期应收", "accountsReceivableAmount" + i)); + filedsList.add(new ExcelExportEntity(i + "期应收时间", "accountsReceivableTime" + i)); + filedsList.add(new ExcelExportEntity(i + "期实收", "paidAmount" + i)); + filedsList.add(new ExcelExportEntity(i + "期实收时间", "paidTime" + i)); + } + } + // Step.3 AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgMapExcelView()); + mv.addObject(MapExcelConstants.FILE_NAME, "收入合同"); //此处设置的filename无效 ,前端会重更新设置一下 + mv.addObject(MapExcelConstants.ENTITY_LIST, filedsList); + //update-begin--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置-------------------- + ExportParams exportParams=new ExportParams("收入合同", "收入合同"); + exportParams.setImageBasePath(env.getProperty("jero.path.upload")); + //update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置---------------------- + mv.addObject(MapExcelConstants.PARAMS,exportParams); + mv.addObject(MapExcelConstants.MAP_LIST, list); + return mv; } /** diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContract.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContract.java index f38f9b19..5f3aabaa 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContract.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContract.java @@ -147,12 +147,12 @@ public class PayIncomeContract implements Serializable { @Excel(name = "已收金额", width = 15) @ApiModelProperty(value = "已收金额") @NotNull(message = "已收金额不能为空!") - @Max(value = 999999999,message = "应收金额格式错误") + @Max(value = 999999999,message = "已收金额格式错误") private java.lang.Integer amountReceived; /**未收金额*/ @Excel(name = "未收金额", width = 15) @ApiModelProperty(value = "未收金额") - @Max(value = 999999999,message = "应收金额格式错误") + @Max(value = 999999999,message = "未收金额格式错误") private java.lang.String outstandingAmount; /**账款状态(1:未支付,2:部分支付,3:已付全款)*/ @Excel(name = "账款状态(1:未支付,2:部分支付,3:已付全款)", width = 15) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PaySpendingContract.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PaySpendingContract.java index b5594ba7..68d40c5b 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PaySpendingContract.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PaySpendingContract.java @@ -80,9 +80,9 @@ public class PaySpendingContract implements Serializable { @Excel(name = "部门名称", width = 15) @ApiModelProperty(value = "部门名称") private String departmentName; - /**签订合同金额*/ - @Excel(name = "签订合同金额", width = 15) - @ApiModelProperty(value = "签订合同金额") + /**签订合同总金额*/ + @Excel(name = "签订合同总金额", width = 15) + @ApiModelProperty(value = "签订合同总金额") private String contractAmount; /**税率*/ @Excel(name = "税率", width = 15) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PaySpendingContractMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PaySpendingContractMapper.xml index a4bd0bd9..40e9c672 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PaySpendingContractMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PaySpendingContractMapper.xml @@ -9,7 +9,7 @@ contract_name AS contractName, signed_company_id AS signedCompanyId, signed_company_temporary_id AS signedCompanyTemporaryId, - signed_company_temporary_name AS signedCompanTemporaryName, + signed_company_temporary_name AS signedCompanyTemporaryName, signed_contacts_id AS signedContactsId, signed_contacts_temporary_id AS signedContactsTemporaryId, signed_contacts_temporary_name AS signedContactsTemporaryName, diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractDetailOutput.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractDetailOutput.java new file mode 100644 index 00000000..b65ccfe4 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractDetailOutput.java @@ -0,0 +1,31 @@ +package com.jero.contract.vo; + +import com.jero.contract.entity.PaySpendingContract; +import com.jero.contract.entity.PaySpendingContractInstallment; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class PaySpendingContractDetailOutput extends PaySpendingContract implements Serializable { + + /** + * 是否开口(1为是,0为否) + */ + private String opening_dictText; + /** + * 账款状态(1:未支付,2:部分支付,3:已付全款) + */ + private String accountStatus_dictText; + /** + * 是否打包(1:是,2:否) + */ + private String pack_dictText; + /** + * 分期记录 + */ + @ApiModelProperty(value = "分期记录集合") + private List listInstallment; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractExcel.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractExcel.java new file mode 100644 index 00000000..3a96880d --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractExcel.java @@ -0,0 +1,101 @@ +package com.jero.contract.vo; + +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; +import java.util.Date; +@Data +public class PaySpendingContractExcel implements Serializable { + + /**合同编号*/ + @Excel(name = "合同编号", width = 15) + private String contractNum; + /**合同名称*/ + @Excel(name = "合同名称", width = 15) + private String contractName; + /**临时签订单位名称*/ + @Excel(name = "签订单位名称", width = 15) + private String signedCompanyTemporaryName; + /**临时签订单位联系人名称*/ + @Excel(name = "签订单位联系人", width = 15) + private String signedContactsTemporaryName; + /**是否开口(1:是,0:否)*/ + @Excel(name = "是否开口", width = 15) + private Integer opening; + /**负责人名称*/ + @Excel(name = "负责人", width = 15) + private String principalName; + /**部门名称*/ + @Excel(name = "部门名称", width = 15) + private String departmentName; + /**签订合同总金额*/ + @Excel(name = "签订合同总金额", width = 15) + private String contractAmount; + /**税率*/ + @Excel(name = "税率", width = 15) + private String rate; + /**未税金额*/ + @Excel(name = "未税金额", width = 15) + private String noTaxAmount; + /**合同签订日期*/ + @Excel(name = "合同签订日期", width = 15, format = "yyyy-MM-dd") + private Date contractDate; + /**合同终止日期*/ + @Excel(name = "合同终止日期", width = 15, format = "yyyy-MM-dd") + private Date terminationDate; + /**合同约定主要时点*/ + @Excel(name = "合同约定主要时点", width = 15) + private String contractTimePoints; + /**应收金额*/ + @Excel(name = "应收金额", width = 15) + private String accountsReceivableAmount; + /**已收金额*/ + @Excel(name = "已收金额", width = 15) + private String amountReceived; + /**未收金额*/ + @Excel(name = "未收金额", width = 15) + private String outstandingAmount; + /**账款状态(1:未支付,2:部分支付,3:已付全款)*/ + @Excel(name = "账款状态", width = 15) + private Integer accountStatus; + /**合同约定付款次数*/ + @Excel(name = "合同约定付款次数", width = 15) + private String contractPaymentTimes; + /**是否打包(1:是,0:否)*/ + @Excel(name = "是否打包", width = 15) + private Integer pack; + /**打包年份*/ + @Excel(name = "打包年份", width = 15) + private String packYear; + /**阶段名称*/ + @Excel(name = "1阶段", width = 15) + private String phaseName1; + /**应收金额*/ + @Excel(name = "1期应收", width = 15) + private Integer accountsReceivableAmount1; + /**应收时间*/ + @Excel(name = "1期应收时间", width = 15, format = "yyyy-MM-dd") + private Date accountsReceivableTime1; + /**实收金额*/ + @Excel(name = "1期实收", width = 15) + private Integer paidAmount1; + /**实收时间*/ + @Excel(name = "1期实收时间", width = 15, format = "yyyy-MM-dd") + private Date paidTime1; + /**阶段名称*/ + @Excel(name = "2阶段", width = 15) + private String phaseName2; + /**应收金额*/ + @Excel(name = "2期应收", width = 15) + private Integer accountsReceivableAmount2; + /**应收时间*/ + @Excel(name = "2期应收时间", width = 15, format = "yyyy-MM-dd") + private Date accountsReceivableTime2; + /**实收金额*/ + @Excel(name = "2期实收", width = 15) + private Integer paidAmount2; + /**实收时间*/ + @Excel(name = "2期实收时间", width = 15, format = "yyyy-MM-dd") + private Date paidTime2; +}