From 0cbccc387d3796d240e42209f97fb6b87b917900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= <18222067976@163.com> Date: Thu, 2 Sep 2021 17:23:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E7=BB=84=E6=88=90=E5=91=98?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=EF=BC=8C=E8=AE=BE=E7=BD=AE=E6=94=B6=E8=B4=B9?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PayWorkingGroupSubItemController.java | 208 +++++++++++++++++- .../mapper/PayWorkingGroupSubItemMapper.java | 24 ++ .../xml/PayWorkingGroupSubItemMapper.xml | 60 +++++ .../IPayWorkingGroupSubItemService.java | 24 +- .../PayWorkingGroupSubItemServiceImpl.java | 18 ++ .../com/jero/project/vo/SetChargeInput.java | 39 ++++ 6 files changed, 366 insertions(+), 7 deletions(-) create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/project/vo/SetChargeInput.java 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 87186292..bc09dafe 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 @@ -1,9 +1,11 @@ package com.jero.project.controller; -import java.util.Arrays; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.api.vo.Result; @@ -11,7 +13,13 @@ import com.jero.common.exception.JeroBootException; import com.jero.common.service.ProjectDetailService; import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.PasswordUtil; import com.jero.common.util.ValidUtil; +import com.jero.company.common.PayCompanyManagementCommon; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.company.service.IPayContactsManagementService; import com.jero.project.common.PayProjectCommon; import com.jero.project.entity.PayWorkingGroup; import com.jero.project.entity.PayWorkingGroupSubItem; @@ -20,15 +28,22 @@ import com.jero.project.service.IPayWorkingGroupSubItemService; 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.project.vo.SetChargeInput; import com.jero.temporary.entity.PayCompanyManagementTemporary; import com.jero.temporary.entity.PayContactsManagementTemporary; import com.jero.temporary.service.IPayCompanyManagementTemporaryService; import com.jero.temporary.service.IPayContactsManagementTemporaryService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.jeecgframework.poi.excel.ExcelImportCheckUtil; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ImportParams; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -50,6 +65,10 @@ public class PayWorkingGroupSubItemController extends JeroController queryPageList(PayWorkingGroupSubItem payWorkingGroupSubitem, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + @RequestParam(name="paymentDate",required = false) String paymentDate, HttpServletRequest req) { if(!StringUtils.isBlank(payWorkingGroupSubitem.getChargeCompanyTemporaryName()) && payWorkingGroupSubitem.getChargeCompanyTemporaryName().length() > 50){ return Result.error("成员单位长度不能大于50个字符"); } - // todo 缺少到账,开票,邮寄记录查询 - QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payWorkingGroupSubitem, req.getParameterMap()); Page page = new Page(pageNo, pageSize); - IPage pageList = payWorkingGroupSubItemService.page(page, queryWrapper); + IPage pageList = payWorkingGroupSubItemService.queryPageList(page, payWorkingGroupSubitem,paymentDate); return Result.OK(pageList); } @@ -246,6 +264,31 @@ public class PayWorkingGroupSubItemController extends JeroController setCharge(@RequestBody SetChargeInput input) { + if(StringUtils.isBlank(input.getIds())){ + return Result.error("id不能为空!"); + } + String[] s = input.getIds().split(","); + for (String s1 : s) { + if(StringUtils.isBlank(s1)){ + return Result.error("id不能为空!"); + } + } + input.setList(Arrays.asList(input.getIds().split(","))); + payWorkingGroupSubItemService.updateBatchSetCharge(input); + return Result.OK("设置收费通知成功!"); + } + + /** * 通过id查询 @@ -300,8 +343,161 @@ public class PayWorkingGroupSubItemController extends JeroController importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, PayWorkingGroupSubItem.class); + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + for (Map.Entry entity : fileMap.entrySet()) { + MultipartFile file = entity.getValue();// 获取上传文件对象 + ImportParams params = new ImportParams(); + params.setTitleRows(1); + params.setHeadRows(1); + try { + //导入Excel格式校验,看匹配的字段文本概率 + Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), PayWorkingGroupSubItem.class, params); + if(!t){ + throw new RuntimeException("导入Excel校验失败 !"); + } + List list = ExcelImportUtil.importExcel(file.getInputStream(), PayWorkingGroupSubItem.class, params); + if(!CollectionUtils.isEmpty(list)){ + // 校验重复成员的集合 + List listCompanyAndContacts = new ArrayList<>(); + StringBuilder msg = new StringBuilder(); + // 获取excel中的企业名称 + List listCompanyName = list.stream().map(PayWorkingGroupSubItem::getChargeCompanyTemporaryName).collect(Collectors.toList()); + // 获取excel企业信息 + LambdaQueryWrapper companyWrapper = new LambdaQueryWrapper<>(); + companyWrapper.in(PayCompanyManagement::getCompanyName,listCompanyName); + List listCompanyInfo = payCompanyManagementService.list(companyWrapper); + if(CollectionUtils.isEmpty(listCompanyInfo)){ + throw new RuntimeException("excel中企业不存在 !"); + } + // 获取excel中联系人名称 + List listContactsName = list.stream().map(PayWorkingGroupSubItem::getContactsTemporaryNameOne).collect(Collectors.toList()); + // 获取excel联系人信息 + LambdaQueryWrapper contactsWrapper = new LambdaQueryWrapper<>(); + contactsWrapper.in(PayContactsManagement::getName,listContactsName); + List listContactsInfo = payContactsManagementService.list(contactsWrapper); + if(CollectionUtils.isEmpty(listContactsInfo)){ + throw new RuntimeException("excel中联系人不存在 !"); + } + list.forEach(p->{ + int count = list.indexOf(p); + // 校验企业名称 + List listCompany = new ArrayList<>(); + if(StringUtils.isBlank(p.getChargeCompanyTemporaryName())){ + msg.append("第 ").append(count + 3).append(" 行:企业名称不能为空,请修改。
"); + }else{ + // 通过企业名称获取企业id + listCompany = listCompanyInfo.stream().filter(item-> + Objects.equals(item.getCompanyName(),p.getChargeCompanyTemporaryName())).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(listCompany)){ + msg.append("第 ").append(count + 3).append(" 行:企业名称不存在,请修改。
"); + }else{ + p.setChargeCompanyId(listCompany.get(0).getId()); + + } + } + // 校验联系人一 + if(StringUtils.isBlank(p.getContactsTemporaryNameOne())){ + msg.append("第 ").append(count + 3).append(" 行:联系人不能为空,请修改。
"); + }else{ + if(!CollectionUtils.isEmpty(listCompany)){ + // 通过联系人获取联系人id + List finalListCompany = listCompany; + List listContacts = listContactsInfo.stream().filter(item-> + Objects.equals(item.getName(),p.getContactsTemporaryNameOne()) + && Objects.equals(item.getCompanyId(), finalListCompany.get(0).getId())).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(listContacts)){ + msg.append("第 ").append(count + 3).append(" 行:该企业下不存在该联系人一,请修改。
"); + }else{ + p.setContactsIdOne(listContacts.get(0).getId()); + } + } + } + // 校验联系人二 + if(!StringUtils.isBlank(p.getContactsTemporaryNameTwo()) && !CollectionUtils.isEmpty(listCompany)){ + if(!CollectionUtils.isEmpty(listCompany)){ + // 通过联系人获取联系人id + List finalListCompany = listCompany; + List listContacts = listContactsInfo.stream().filter(item-> + Objects.equals(item.getName(),p.getContactsTemporaryNameTwo()) + && Objects.equals(item.getCompanyId(), finalListCompany.get(0).getId())).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(listContacts)){ + msg.append("第 ").append(count + 3).append(" 行:该企业下不存在该联系人二,请修改。
"); + }else{ + p.setContactsIdTwo(listContacts.get(0).getId()); + } + } + } + // 校验联系人三 + if(!StringUtils.isBlank(p.getContactsTemporaryNameThree()) && !CollectionUtils.isEmpty(listCompany)){ + if(!CollectionUtils.isEmpty(listCompany)){ + // 通过联系人获取联系人id + List finalListCompany = listCompany; + List listContacts = listContactsInfo.stream().filter(item-> + Objects.equals(item.getName(),p.getContactsTemporaryNameThree()) + && Objects.equals(item.getCompanyId(), finalListCompany.get(0).getId())).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(listContacts)){ + msg.append("第 ").append(count + 3).append(" 行:该企业下不存在该联系人三,请修改。
"); + }else{ + p.setContactsIdThree(listContacts.get(0).getId()); + } + } + } + // 校验邮寄联系人 + if(StringUtils.isBlank(p.getMailContactsTemporaryName())){ + msg.append("第 ").append(count + 3).append(" 行:邮寄联系人不能为空,请修改。
"); + }else{ + if(!CollectionUtils.isEmpty(listCompany)){ + // 通过联系人获取联系人id + List finalListCompany = listCompany; + List listContacts = listContactsInfo.stream().filter(item-> + Objects.equals(item.getName(),p.getMailContactsTemporaryName()) + && Objects.equals(item.getCompanyId(), finalListCompany.get(0).getId())).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(listContacts)){ + msg.append("第 ").append(count + 3).append(" 行:该企业下不存在该:邮寄联系人,请修改。
"); + }else{ + p.setMailContactsId(listContacts.get(0).getId()); + } + } + } + // 校验成员唯一性 + List listCompanyAndContactsNew = listCompanyAndContacts.stream().filter(item->Objects.equals(p.getChargeCompanyTemporaryName(),item.getChargeCompanyTemporaryName()) + && Objects.equals(p.getContactsTemporaryNameOne(),item.getContactsTemporaryNameOne())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listCompanyAndContactsNew)){ + msg.append("第 ").append(count + 3).append(" 行:工作组成员重复出现,请修改。
"); + } + listCompanyAndContacts.add(p); + + // 校验字段值 + StringBuilder s = ValidUtil.validateExcel(p,(count+3)); + if(!StringUtils.isBlank(s)){ + msg.append(s); + } + }); + if(!StringUtils.isBlank(msg)){ + return Result.error(msg.toString()); + } + // 拷贝企业,联系人 + list.forEach(p->{ + setPayWorkingGroupSubItem(p); + }); + // 更新数据 + payWorkingGroupSubItemService.saveBatch(list); + } + } catch (Exception e) { + log.error(e.getMessage(),e); + return Result.error("文件导入失败!"); + } finally { + try { + file.getInputStream().close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return Result.OK("文件导入成功!"); } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupSubItemMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupSubItemMapper.java index 29780937..bc6f9b41 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupSubItemMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupSubItemMapper.java @@ -1,7 +1,11 @@ package com.jero.project.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.project.entity.PayWorkingGroupSubItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.project.vo.SetChargeInput; +import org.apache.ibatis.annotations.Param; /** * @Description: pay_working_group_subitem @@ -10,5 +14,25 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @Version: V1.0 */ public interface PayWorkingGroupSubItemMapper extends BaseMapper { + /** + * @Description 批量更新收费通知号 + * @Author lqt + * @Date 2021/9/2 + * @Param + * @Return + * @Exception + */ + void updateBatchSetCharge(SetChargeInput input); + + /** + * @Description 分页查询 + * @Author lqt + * @Date 2021/9/2 + * @Param + * @Return + * @Exception + */ + IPage queryPageList(Page page, @Param("payWorkingGroupSubItem") PayWorkingGroupSubItem payWorkingGroupSubItem, + @Param("paymentDate") String paymentDate); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupSubItemMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupSubItemMapper.xml index 5dd9ff5b..201ffe53 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupSubItemMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupSubItemMapper.xml @@ -2,4 +2,64 @@ + + UPDATE pay_working_group_subitem SET + receivable_amount = #{receivableAmount}, + charge_notice_no = #{chargeNoticeNo}, + charge_notice_id = #{chargeNoticeId} + WHERE id IN + + #{item} + + + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/IPayWorkingGroupSubItemService.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/IPayWorkingGroupSubItemService.java index 5a6147ea..acc04018 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/IPayWorkingGroupSubItemService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/IPayWorkingGroupSubItemService.java @@ -1,7 +1,12 @@ package com.jero.project.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.project.entity.PayWorkingGroupSubItem; import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.project.vo.SetChargeInput; + +import java.util.List; /** * @Description: pay_working_group_subitem @@ -10,5 +15,22 @@ import com.baomidou.mybatisplus.extension.service.IService; * @Version: V1.0 */ public interface IPayWorkingGroupSubItemService extends IService { - + /** + * @Description 批量更新收费通知号 + * @Author lqt + * @Date 2021/9/2 + * @Param + * @Return + * @Exception + */ + void updateBatchSetCharge(SetChargeInput input); + /** + * @Description 分页查询 + * @Author lqt + * @Date 2021/9/2 + * @Param + * @Return + * @Exception + */ + IPage queryPageList(Page page,PayWorkingGroupSubItem payWorkingGroupSubitem,String paymentDate); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java index 29ae7a3b..addd98b9 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java @@ -1,12 +1,17 @@ package com.jero.project.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.project.service.IPayWorkingGroupSubItemService; import com.jero.project.entity.PayWorkingGroupSubItem; import com.jero.project.mapper.PayWorkingGroupSubItemMapper; +import com.jero.project.vo.SetChargeInput; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import javax.annotation.Resource; + /** * @Description: pay_working_group_subitem * @Author: jeecg-boot @@ -16,4 +21,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl implements IPayWorkingGroupSubItemService { + @Resource + private PayWorkingGroupSubItemMapper payWorkingGroupSubItemMapper; + + @Override + public void updateBatchSetCharge(SetChargeInput input) { + payWorkingGroupSubItemMapper.updateBatchSetCharge(input); + } + + @Override + public IPage queryPageList(Page page, PayWorkingGroupSubItem payWorkingGroupSubitem,String paymentDate) { + return payWorkingGroupSubItemMapper.queryPageList(page,payWorkingGroupSubitem,paymentDate); + } + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/vo/SetChargeInput.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/vo/SetChargeInput.java new file mode 100644 index 00000000..1b4a5f33 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/vo/SetChargeInput.java @@ -0,0 +1,39 @@ +package com.jero.project.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import javax.validation.constraints.Max; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.List; + +@Data +public class SetChargeInput implements Serializable { + /** + * 项目ids + */ + @ApiModelProperty(value = "项目ids") + @NotEmpty(message = "项目ids不能为空") + private String ids; + /**应收金额(元)*/ + @ApiModelProperty(value = "应收金额(元)") + @Max(value = 999999999,message = "应收金额(元)格式错误") + @NotNull(message = "应收金额(元)不能为空!") + private Integer receivableAmount; + /**收费通知号*/ + @ApiModelProperty(value = "收费通知号") + @NotEmpty(message = "收费通知号不能为空") + @Size(max = 50,message = "收费通知号长度不能大于50个字符") + private String chargeNoticeNo; + /**收费通知文件id*/ + @ApiModelProperty(value = "收费通知文件id") + @NotEmpty(message = "收费通知文件id不能为空") + @Size(max = 32,message = "收费通知文件id长度不能大于32个字符") + private String chargeNoticeId; + /** + * 项目id集合 + */ + private List list; +}