bug修改

This commit is contained in:
梁琦涛
2021-10-08 11:22:46 +08:00
parent 532983fefa
commit b02031e449
17 changed files with 466 additions and 99 deletions
@@ -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.*;
@@ -78,7 +78,7 @@ public class PayIncomeContractCommon {
/**
* 支出合同excel表头
*/
public final static List<String> LIST_SPENDING_CONTRACT = Arrays.asList("合同编号","合同名称","签订单位名称","签订单位联系人","是否开口","负责人",
public final static List<String> LIST_SPENDING_CONTRACT = Arrays.asList("合同编号","合同名称","签订单位","签订单位联系人","是否开口","负责人",
"部门名称","签订合同总金额","税率","未税金额","合同签订日期","合同终止日期","合同约定主要时点",
"应收金额","已收金额","未收金额","账款状态","合同约定付款次数","是否打包","打包年份");
/**
@@ -492,11 +492,16 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
@RequiresPermissions("revenueContract:export")
@ApiOperation(value="收入合同-导出excel", notes="收入合同-导出excel")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, PayIncomeContract payIncomeContract) {
// Step.1 组装查询条件
QueryWrapper<PayIncomeContract> queryWrapper = QueryGenerator.initQueryWrapper(payIncomeContract, request.getParameterMap());
// Step.2 获取导出数据
List<PayIncomeContract> 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<PayIncomeContract> pageList = payIncomeContractService.queryList( payIncomeContract,chargeStatus,projectName,startTime,endTime);
List<PayIncomeContract> exportList = null;
// 过滤选中数据
@@ -535,9 +540,9 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
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("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")));
});
}
@@ -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<PaySpendingContract, IPaySpendingContractService> {
@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<PaySpendingCon
@RequiresPermissions("expenditureContract:export")
@GetMapping(value = "/exportXls")
@ApiOperation(value="支出合同-导出excel", notes="支出合同-导出excel")
public ModelAndView exportXls(HttpServletRequest request, PaySpendingContract paySpendingContract) {
public ModelAndView exportXls(HttpServletRequest request, PaySpendingContract paySpendingContract,
@RequestParam(name="startTime",required = false) String startTime,
@RequestParam(name="endTime",required = false) String endTime) {
// Step.1 组装查询条件
QueryWrapper<PaySpendingContract> queryWrapper = QueryGenerator.initQueryWrapper(paySpendingContract, request.getParameterMap());
// Step.2 获取导出数据
List<PaySpendingContract> pageList = paySpendingContractService.list(queryWrapper);
List<PaySpendingContract> pageList = paySpendingContractService.queryList( paySpendingContract.getContractNum(),
paySpendingContract.getContractName(),startTime,endTime);
List<PaySpendingContract> exportList = null;
// 过滤选中数据
@@ -49,4 +49,19 @@ public interface PayIncomeContractMapper extends BaseMapper<PayIncomeContract> {
* @Exception
*/
List<ProjectOutput> getAssociated(@Param("contractId") String contractId);
/**
* @Description excel 导出列表
* @Author lqt
* @Date 2021/9/3
* @Param payIncomeContract 收入合同
* @Param chargeStatus 来款状态
* @Param startTime 开始时间
* @Param endTime 结束时间
* @Return
* @Exception
*/
List<PayIncomeContract> queryList(@Param("payIncomeContract") PayIncomeContract payIncomeContract,
@Param("chargeStatus") String chargeStatus,@Param("projectName") String projectName,
@Param("startTime") String startTime, @Param("endTime") String endTime);
}
@@ -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<PaySpendingContrac
@Param("contractName") String contractName,@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
* @Description excel导出
* @Author lqt
* @Date 2021/9/8
* @Param
* @Return
* @Exception
*/
List<PaySpendingContract> queryList(@Param("contractNum") String contractNum,
@Param("contractName") String contractName,@Param("startTime") String startTime,
@Param("endTime") String endTime);
}
@@ -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 &lt; 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 &lt; 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 @@
</where>
group by pic.id order by pic.create_time desc
</select>
<select id="queryList" resultType="com.jero.contract.entity.PayIncomeContract">
SELECT * FROM
(
SELECT
pic.id,
pic.contract_num AS contractNum,
pic.contract_name AS contractName,
pic.signed_company_id AS signedCompanyId,
pic.signed_company_temporary_id AS signedCompanyTemporaryId,
pic.signed_company_temporary_name AS signedCompanyTemporaryName,
pic.signed_contacts_id AS signedContactsId,
pic.signed_contacts_temporary_id AS signedContactsTemporaryId,
pic.signed_contacts_temporary_name AS signedContactsTemporaryName,
pic.opening,
pic.principal_id AS principalId,
pic.principal_name AS principalName,
pic.department_name AS departmentName,
pic.contract_amount AS contractAmount,
pic.rate,
pic.no_tax_amount AS noTaxAmount,
pic.contract_date AS contractDate,
pic.termination_date AS terminationDate,
pic.contract_time_points AS contractTimePoints,
pic.accounts_receivable_amount AS accountsReceivableAmount,
pic.amount_received AS amountReceived,
pic.outstanding_amount AS outstandingAmount,
pic.account_status AS accountStatus,
pic.contract_payment_times AS contractPaymentTimes,
pic.pack,
pic.pack_year AS packYear,
pic.status,
if(pic.status = 2,1,0) as statusOrder,
pic.create_by AS createBy,
pic.create_time AS createTime,
pic.update_by AS updateBy,
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 is not null AND accounts_receivable_time &lt; 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
(
SELECT id,charge_project AS projectName FROM pay_common_project
UNION ALL
SELECT pwgs.id,pwg.working_group_project AS projectName FROM pay_working_group_subitem pwgs
LEFT JOIN pay_working_group pwg ON pwg.id = pwgs.working_group_id
WHERE pwg.working_group_project IS NOT NULL AND pwg.working_group_project != ''
UNION ALL
SELECT sit.id,meeting.meeting_name AS projectName FROM pay_meeting meeting
INNER JOIN pay_meeting_situation sit ON meeting.id = sit.meeting_id
WHERE meeting.meeting_name IS NOT NULL AND meeting.meeting_name != ''
UNION ALL
SELECT msub.id,pmp.project_name AS projectName FROM pay_member_project pmp
INNER JOIN pay_member_project_subitem msub ON pmp.id = msub.project_id
WHERE pmp.project_name IS NOT NULL AND pmp.project_name != ''
UNION ALL
SELECT tmsub.id,tmember.project_name AS projectName FROM tb_member_project tmember
INNER JOIN tb_member_project_subitem tmsub ON tmember.id=tmsub.project_id
where tmember.project_name IS NOT NULL AND tmember.project_name != ''
) project ON project.id = pica.project_id
GROUP BY pic.id
) aa
<where>
<if test="payIncomeContract.contractNum != null and payIncomeContract.contractNum != ''">
AND aa.contractNum LIKE CONCAT('%',CONCAT(#{payIncomeContract.contractNum},'%'))
</if>
<if test="payIncomeContract.contractName != null and payIncomeContract.contractName != ''">
AND aa.contractName LIKE CONCAT('%',CONCAT(#{payIncomeContract.contractName},'%'))
</if>
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT(aa.createTime,'%Y-%m-%d') >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT(aa.createTime,'%Y-%m-%d') &lt;= #{endTime}
</if>
<if test="payIncomeContract.status != null and payIncomeContract.status != ''">
AND aa.status = #{payIncomeContract.status}
</if>
<if test="chargeStatus != null and chargeStatus != ''">
AND aa.chargeStatus = #{chargeStatus}
</if>
<if test="projectName != null and projectName != ''">
AND aa.associatedProject LIKE CONCAT('%',CONCAT(#{projectName},'%'))
</if>
</where>
ORDER BY aa.chargeStatus desc,aa.statusOrder desc, aa.createTime desc
</select>
</mapper>
@@ -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 &lt; 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 &lt; 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
<where>
<if test="contractNum != null and contractNum != ''">
AND contract_num LIKE CONCAT('%',CONCAT(#{contractNum},'%'))
@@ -54,6 +54,59 @@
</if>
</where>
ORDER BY chargeStatus desc,create_time desc
</select>
<select id="queryList" resultType="com.jero.contract.entity.PaySpendingContract">
SELECT
id,
contract_num AS contractNum,
contract_name AS contractName,
signed_company_id AS signedCompanyId,
signed_company_temporary_id AS signedCompanyTemporaryId,
signed_company_temporary_name AS signedCompanyTemporaryName,
signed_contacts_id AS signedContactsId,
signed_contacts_temporary_id AS signedContactsTemporaryId,
signed_contacts_temporary_name AS signedContactsTemporaryName,
opening,
principal_id AS principaId,
principal_name AS principalName,
department_name AS departmentName,
contract_amount AS contractAmount,
rate,
no_tax_amount AS noTaxAmount,
contract_date AS contractDate,
termination_date AS terminationDate,
contract_time_points AS contractTimPoints,
accounts_receivable_amount AS accountsReceivableAmount,
amount_received AS amountReceived,
outstanding_amount AS outstandingAmount,
account_status AS accountStatus,
contract_payment_times AS contractPaymentTimes,
pack,
pack_year AS packYear,
create_by AS createBy,
create_time AS createTime,
update_by AS updateBy,
update_time AS updateTime,
(select if(count(*) > 0,1,0) from pay_spending_contract_installment
where contract_id = psc.id AND accounts_receivable_time is not null AND accounts_receivable_time &lt; 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 psc
<where>
<if test="contractNum != null and contractNum != ''">
AND contract_num LIKE CONCAT('%',CONCAT(#{contractNum},'%'))
</if>
<if test="contractName != null and contractName != ''">
AND contract_name LIKE CONCAT('%',CONCAT(#{contractName},'%'))
</if>
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT(create_time,'%Y-%m-%d') >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT(create_time,'%Y-%m-%d') &lt;= #{endTime}
</if>
</where>
ORDER BY chargeStatus desc,create_time desc
</select>
</mapper>
@@ -181,4 +181,18 @@ public interface IPayIncomeContractService extends IService<PayIncomeContract> {
* @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<PayIncomeContract> queryList(PayIncomeContract payIncomeContract, String chargeStatus,String projectName, String startTime, String endTime);
}
@@ -71,4 +71,13 @@ public interface IPaySpendingContractService extends IService<PaySpendingContrac
* @Exception
*/
void importExcel(HttpServletRequest req);
/**
* @Description excel导出
* @Author lqt
* @Date 2021/9/8
* @Param
* @Return
* @Exception
*/
List<PaySpendingContract> queryList(String contractNum,String contractName,String startTime,String endTime);
}
@@ -971,7 +971,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("收入合同不存在!");
}
if(!Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS1)
&& Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS4)){
&& !Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS4)){
throw new JeroBootException("收入合同不可删除!");
}
payIncomeContractService.removeById(id);
@@ -1089,4 +1089,9 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
payIncomeContractAssociatedService.save(payIncomeContractAssociated);
}
}
@Override
public List<PayIncomeContract> queryList(PayIncomeContract payIncomeContract, String chargeStatus, String projectName, String startTime, String endTime) {
return payIncomeContractMapper.queryList(payIncomeContract, chargeStatus, projectName, startTime, endTime);
}
}
@@ -479,7 +479,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}else{
sb.append("").append(n + 1).append("行,负责人不能为空,请修改!");
}
if(!Objects.isNull(paySpendingContract.getPack()) && StringUtils.isBlank(paySpendingContract.getPackYear())){
if(!Objects.isNull(paySpendingContract.getPack()) && Objects.equals(paySpendingContract.getPack(),PayIncomeContractCommon.PACK1) && StringUtils.isBlank(paySpendingContract.getPackYear())){
sb.append("").append(n + 1).append("行,打包年份不能为空,请修改!");
}
if(!Objects.isNull(paySpendingContract.getAccountsReceivableAmount()) && !Objects.isNull(paySpendingContract.getAmountReceived())
@@ -517,7 +517,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}else{
paySpendingContract.setAccountStatus(PayIncomeContractCommon.ACCOUNT_STATUS1);
}
paySpendingContract.setNoTaxAmount(paySpendingContract.getContractAmount().divide(new BigDecimal("1").add(paySpendingContract.getRate().divide(new BigDecimal("100")))));
paySpendingContract.setNoTaxAmount((Objects.isNull(paySpendingContract.getContractAmount()) ? new BigDecimal("0.00") : paySpendingContract.getContractAmount()).divide(new BigDecimal("1").add(paySpendingContract.getRate().divide(new BigDecimal("100"))),2,BigDecimal.ROUND_HALF_UP));
setPaySpendingContractAdd(paySpendingContract);
paySpendingContractService.save(paySpendingContract);
List<PaySpendingContractInstallment> listPaySpendingContractInstallment = p.getListInstallment();
@@ -535,6 +535,11 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}
}
@Override
public List<PaySpendingContract> queryList(String contractNum, String contractName, String startTime, String endTime) {
return paySpendingContractMapper.queryList( contractNum, contractName, startTime, endTime);
}
private PaySpendingContract setPaySpendingContractExcel(Map<Integer,String> map,Map<String, String> mapOpening,Map<String, String> mapPack,
int n,StringBuilder sb){
@@ -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)
@@ -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<PayPackCompanyProject, IPayPackCompanyProjectService> {
@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<PayPackCompa
* 导出excel
*
* @param request
* @param payPackCompanyProject
* @param input
*/
@AutoLog(value = "打包项目维护-导出excel",operateType = 6)
@RequiresPermissions("packProject:export")
@GetMapping(value = "/exportXls")
@ApiOperation(value="打包项目维护-导出excel", notes="打包项目维护-导出excel")
public ModelAndView exportXls(HttpServletRequest request, PayPackCompanyProject payPackCompanyProject) {
// Step.1 组装查询条件
QueryWrapper<PayPackCompanyProject> queryWrapper = QueryGenerator.initQueryWrapper(payPackCompanyProject, request.getParameterMap());
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// Step.2 获取导出数据
List<PayPackCompanyProject> pageList = payPackCompanyProjectService.list(queryWrapper);
List<PayProjectExcel> 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<PayCommonProject> pageList = payPackCompanyProjectService.queryListAll(input);
List<PayCommonProject> exportList = null;
// 过滤选中数据
String selections = request.getParameter("selections");
List<String> selectionList = new ArrayList<>();
if (oConvertUtils.isNotEmpty(selections)) {
selectionList = Arrays.asList(selections.split(","));
List<String> 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<PayProjectExcel> 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<PayPackCompa
exportParams.setImageBasePath(env.getProperty("jero.path.upload"));
//update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
mv.addObject(NormalExcelConstants.DATA_LIST, list);
return mv;
}
@@ -1,32 +1,45 @@
package com.jero.project.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayWorkingGroupDataFile;
import com.jero.project.service.IPayWorkingGroupDataFileService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
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.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -42,10 +55,14 @@ import io.swagger.annotations.ApiOperation;
@RequestMapping("/project/payWorkingGroupDataFile")
@Slf4j
public class PayWorkingGroupDataFileController extends JeroController<PayWorkingGroupDataFile, IPayWorkingGroupDataFileService> {
@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<PayWorking
@RequiresPermissions("fileMaintenance:export")
@ApiOperation(value="资料维护-导出excel", notes="资料维护-导出excel")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, PayWorkingGroupDataFile payWorkingGroupDataFile) {
public void exportXls(HttpServletRequest request,HttpServletResponse response, PayWorkingGroupDataFile payWorkingGroupDataFile) {
if(StringUtils.isBlank(payWorkingGroupDataFile.getProjectId())){
throw new JeroBootException("项目id不能为空!");
}
if(payWorkingGroupDataFile.getProjectType() != PayProjectCommon.PROJECT_TYPE_FILE1
&& payWorkingGroupDataFile.getProjectType() != PayProjectCommon.PROJECT_TYPE_FILE2){
if(!Objects.equals(payWorkingGroupDataFile.getProjectType(),PayProjectCommon.PROJECT_TYPE_FILE1)
&& !Objects.equals(payWorkingGroupDataFile.getProjectType(),PayProjectCommon.PROJECT_TYPE_FILE2)){
throw new JeroBootException("项目状态不正确!");
}
// Step.1 组装查询条件
QueryWrapper<PayWorkingGroupDataFile> queryWrapper = QueryGenerator.initQueryWrapper(payWorkingGroupDataFile, request.getParameterMap());
// Step.2 获取导出数据
List<PayWorkingGroupDataFile> pageList = payWorkingGroupDataFileService.queryList(payWorkingGroupDataFile.getProjectId(),payWorkingGroupDataFile.getProjectType());
List<PayWorkingGroupDataFile> pageList = payWorkingGroupDataFileService.list(queryWrapper);
List<PayWorkingGroupDataFile> exportList = null;
// 过滤选中数据
@@ -218,20 +238,166 @@ public class PayWorkingGroupDataFileController extends JeroController<PayWorking
} else {
exportList = pageList;
}
// Step.3 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
mv.addObject(NormalExcelConstants.FILE_NAME, "资料维护"); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(NormalExcelConstants.CLASS, PayWorkingGroupDataFile.class);
//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(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
return mv;
if(CollectionUtils.isEmpty(exportList)){
throw new JeroBootException("请选中文件!");
}
List<String> files = exportList.stream().map(PayWorkingGroupDataFile::getFileId).collect(Collectors.toList());
LambdaQueryWrapper<OSSFile> queryOSSFile = new LambdaQueryWrapper<>();
queryOSSFile.in(OSSFile::getId,files);
List<OSSFile> 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<String> fileIdList = new ArrayList<>(Arrays.asList(ids.split(",")));
ArrayList<String> objects = new ArrayList<>();
for(String id :fileIdList){
OSSFile file = iossFileService.getById(id);
objects.add(file.getUrl());
}
zipFileDownload(objects);
}
/**
* 打包下载
* @param paths 目前处理是文件绝对路径.
*/
public void zipFileDownload(List<String> 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导入数据
*
@@ -367,14 +367,10 @@ public class PayWorkingGroupSubItemController extends JeroController<PayWorkingG
LambdaQueryWrapper<PayWorkingGroupSubItem> query = new LambdaQueryWrapper<>();
query.in(PayWorkingGroupSubItem::getId, Arrays.asList(ids.split(",")));
query.eq(PayWorkingGroupSubItem::getWorkingGroupId, workingGroupId);
List<PayWorkingGroupSubItem> list = payWorkingGroupSubItemService.list();
query.ne(PayWorkingGroupSubItem::getChargeWay,PayProjectCommon.CHARGE_WAY3);
List<PayWorkingGroupSubItem> list = payWorkingGroupSubItemService.list(query);
if (!CollectionUtils.isEmpty(list)) {
List<PayWorkingGroupSubItem> 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("来款方式都是收费通知!");
}
@@ -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*/