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 1c7c6c6d..962495dc 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 @@ -8,8 +8,6 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -21,7 +19,6 @@ import com.jero.common.system.query.QueryGenerator; import com.jero.common.util.PasswordUtil; import com.jero.common.util.ValidUtil; import com.jero.common.util.oConvertUtils; -import com.jero.company.common.PayContactsManagementCommon; import com.jero.company.entity.PayCompanyManagement; import com.jero.company.entity.PayContactsManagement; import com.jero.company.service.IPayCompanyManagementService; @@ -37,7 +34,6 @@ import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.web.bind.annotation.*; diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/common/PayIncomeContractCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/common/PayIncomeContractCommon.java index 6c54b2ee..c714c1b6 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/common/PayIncomeContractCommon.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/common/PayIncomeContractCommon.java @@ -78,7 +78,7 @@ public class PayIncomeContractCommon { /** * 支出合同excel表头 */ - public final static List LIST_SPENDING_CONTRACT = Arrays.asList("合同编号","合同名称","签订单位名称","签订单位联系人","是否开口","负责人", + public final static List LIST_SPENDING_CONTRACT = Arrays.asList("合同编号","合同名称","签订单位","签订单位联系人","是否开口","负责人", "部门名称","签订合同总金额","税率","未税金额","合同签订日期","合同终止日期","合同约定主要时点", "应收金额","已收金额","未收金额","账款状态","合同约定付款次数","是否打包","打包年份"); /** 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 cb71df3c..c820dc02 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,11 +492,16 @@ public class PayIncomeContractController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(payIncomeContract, request.getParameterMap()); - // Step.2 获取导出数据 - List pageList = payIncomeContractService.list(queryWrapper); + public ModelAndView exportXls(HttpServletRequest request, PayIncomeContract payIncomeContract, + @RequestParam(name="chargeStatus",required = false) String chargeStatus, + @RequestParam(name="projectName",required = false) String projectName, + @RequestParam(name="startTime",required = false) String startTime, + @RequestParam(name="endTime",required = false) String endTime) { + + if(Objects.equals(chargeStatus,PayIncomeContractCommon.CHARGE_STATUS0)){ + chargeStatus = ""; + } + List pageList = payIncomeContractService.queryList( payIncomeContract,chargeStatus,projectName,startTime,endTime); List exportList = null; // 过滤选中数据 @@ -535,9 +540,9 @@ public class PayIncomeContractController extends JeroController{ int n = listSub.indexOf(p1) + 1; map.put("phaseName" + n,p1.getPhaseName()); - map.put("accountsReceivableAmount" + n,String.valueOf(p1.getAccountsReceivableAmount())); + map.put("accountsReceivableAmount" + n,Objects.isNull(p1.getAccountsReceivableAmount()) ? "" : 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("paidAmount" + n,Objects.isNull(p1.getPaidAmount()) ? "" : String.valueOf(p1.getPaidAmount())); map.put("paidTime" + n,DateUtils.date2Str(p1.getPaidTime(),new SimpleDateFormat("yyyy-MM-dd"))); }); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PaySpendingContractController.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PaySpendingContractController.java index 12c0d800..d9b95e4a 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PaySpendingContractController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PaySpendingContractController.java @@ -4,6 +4,7 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -53,13 +54,13 @@ import io.swagger.annotations.ApiOperation; @RequestMapping("/contract/paySpendingContract") @Slf4j public class PaySpendingContractController extends JeroController { - @Autowired + @Resource private IPaySpendingContractService paySpendingContractService; - @Autowired + @Resource private IPaySpendingContractInstallmentService paySpendingContractInstallmentService; - @Autowired + @Resource private Environment env; - @Autowired + @Resource private ISysBaseAPI sysBaseAPI; /** @@ -243,12 +244,13 @@ public class PaySpendingContractController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(paySpendingContract, request.getParameterMap()); - // Step.2 获取导出数据 - List pageList = paySpendingContractService.list(queryWrapper); + + List pageList = paySpendingContractService.queryList( paySpendingContract.getContractNum(), + paySpendingContract.getContractName(),startTime,endTime); List exportList = null; // 过滤选中数据 diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractMapper.java index fe3fb4f4..1b061825 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractMapper.java @@ -49,4 +49,19 @@ public interface PayIncomeContractMapper extends BaseMapper { * @Exception */ List getAssociated(@Param("contractId") String contractId); + /** + * @Description excel 导出列表 + * @Author lqt + * @Date 2021/9/3 + * @Param payIncomeContract 收入合同 + * @Param chargeStatus 来款状态 + * @Param startTime 开始时间 + * @Param endTime 结束时间 + * @Return + * @Exception + */ + List queryList(@Param("payIncomeContract") PayIncomeContract payIncomeContract, + @Param("chargeStatus") String chargeStatus,@Param("projectName") String projectName, + @Param("startTime") String startTime, @Param("endTime") String endTime); + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PaySpendingContractMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PaySpendingContractMapper.java index 2649c730..1bf918de 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PaySpendingContractMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PaySpendingContractMapper.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.contract.entity.PaySpendingContract; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @Description: pay_spending_contract * @Author: jeecg-boot @@ -27,4 +29,16 @@ public interface PaySpendingContractMapper extends BaseMapper queryList(@Param("contractNum") String contractNum, + @Param("contractName") String contractName,@Param("startTime") String startTime, + @Param("endTime") String endTime); + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractMapper.xml index f582186d..67e7b2a8 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractMapper.xml @@ -40,10 +40,10 @@ pic.update_time AS updateTime, ( select if(count(*) > 0,1,0) from pay_income_contract_installment - where contract_id = pic.id AND accounts_receivable_time < DATE_FORMAT(NOW(),'%Y-%m-%d') - AND accounts_receivable_amount != 0 AND accounts_receivable_amount > paid_amount - ) AS chargeStatus, - GROUP_CONCAT(project.projectName) AS associatedProject + where contract_id = pic.id AND accounts_receivable_time is not null AND accounts_receivable_time < DATE_FORMAT( NOW(), '%Y-%m-%d' ) + AND accounts_receivable_amount != 0 AND accounts_receivable_amount > if(paid_amount is null or paid_amount = '',0,paid_amount) + ) AS chargeStatus, + GROUP_CONCAT(project.projectName ORDER BY project.id DESC) AS associatedProject FROM pay_income_contract pic LEFT JOIN pay_income_contract_associated pica ON pica.contract_id = pic.id LEFT JOIN @@ -198,4 +198,95 @@ group by pic.id order by pic.create_time desc + \ No newline at end of file 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 40da9db1..51ad50f7 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 @@ -35,10 +35,10 @@ update_by AS updateBy, update_time AS updateTime, (select if(count(*) > 0,1,0) from pay_spending_contract_installment - where contract_id = pay_spending_contract.id AND accounts_receivable_time < DATE_FORMAT(NOW(),'%Y-%m-%d') - AND accounts_receivable_amount != 0 AND accounts_receivable_amount > paid_amount + where contract_id = psc.id AND accounts_receivable_time is not null AND accounts_receivable_time < DATE_FORMAT( NOW(), '%Y-%m-%d' ) + AND accounts_receivable_amount != 0 AND accounts_receivable_amount > if(paid_amount is null or paid_amount = '',0,paid_amount) ) AS chargeStatus - FROM pay_spending_contract + FROM pay_spending_contract psc AND contract_num LIKE CONCAT('%',CONCAT(#{contractNum},'%')) @@ -54,6 +54,59 @@ ORDER BY chargeStatus desc,create_time desc + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractService.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractService.java index a44cce15..f2725aca 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractService.java @@ -181,4 +181,18 @@ public interface IPayIncomeContractService extends IService { * @Exception */ void insertPayIncomeContract(PayIncomeContract payIncomeContract,String projectId,Integer projectType); + + /** + * @Description excel 导出列表 + * @Author lqt + * @Date 2021/9/3 + * @Param payIncomeContract 收入合同 + * @Param chargeStatus 来款状态 + * @Param startTime 开始时间 + * @Param endTime 结束时间 + * @Return + * @Exception + */ + List queryList(PayIncomeContract payIncomeContract, String chargeStatus,String projectName, String startTime, String endTime); + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPaySpendingContractService.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPaySpendingContractService.java index b59110fd..ac054efc 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPaySpendingContractService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPaySpendingContractService.java @@ -71,4 +71,13 @@ public interface IPaySpendingContractService extends IService queryList(String contractNum,String contractName,String startTime,String endTime); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java index d7194db0..d21f0af2 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java @@ -971,7 +971,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl queryList(PayIncomeContract payIncomeContract, String chargeStatus, String projectName, String startTime, String endTime) { + return payIncomeContractMapper.queryList(payIncomeContract, chargeStatus, projectName, startTime, endTime); + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PaySpendingContractServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PaySpendingContractServiceImpl.java index 2fb7438c..0bf77050 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PaySpendingContractServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PaySpendingContractServiceImpl.java @@ -479,7 +479,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl listPaySpendingContractInstallment = p.getListInstallment(); @@ -535,6 +535,11 @@ public class PaySpendingContractServiceImpl extends ServiceImpl queryList(String contractNum, String contractName, String startTime, String endTime) { + return paySpendingContractMapper.queryList( contractNum, contractName, startTime, endTime); + } + private PaySpendingContract setPaySpendingContractExcel(Map map,Map mapOpening,Map mapPack, int n,StringBuilder sb){ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractExcelModel.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractExcelModel.java index 187754af..f6394a88 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractExcelModel.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PaySpendingContractExcelModel.java @@ -1,13 +1,7 @@ package com.jero.contract.vo; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.jeecgframework.poi.excel.annotation.Excel; - -import javax.validation.constraints.Max; -import javax.validation.constraints.Size; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; @@ -21,7 +15,7 @@ public class PaySpendingContractExcelModel implements Serializable { @Excel(name = "合同名称", width = 15) private String contractName; /**临时签订单位名称*/ - @Excel(name = "签订单位名称", width = 15) + @Excel(name = "签订单位", width = 15) private String signedCompanyTemporaryName; /**临时签订单位联系人名称*/ @Excel(name = "签订单位联系人", width = 15) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/pack/controller/PayPackCompanyProjectController.java b/jero-boot-incoming-payment/src/main/java/com/jero/pack/controller/PayPackCompanyProjectController.java index 6767bf5e..358c13bc 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/pack/controller/PayPackCompanyProjectController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/pack/controller/PayPackCompanyProjectController.java @@ -6,6 +6,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -60,13 +61,13 @@ import io.swagger.annotations.ApiOperation; @RequestMapping("/pack/payPackCompanyProject") @Slf4j public class PayPackCompanyProjectController extends JeroController { - @Autowired + @Resource private IPayPackCompanyProjectService payPackCompanyProjectService; - @Autowired + @Resource private IPayPackCompanyService payPackCompanyService; - @Autowired + @Resource private ISysBaseAPI sysBaseAPI; - @Autowired + @Resource private Environment env; /** @@ -268,45 +269,46 @@ public class PayPackCompanyProjectController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(payPackCompanyProject, request.getParameterMap()); - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - - // Step.2 获取导出数据 - List pageList = payPackCompanyProjectService.list(queryWrapper); - List exportList = null; + public ModelAndView exportXls(HttpServletRequest request,PayPackCompanyProjectInput input) { + if(Objects.isNull(input.getPackId())){ + throw new JeroBootException("打包id不能为空"); + } + PayPackCompany payPackCompany = payPackCompanyService.getById(input.getPackId()); + if(Objects.isNull(payPackCompany)){ + throw new JeroBootException("打包企业不存在"); + } + input.setCompanyId(payPackCompany.getCompanyId()); + input.setPackYear(payPackCompany.getPackYear()); + List pageList = payPackCompanyProjectService.queryListAll(input); + List exportList = null; // 过滤选中数据 String selections = request.getParameter("selections"); - List selectionList = new ArrayList<>(); if (oConvertUtils.isNotEmpty(selections)) { - selectionList = Arrays.asList(selections.split(",")); + List selectionList = Arrays.asList(selections.split(",")); + exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } else { + exportList = pageList; } if(CollectionUtils.isEmpty(pageList)){ throw new JeroBootException("没有数据可导出!"); } - PayPackCompany payPackCompany = payPackCompanyService.getById(pageList.get(0).getPackId()); - if(Objects.isNull(payPackCompany)){ - throw new JeroBootException("打包企业不存在!"); - } - exportList = payPackCompanyProjectService.getExportXls(selectionList,payPackCompany.getCompanyId()); - if(!CollectionUtils.isEmpty(exportList)){ - exportList.forEach(p->{ - if(!StringUtils.isBlank(p.getPhone())){ - p.setPhone(PasswordUtil.decrypt(p.getPhone())); - } - if(!StringUtils.isBlank(p.getEmail())){ - p.setEmail(PasswordUtil.decrypt(p.getEmail())); - } - }); - } + exportList.forEach(p->{ + if(!StringUtils.isBlank(p.getPhone())){ + p.setPhone(PasswordUtil.decrypt(p.getPhone())); + } + if(!StringUtils.isBlank(p.getEmail())){ + p.setEmail(PasswordUtil.decrypt(p.getEmail())); + } + }); + String str = JSON.toJSONString(pageList); + List list = JSONArray.parseArray(str,PayProjectExcel.class); // Step.3 AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); mv.addObject(NormalExcelConstants.FILE_NAME, "打包成员信息"); //此处设置的filename无效 ,前端会重更新设置一下 @@ -316,7 +318,7 @@ public class PayPackCompanyProjectController extends JeroController { - @Autowired + @Resource private IPayWorkingGroupDataFileService payWorkingGroupDataFileService; - @Autowired + @Resource private Environment env; + @Resource + private IOSSFileService iossFileService; + @Value("${jero.path.upload}") + private String upLoadPath; /** * 分页列表查询 @@ -198,16 +215,19 @@ public class PayWorkingGroupDataFileController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(payWorkingGroupDataFile, request.getParameterMap()); + // Step.2 获取导出数据 - List pageList = payWorkingGroupDataFileService.queryList(payWorkingGroupDataFile.getProjectId(),payWorkingGroupDataFile.getProjectType()); + List pageList = payWorkingGroupDataFileService.list(queryWrapper); List exportList = null; // 过滤选中数据 @@ -218,20 +238,166 @@ public class PayWorkingGroupDataFileController extends JeroController files = exportList.stream().map(PayWorkingGroupDataFile::getFileId).collect(Collectors.toList()); + LambdaQueryWrapper queryOSSFile = new LambdaQueryWrapper<>(); + queryOSSFile.in(OSSFile::getId,files); + List listOSSFile = iossFileService.list(queryOSSFile); + if(CollectionUtils.isEmpty(listOSSFile)){ + throw new JeroBootException("文件不存在!"); + } + //循环将文件写入压缩流 + DataOutputStream os = null; + //设置压缩流:直接写入response,实现边压缩边下载 + ZipOutputStream zipos = null; + try { + response.reset(); + response.setCharacterEncoding("utf-8"); + response.setContentType("multipart/form-data"); + //设置压缩包的名字 + //解决不同浏览器压缩包名字含有中文时乱码的问题 + String downloadName = UUID.randomUUID().toString() +".zip"; + String agent = request.getHeader("USER-AGENT"); + try { + //针对IE或者以IE为内核的浏览器: + if (agent.contains("MSIE") || agent.contains("Trident")) { + downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8"); + } else { + //非IE浏览器的处理: + downloadName = new String(downloadName.getBytes("UTF-8"),"ISO-8859-1"); + } + } catch (Exception e) { + e.printStackTrace(); + } + response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\""); + zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream())); + zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法 + for (OSSFile ossFile : listOSSFile) { + File file = new File(upLoadPath + "\\" + ossFile.getUrl()); + if(file.exists()){ + try { + //添加ZipEntry,并ZipEntry中写入文件流w + //这里,防止要下载的文件有重名的导致下载失败 + zipos.putNextEntry(new ZipEntry(ossFile.getFileName())); + os = new DataOutputStream(zipos); + InputStream is = new FileInputStream(file); + byte[] b = new byte[1024]; + int length = 0; + while((length = is.read(b))!= -1){ + os.write(b, 0, length); + } + is.close(); + zipos.closeEntry(); + }catch (Exception e){ + e.printStackTrace(); + } + } + } + assert os != null; + os.flush(); + }catch (Exception e){ + e.printStackTrace(); + }finally { + try { + if (os!= null){os.close();} + if (zipos != null){zipos.close();} + }catch (Exception e){ + e.printStackTrace(); + } + } } + /** + * 导出下载zip(多个以逗号隔开) + * + */ + @ApiOperation(value="企业端-资料下载多个zip(多个以逗号隔开)", notes="企业端-资料下载多个zip(多个以逗号隔开") + @GetMapping(value = "/zipFile") + public void zipFile(@RequestParam(name="ids",required = true) String ids) { + ArrayList fileIdList = new ArrayList<>(Arrays.asList(ids.split(","))); + ArrayList objects = new ArrayList<>(); + for(String id :fileIdList){ + OSSFile file = iossFileService.getById(id); + objects.add(file.getUrl()); + + } + zipFileDownload(objects); + + } + + /** + * 打包下载 + * @param paths 目前处理是文件绝对路径. + */ + public void zipFileDownload(List paths){ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); + //循环将文件写入压缩流 + DataOutputStream os = null; + //设置压缩流:直接写入response,实现边压缩边下载 + ZipOutputStream zipos = null; + try { + response.reset(); + response.setCharacterEncoding("utf-8"); + response.setContentType("multipart/form-data"); + //设置压缩包的名字 + //解决不同浏览器压缩包名字含有中文时乱码的问题 + String downloadName = UUID.randomUUID().toString() +".zip"; + String agent = request.getHeader("USER-AGENT"); + try { + //针对IE或者以IE为内核的浏览器: + if (agent.contains("MSIE") || agent.contains("Trident")) { + downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8"); + } else { + //非IE浏览器的处理: + downloadName = new String(downloadName.getBytes("UTF-8"),"ISO-8859-1"); + } + } catch (Exception e) { + e.printStackTrace(); + } + response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\""); + zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream())); + zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法 + for (String path : paths){ + File file = new File(upLoadPath + "\\" + path); + if(file.exists()){ + try { + //添加ZipEntry,并ZipEntry中写入文件流w + //这里,防止要下载的文件有重名的导致下载失败 + zipos.putNextEntry(new ZipEntry("folder/"+ file.getName())); + os = new DataOutputStream(zipos); + InputStream is = new FileInputStream(file); + byte[] b = new byte[100]; + int length = 0; + while((length = is.read(b))!= -1){ + os.write(b, 0, length); + } + is.close(); + zipos.closeEntry(); + }catch (Exception e){ + e.printStackTrace(); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + }finally { + try { + if (os!= null){ + os.flush(); + os.close(); + } + if (zipos != null){ + zipos.close(); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + } + /** * 通过excel导入数据 * diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java index f97c026e..c63fbd51 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java @@ -367,14 +367,10 @@ public class PayWorkingGroupSubItemController extends JeroController query = new LambdaQueryWrapper<>(); query.in(PayWorkingGroupSubItem::getId, Arrays.asList(ids.split(","))); query.eq(PayWorkingGroupSubItem::getWorkingGroupId, workingGroupId); - List list = payWorkingGroupSubItemService.list(); + query.ne(PayWorkingGroupSubItem::getChargeWay,PayProjectCommon.CHARGE_WAY3); + List list = payWorkingGroupSubItemService.list(query); if (!CollectionUtils.isEmpty(list)) { - List listNew = list.stream().filter(p -> !Objects.equals(p.getChargeWay(), PayProjectCommon.CHARGE_WAY3)).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(listNew)) { - return Result.error("存在来款方式不是收费通知的选项!"); - } - } else { - return Result.error("请选择项目!"); + return Result.error("存在来款方式不是收费通知的选项!"); } return Result.OK("来款方式都是收费通知!"); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java index c4ce3bb8..8d6e0805 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java @@ -60,7 +60,7 @@ public class PayWorkingGroupSubItem implements Serializable { /**企业联系人一id*/ @ApiModelProperty(value = "企业联系人一id") @Size(max = 32,message = "企业联系人一id长度不能大于32个字符") - @NotEmpty(message = "企业联系人一id不能为空") +// @NotEmpty(message = "企业联系人一id不能为空") private java.lang.String contactsIdOne; /**临时企业联系人一id*/ @ApiModelProperty(value = "临时企业联系人一id") @@ -109,7 +109,7 @@ public class PayWorkingGroupSubItem implements Serializable { private Integer chargeUse; /**邮寄联系人id*/ @ApiModelProperty(value = "邮寄联系人id") - @NotEmpty(message = "邮寄联系人id不能为空") +// @NotEmpty(message = "邮寄联系人id不能为空") @Size(max = 32,message = "邮寄联系人id长度不能大于32个字符") private java.lang.String mailContactsId; /**临时邮寄联系人id*/