新增起草组管理,以及起草组成员的管理

This commit is contained in:
sunzheng
2024-01-05 08:53:53 +08:00
parent 2de35eb94a
commit e594e5ba35
21 changed files with 2831 additions and 1 deletions
@@ -0,0 +1,246 @@
package com.jero.drafting.controller;
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.service.RolePermissionService;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.drafting.service.IPayDraftingGroupService;
import com.jero.drafting.vo.PayDraftingGroupVo;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.service.IPayWorkingGroupService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 起草组表 前端控制器
* </p>
*
* @author sz
* @since 2024-01-02
*/
@Api(tags = "起草组项目")
@RestController
@RequestMapping("/drafting/payDraftingGroup")
@Slf4j
public class PayDraftingGroupController extends JeroController<PayDraftingGroup, IPayDraftingGroupService> {
@Resource
private IPayDraftingGroupService payDraftingGroupService;
@Resource
private RolePermissionService rolePermissionService;
@Resource
private IPayWorkingGroupService payWorkingGroupService;
/**
* 分页列表查询
*
* @param payDraftingGroup 起草组项目
* @param pageNo 页数
* @param pageSize 条数
*/
// @RequiresPermissions("draftingGroupProject:search")
@ApiOperation(value="起草组项目-分页列表查询", notes="起草组项目-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(PayDraftingGroup payDraftingGroup,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
// 校验参数
if(!StringUtils.isBlank(payDraftingGroup.getDraftingGroupProject()) && payDraftingGroup.getDraftingGroupProject().length() > 50){
return Result.error("起草组项目长度不能大于50个字符");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!rolePermissionService.getRolePermission("draftingGroupProject:search")){
payDraftingGroup.setPrincipalA(sysUser.getId());
payDraftingGroup.setPrincipalB(sysUser.getId());
}
// 分页条件查询
Page<PayDraftingGroupVo> page = new Page<>(pageNo, pageSize);
if(!StringUtils.isBlank(payDraftingGroup.getDraftingGroupProject())){
payDraftingGroup.setDraftingGroupProject(oConvertUtils.replaceAllPercent(payDraftingGroup.getDraftingGroupProject()));
}
IPage<PayDraftingGroupVo> pageList = payDraftingGroupService.queryPageList(page,payDraftingGroup);
if (!Objects.isNull(pageList)) {
List<PayDraftingGroupVo> listPayDraftingGroupVo = pageList.getRecords();
if (!CollectionUtils.isEmpty(listPayDraftingGroupVo)) {
listPayDraftingGroupVo.forEach(p->{
if(!rolePermissionService.getRolePermission("generalProject:search") && Objects.equals(p.getPrincipalIdB(),sysUser.getId())){
p.setCheckoutOperation(PayProjectCommon.CHECKOUT_OPERATION2);
}else{
p.setCheckoutOperation(PayProjectCommon.CHECKOUT_OPERATION1);
}
// 根据工作组id查询对应的工作组名称
if (StringUtils.isNotBlank(p.getWorkingGroupId())) {
PayWorkingGroup payWorkingGroup = payDraftingGroupService.getPayWorkingGroupNameById(p.getWorkingGroupId());
if (!Objects.isNull(payWorkingGroup)) {
p.setWorkingGroupName(payWorkingGroup.getWorkingGroupProject());
}
}
});
pageList.setRecords(listPayDraftingGroupVo);
}
}
return Result.OK(pageList);
}
/**
* 添加
*
* @param payDraftingGroup 起草组项目
* @return
*/
@AutoLog(value = "起草组项目-添加",operateType = 1)
// @RequiresPermissions("draftingGroupProject:add")
@ApiOperation(value="起草组项目-添加", notes="起草组项目-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayDraftingGroup payDraftingGroup) {
// 参数校验
StringBuilder msg = ValidUtil.validateAll(payDraftingGroup);
if(!StringUtils.isBlank(msg)){
return Result.error(msg.toString());
}
try {
LambdaQueryWrapper<PayDraftingGroup> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PayDraftingGroup::getDraftingGroupProject,payDraftingGroup.getDraftingGroupProject());
PayDraftingGroup payDraftingGroupDB = payDraftingGroupService.getOne(queryWrapper);
if(!Objects.isNull(payDraftingGroupDB)) {
return Result.error("起草组项目已存在!");
}
}catch (Exception e){
log.info("起草组项目-添加",e);
return Result.error("起草组项目已存在!");
}
payDraftingGroupService.setPayDraftingGroup(payDraftingGroup);
payDraftingGroupService.save(payDraftingGroup);
return Result.OK("添加成功!");
}
/**
* 通过id删除
*
* @param id 工作组项目id
* @return
*/
@AutoLog(value = "起草组项目-通过id删除",operateType = 2)
// @RequiresPermissions("draftingGroupProject:delete")
@ApiOperation(value="起草组项目-通过id删除", notes="起草组项目-通过id删除")
@GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id") String id) {
if(StringUtils.isBlank(id)){
return Result.error("id不能为空!");
}
payDraftingGroupService.deleteById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids 起草组项目ids 逗号分隔
* @return
*/
// @RequiresPermissions("draftingGroupProject:batchDel")
@ApiOperation(value="起草组项目-批量删除", notes="起草组项目-批量删除")
@GetMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids") String ids) {
if(StringUtils.isBlank(ids)){
return Result.error("id不能为空!");
}
String[] s = ids.split(",");
for (String s1 : s) {
if(StringUtils.isBlank(s1)){
return Result.error("id不能为空!");
}
}
payDraftingGroupService.deleteByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 复制
*
* @param payDraftingGroup 起草组项目
* @return
*/
@AutoLog(value = "起草组项目-复制",operateType = 3)
// @RequiresPermissions("draftingGroupProject:copy")
@ApiOperation(value="起草组项目-复制", notes="起草组项目-复制")
@PostMapping(value = "/copy")
public Result<?> copy(@RequestBody PayDraftingGroup payDraftingGroup) {
if(StringUtils.isBlank(payDraftingGroup.getId())){
return Result.error("起草组id不能为空!");
}
PayDraftingGroup payDraftingGroupOld = payDraftingGroupService.getById(payDraftingGroup.getId());
if(Objects.isNull(payDraftingGroupOld)){
return Result.error("起草组不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!rolePermissionService.getRolePermission("draftingGroupProject:copy") && !Objects.equals(payDraftingGroupOld.getPrincipalIdA(),sysUser.getId())){
return Result.error(payDraftingGroupOld.getDraftingGroupProject() + "数据权限不足!");
}
payDraftingGroupService.copy(payDraftingGroup);
return Result.OK("复制成功!");
}
/**
* 通过id查询
*
* @param id 起草组项目id
* @return
*/
@ApiOperation(value="起草组项目-通过id查询", notes="起草组项目-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id") String id) {
if (StringUtils.isBlank(id)) {
return Result.error("起草组id不能为空");
}
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(id);
if(Objects.isNull(payDraftingGroup)) {
return Result.error("未找到对应数据");
}
return Result.OK(payDraftingGroup);
}
/**
* 查询所有工作组
* @return
*/
@ApiOperation(value="工作组项目-查询所有工作组", notes="工作组项目-查询所有工作组")
@GetMapping(value = "/queryAllWorkingGroupsIdAndName")
public Result<?> queryAllWorkingGroupsIdAndName() {
QueryWrapper<PayWorkingGroup> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id","working_group_project");
queryWrapper.lambda().groupBy(PayWorkingGroup::getWorkingGroupProject);
List<PayWorkingGroup> payWorkingGroups = payWorkingGroupService.list(queryWrapper);
List<HashMap<String, String>> mapList = payWorkingGroups.stream().map(p -> {
HashMap<String, String> map = new HashMap<>();
map.put("id", p.getId());
map.put("workingGroupProject", p.getWorkingGroupProject());
return map;
}).collect(Collectors.toList());
return Result.OK(mapList);
}
}
@@ -0,0 +1,27 @@
package com.jero.drafting.controller;
import com.jero.common.system.base.controller.JeroController;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
import com.jero.drafting.service.IPayDraftingGroupSubItemService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 起草组成员企业联系人表 前端控制器
* </p>
*
* @author sz
* @since 2024-01-02
*/
@Api(tags="起草组成员")
@RestController
@RequestMapping("/drafting/payDraftingGroupSubitemContacts")
@Slf4j
public class PayDraftingGroupSubItemContactsController extends JeroController<PayDraftingGroupSubItemContacts, IPayDraftingGroupSubItemContactsService> {
}
@@ -0,0 +1,372 @@
package com.jero.drafting.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.service.ProjectDetailService;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.common.vo.ProjectDetailVO;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import com.jero.drafting.service.IPayDraftingGroupService;
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
import com.jero.drafting.service.IPayDraftingGroupSubItemService;
import com.jero.drafting.vo.PayDraftingGroupSubItemExcel;
import com.jero.modules.system.service.ISysUserService;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.entity.PayWorkingGroupSubItemContacts;
import com.jero.project.vo.excel.PayWorkingGroupSubItemExcel;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 起草组成员表 前端控制器
* </p>
*
* @author sz
* @since 2024-01-02
*/
@Api(tags="起草组成员")
@RestController
@RequestMapping("/drafting/payDraftingGroupSubitem")
@Slf4j
public class PayDraftingGroupSubItemController extends JeroController<PayDraftingGroupSubItem, IPayDraftingGroupSubItemService> {
@Resource
private IPayDraftingGroupService payDraftingGroupService;
@Resource
private IPayDraftingGroupSubItemService payDraftingGroupSubItemService;
@Resource
private IPayDraftingGroupSubItemContactsService payDraftingGroupSubItemContactsService;
@Resource
private RolePermissionService rolePermissionService;
@Resource
private IPayContactsManagementTemporaryService payContactsManagementTemporaryService;
/**
* 分页列表查询
*
* @param payDraftingGroupSubItem 起草组成员
* @param pageNo 页数
* @param pageSize 条数
* @param paymentDate 日期
* @return
*/
// @RequiresPermissions("draftingGroupMember:search")
@ApiOperation(value = "起草组成员-分页列表查询", notes = "起草组成员-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(PayDraftingGroupSubItem payDraftingGroupSubItem,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "paymentDate", required = false) String paymentDate) {
if (!StringUtils.isBlank(payDraftingGroupSubItem.getChargeCompanyTemporaryName()) && payDraftingGroupSubItem.getChargeCompanyTemporaryName().length() > 50) {
return Result.error("成员单位长度不能大于50个字符");
}
if (StringUtils.isBlank(payDraftingGroupSubItem.getDraftingGroupId())) {
return Result.error("起草组id不能为空!");
}
if(!StringUtils.isBlank(payDraftingGroupSubItem.getChargeCompanyTemporaryName())){
payDraftingGroupSubItem.setChargeCompanyTemporaryName(oConvertUtils.replaceAllPercent(payDraftingGroupSubItem.getChargeCompanyTemporaryName()));
}
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(payDraftingGroupSubItem.getDraftingGroupId());
if(Objects.isNull(payDraftingGroup)){
return Result.error("起草组不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!rolePermissionService.getRolePermission("draftingGroupMember:search") && !Objects.equals(payDraftingGroup.getPrincipalIdA(),sysUser.getId())){
return Result.error("数据权限不足!");
}
Page<PayDraftingGroupSubItem> page = new Page<>(pageNo, pageSize);
IPage<PayDraftingGroupSubItem> pageList = payDraftingGroupSubItemService.queryPageList(page, payDraftingGroupSubItem, paymentDate);
return Result.OK(pageList);
}
/**
* 添加
*
* @param payDraftingGroupSubItem 起草组成员
* @return
*/
@AutoLog(value = "起草组成员-添加",operateType = 2)
// @RequiresPermissions("draftingGroupMember:add")
@ApiOperation(value = "起草组成员-添加", notes = "起草组成员-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayDraftingGroupSubItem payDraftingGroupSubItem) {
StringBuilder msg = ValidUtil.validateAll(payDraftingGroupSubItem);
if (!StringUtils.isBlank(msg)) {
return Result.error(msg.toString());
}
payDraftingGroupSubItemService.addPayDraftingGroupSubItem(payDraftingGroupSubItem);
return Result.OK("添加成功!");
}
/**
* 通过id删除
*
* @param id 起草组成员id
* @return
*/
@AutoLog(value = "起草组成员-删除",operateType = 4)
// @RequiresPermissions("draftingGroupMember:delete")
@ApiOperation(value = "起草组成员-通过id删除", notes = "起草组成员-通过id删除")
@GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name = "id") String id) {
payDraftingGroupSubItemService.delete(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids 起草组成员ids 逗号分隔
* @return
*/
// @RequiresPermissions("draftingGroupMember:batchDel")
@ApiOperation(value = "起草组成员-批量删除", notes = "起草组成员-批量删除")
@GetMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name = "ids") String ids) {
payDraftingGroupSubItemService.deleteBatch(ids);
return Result.OK("批量删除成功!");
}
/**
* 编辑
*
* @param payDraftingGroupSubItem 工作组成员
* @return
*/
@AutoLog(value = "工作组成员-修改",operateType = 3)
// @RequiresPermissions("draftingGroupMember:edit")
@ApiOperation(value = "工作组成员-编辑", notes = "工作组成员-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayDraftingGroupSubItem payDraftingGroupSubItem) {
StringBuilder msg = ValidUtil.validateAll(payDraftingGroupSubItem);
if (!StringUtils.isBlank(msg)) {
return Result.error(msg.toString());
}
payDraftingGroupSubItemService.editPayWorkingGroupSubItem(payDraftingGroupSubItem);
return Result.OK("编辑成功!");
}
// /**
// * 通过id查询
// *
// * @param id 起草组成员
// * @return
// */
// @ApiOperation(value = "起草组成员-通过id查询", notes = "起草组成员-通过id查询")
// @GetMapping(value = "/queryById")
// public Result<?> queryById(@RequestParam(name = "id") String id) {
// PayDraftingGroupSubItem payDraftingGroupSubitem = payDraftingGroupSubItemService.getById(id);
// if (payDraftingGroupSubitem == null) {
// return Result.error("未找到对应数据");
// }
// ProjectDetailVO projectDetailVO = projectDetailService.getProjectDetail(payDraftingGroupSubitem.getId());
// return Result.OK(projectDetailVO);
// }
/**
* 模板下载
*
* @return
*/
// @RequiresPermissions("draftingGroupMember:downTemplate")
@ApiOperation(value = "起草组成员-模板下载", notes = "起草组成员-模板下载")
@GetMapping(value = "/downloadExcelModel")
public ModelAndView downloadExcelModel() {
return super.exportTemplate(PayDraftingGroupSubItem.class, "起草组成员导入模板");
}
/**
* 通过excel导入数据
*
* @param request
* @return
*/
@AutoLog(value = "起草组成员-excel导入数据",operateType = 5)
// @RequiresPermissions("draftingGroupMember:import")
@PostMapping(value = "/importExcel")
@ApiOperation(value = "起草组成员-通过excel导入数据", notes = "起草组成员-通过excel导入数据")
public Result<?> importExcel(HttpServletRequest request) {
List<Object> excelData = super.getExcelData(request, PayDraftingGroupSubItem.class);
if (excelData.isEmpty()) {
throw new JeroBootException("导入数据为空,请填写数据之后重新导入!");
}
payDraftingGroupSubItemService.importExcel(request);
return Result.OK("文件导入成功!");
}
/**
* 导出excel
*
* @param request
* @param payDraftingGroupSubItem 起草组成员
*/
@AutoLog(value = "起草组成员-导出excel",operateType = 6)
// @RequiresPermissions("draftingGroupMember:export")
@GetMapping(value = "/exportXls")
@ApiOperation(value = "起草组成员-导出excel", notes = "起草组成员-导出excel")
public ModelAndView exportXls(HttpServletRequest request,
PayDraftingGroupSubItem payDraftingGroupSubItem,
@RequestParam(name = "paymentDate", required = false) String paymentDate) {
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(payDraftingGroupSubItem.getDraftingGroupId());
if(Objects.isNull(payDraftingGroup)){
throw new JeroBootException("起草组不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!rolePermissionService.getRolePermission("draftingGroupMember:export")
&& !Objects.equals(payDraftingGroup.getPrincipalIdA(),sysUser.getId())
&& !Objects.equals(payDraftingGroup.getPrincipalIdB(),sysUser.getId())){
throw new JeroBootException("数据权限不足!");
}
// Step.2 获取导出数据
Page<PayDraftingGroupSubItem> page = new Page<>(-1, -1);
IPage<PayDraftingGroupSubItem> payWorkingGroupSubItemIPage = payDraftingGroupSubItemService.queryPageList(page, payDraftingGroupSubItem, paymentDate);
List<PayDraftingGroupSubItem> pageList = payWorkingGroupSubItemIPage.getRecords();
List<PayDraftingGroupSubItem> exportList;
// 过滤选中数据
String selections = request.getParameter("selections");
if (oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(","));
exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
} else {
exportList = pageList;
}
List<PayDraftingGroupSubItemExcel> excelList = new ArrayList<>();
if(!CollectionUtils.isEmpty(exportList)){
// 拿到所有的起草组成员id的list
List<String> listDGSIds = exportList.stream().map(PayDraftingGroupSubItem::getId).collect(Collectors.toList());
LambdaQueryWrapper<PayDraftingGroupSubItemContacts> queryPayDraftingGroupSubItemContacts = new LambdaQueryWrapper<>();
queryPayDraftingGroupSubItemContacts.in(PayDraftingGroupSubItemContacts::getDraftingGroupSubId,listDGSIds);
// 拿到所有起草组成员对应的起草组联系人信息
List<PayDraftingGroupSubItemContacts> payDraftingGroupSubItemContactsList = payDraftingGroupSubItemContactsService.list(queryPayDraftingGroupSubItemContacts);
for (PayDraftingGroupSubItem draftingGroupSubItem : exportList) {
PayDraftingGroupSubItemExcel excel = new PayDraftingGroupSubItemExcel();
BeanUtils.copyProperties(draftingGroupSubItem,excel);
// 拿到该成员对应联系人信息的list
List<PayDraftingGroupSubItemContacts> listPayDraftingGroupSubItemContacts = payDraftingGroupSubItemContactsList.stream().filter(o->Objects.equals(draftingGroupSubItem.getId(),o.getDraftingGroupSubId())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listPayDraftingGroupSubItemContacts)){
listPayDraftingGroupSubItemContacts.sort(Comparator.comparing(PayDraftingGroupSubItemContacts::getOrderNum));
// 拿到该名成员对应的联系人的id的list
List<String> listIds = listPayDraftingGroupSubItemContacts.stream().map(PayDraftingGroupSubItemContacts::getContactsTemporaryId).collect(Collectors.toList());
// 拿到所有联系人信息对应的详情信息
List<PayContactsManagementTemporary> listPayContactsManagementTemporary = payContactsManagementTemporaryService.listByIds(listIds);
for (int i = 0; i < listPayDraftingGroupSubItemContacts.size(); i++) {
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = listPayDraftingGroupSubItemContacts.get(i);
// 拿到该联系人的详情信息
List<PayContactsManagementTemporary> temporary = listPayContactsManagementTemporary.stream().filter(s->Objects.equals(s.getId(),payDraftingGroupSubItemContacts.getContactsTemporaryId())).collect(Collectors.toList());
String email = "";
String phone = "";
String name = payDraftingGroupSubItemContacts.getContactsTemporaryName();
String remark = payDraftingGroupSubItemContacts.getRemarks();
if(!CollectionUtils.isEmpty(temporary)){
email = temporary.get(0).getEmail();
// 解密
if (StringUtils.isNotBlank(email)){
email = PasswordUtil.decrypt(email);
}
phone = temporary.get(0).getPhone();
if (StringUtils.isNotBlank(phone)){
phone = PasswordUtil.decrypt(phone);
}
}
switch (i){
case 0:
excel.setContactsNameOne(name);
excel.setRemarksOne(remark);
excel.setContactsEmailOne(email);
excel.setContactsPhoneOne(phone);
break;
case 1:
excel.setContactsNameTwo(name);
excel.setRemarksTwo(remark);
excel.setContactsEmailTwo(email);
excel.setContactsPhoneTwo(phone);
break;
case 2:
excel.setContactsNameThree(name);
excel.setRemarksThree(remark);
excel.setContactsEmailThree(email);
excel.setContactsPhoneThree(phone);
break;
case 3:
excel.setContactsNameFour(name);
excel.setRemarksFour(remark);
excel.setContactsEmailFour(email);
excel.setContactsPhoneFour(phone);
break;
case 4:
excel.setContactsNameFive(name);
excel.setRemarksFive(remark);
excel.setContactsEmailFive(email);
excel.setContactsPhoneFive(phone);
break;
case 5:
excel.setContactsNameSix(name);
excel.setRemarksSix(remark);
excel.setContactsEmailSix(email);
excel.setContactsPhoneSix(phone);
break;
case 6:
excel.setContactsNameSeven(name);
excel.setRemarksSeven(remark);
excel.setContactsEmailSeven(email);
excel.setContactsPhoneSeven(phone);
break;
case 7:
excel.setContactsNameEight(name);
excel.setRemarksEight(remark);
excel.setContactsEmailEight(email);
excel.setContactsPhoneEight(phone);
break;
case 8:
excel.setContactsNameNine(name);
excel.setRemarksNine(remark);
excel.setContactsEmailNine(email);
excel.setContactsPhoneNine(phone);
break;
case 9:
excel.setContactsNameTen(name);
excel.setRemarksTen(remark);
excel.setContactsEmailTen(email);
excel.setContactsPhoneTen(phone);
break;
default:break;
}
}
}
excelList.add(excel);
System.err.println(excelList);
}
}
return super.exportListXls(excelList, PayDraftingGroupSubItemExcel.class, "起草组成员");
}
}
@@ -0,0 +1,150 @@
package com.jero.drafting.entity;
import com.baomidou.mybatisplus.annotation.*;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* <p>
* 起草组表
* </p>
*
* @author sz
* @since 2024-01-02
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("pay_drafting_group")
@ApiModel(value="PayDraftingGroup对象", description="起草组表")
public class PayDraftingGroup implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
/**起草组项目*/
@Excel(name = "起草组项目", width = 15)
@ApiModelProperty(value = "起草组项目")
@NotEmpty(message = "起草组项目不能为空")
@Size(max = 50,message = "起草组项目长度不能大于50个字符")
private String draftingGroupProject;
@ApiModelProperty(value = "工作组id")
@NotEmpty(message = "工作组id不能为空")
@Size(max = 50,message = "工作组id长度不能大于50个字符")
private String workingGroupId;
/**运行年份*/
@Excel(name = "运行年份", width = 15)
@ApiModelProperty(value = "运行年份")
@NotEmpty(message = "运行年份不能为空")
@Pattern(regexp = "^\\d{4}$",message = "运行年份格式错误")
private String year;
/**负责人Aid*/
@Excel(name = "负责人Aid", width = 15)
@ApiModelProperty(value = "负责人Aid")
@NotEmpty(message = "负责人Aid不能为空")
@Size(max = 32,message = "负责人Aid长度不能大于32个字符")
private String principalIdA;
/**负责人名称A*/
@Excel(name = "负责人名称A", width = 15)
@ApiModelProperty(value = "负责人名称A")
private String principalNameA;
/**负责人Aid*/
@Excel(name = "负责人Bid", width = 15)
@ApiModelProperty(value = "负责人Bid")
@NotEmpty(message = "负责人Bid不能为空")
@Size(max = 32,message = "负责人Bid长度不能大于32个字符")
private String principalIdB;
/**负责人名称A*/
@Excel(name = "负责人名称N", width = 15)
@ApiModelProperty(value = "负责人名称B")
private String principalNameB;
/**每年召开次数*/
@Excel(name = "每年召开次数", width = 15)
@ApiModelProperty(value = "每年召开次数")
@Size(max = 50,message = "每年召开次数长度不能大于50个字符")
private String convokeNum;
/**运行周期*/
@Excel(name = "运行周期", width = 15)
@ApiModelProperty(value = "运行周期")
@Size(max = 50,message = "运行周期长度不能大于50个字符")
private String operationCycle;
/**任务及目标*/
@Excel(name = "任务及目标", width = 15)
@ApiModelProperty(value = "任务及目标")
@Size(max = 200,message = "任务及目标长度不能大于200个字符")
private String missionAndObjectives;
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
@Size(max = 200,message = "备注长度不能大于200个字符")
private String remarks;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 负责人A(用于权限查询)
*/
@TableField(exist = false)
private String principalA;
/**
* 负责人B(用于权限查询)
*/
@TableField(exist = false)
private String principalB;
@TableField(exist = false)
@ApiModelProperty(value = "企业联系人")
private String companyContactName;
@TableField(exist = false)
@ApiModelProperty(value = "企业名称")
private String companyName;
}
@@ -0,0 +1,415 @@
package com.jero.drafting.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.project.entity.PayWorkingGroupSubItemContacts;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
* @Description: 起草组成员表 实体
* @Author: sz
* @Date: 2024-01-02
* @Version: V1.0
*/
@Data
@TableName("pay_drafting_group_subitem")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="pay_drafting_group_subitem对象", description="pay_drafting_group_subitem")
public class PayDraftingGroupSubItem implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**来款项目*/
@ApiModelProperty(value = "来款项目")
@TableField(exist = false)
private String chargeProject;
/**起草组id*/
@ApiModelProperty(value = "起草组id")
@Size(max = 32,message = "起草组id长度不能大于32个字符")
private String draftingGroupId;
/**成员单位id*/
@ApiModelProperty(value = "成员单位id")
@Size(max = 32,message = "成员单位id长度不能大于32个字符")
private String chargeCompanyId;
/**临时成员单位id*/
@ApiModelProperty(value = "临时成员单位id")
private String chargeCompanyTemporaryId;
/**临时成员单位*/
@Excel(name = "成员单位", width = 15)
@ApiModelProperty(value = "临时成员单位")
private String chargeCompanyTemporaryName;
/**企业联系人1id*/
@ApiModelProperty(value = "企业联系人1id")
@Size(max = 32,message = "企业联系人1id长度不能大于32个字符")
private String contactsIdOne;
/**临时企业联系人1id*/
@ApiModelProperty(value = "临时企业联系人1id")
private String contactsTemporaryIdOne;
/**临时企业联系人1名称*/
@ApiModelProperty(value = "临时企业联系人1名称")
private String contactsTemporaryNameOne;
/**企业联系人2id*/
@Size(max = 32,message = "企业联系人2id长度不能大于32个字符")
private String contactsIdTwo;
/**临时企业联系人2id*/
@ApiModelProperty(value = "临时企业联系人2id")
private String contactsTemporaryIdTwo;
/**临时企业联系人2名称*/
@ApiModelProperty(value = "临时企业联系人2名称")
private String contactsTemporaryNameTwo;
/**企业联系人3id*/
@Size(max = 32,message = "企业联系人3id长度不能大于32个字符")
private String contactsIdThree;
/**临时企业联系人3id*/
@ApiModelProperty(value = "临时企业联系人3id")
private String contactsTemporaryIdThree;
/**临时企业联系人3名称*/
@ApiModelProperty(value = "临时企业联系人3名称")
private String contactsTemporaryNameThree;
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
@Size(max = 200,message = "备注长度不能大于200个字符")
private String remarks;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 企业联系人列表
*/
@ApiModelProperty(value = "企业联系人列表")
@TableField(exist = false)
private List<PayDraftingGroupSubItemContacts> payDraftingGroupSubItemContactsList;
/**项目ids 多个以逗号分隔*/
@TableField(exist = false)
@ApiModelProperty(value = "项目ids 多个以逗号分隔")
private String projectIds;
/**会议id*/
@TableField(exist = false)
private String meetingId;
/**
* 负责人
*/
@TableField(exist = false)
@ApiModelProperty(value = "负责人")
private String principalName;
/**负责人联系电话*/
@TableField(exist = false)
@ApiModelProperty(value = "负责人联系电话")
private String principalPhone;
/**负责人邮箱*/
@TableField(exist = false)
@ApiModelProperty(value = "负责人邮箱")
private String principalEmail;
/**
* 运行年份
*/
@TableField(exist = false)
@ApiModelProperty(value = "运行年份")
private String year;
/**运行周期*/
@ApiModelProperty(value = "运行周期")
@TableField(exist = false)
private String operationCycle;
/**任务及目标*/
@ApiModelProperty(value = "任务及目标")
@TableField(exist = false)
private String missionAndObjectives;
/**企业联系人1名称*/
@Excel(name = "企业联系人1", width = 15)
@ApiModelProperty(value = "企业联系人1")
@TableField(exist = false)
private String contactsNameOne;
/**
* 企业联系人1手机号
*/
@Excel(name = "企业联系人1手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneOne;
/**
* 企业联系人1邮箱
*/
@Excel(name = "企业联系人1邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailOne;
/**联系人1备注*/
@Excel(name = "联系人1备注", width = 15)
@ApiModelProperty(value = "联系人1备注")
@Size(max = 50,message = "联系人1备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksOne;
/**企业联系人2名称*/
@Excel(name = "企业联系人2", width = 15)
@ApiModelProperty(value = "企业联系人2")
@TableField(exist = false)
private String contactsNameTwo;
/**
* 企业联系人2手机号
*/
@Excel(name = "企业联系人2手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneTwo;
/**
* 企业联系人2邮箱
*/
@Excel(name = "企业联系人2邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailTwo;
/**联系人2备注*/
@Excel(name = "联系人2备注", width = 15)
@ApiModelProperty(value = "联系人2备注")
@Size(max = 50,message = "联系人2备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksTwo;
/**企业联系人3名称*/
@Excel(name = "企业联系人3", width = 15)
@ApiModelProperty(value = "企业联系人3")
@TableField(exist = false)
private String contactsNameThree;
/**
* 企业联系人3手机号
*/
@Excel(name = "企业联系人3手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneThree;
/**
* 企业联系人3邮箱
*/
@Excel(name = "企业联系人3邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailThree;
/**联系人3备注*/
@Excel(name = "联系人3备注", width = 15)
@ApiModelProperty(value = "联系人3备注")
@Size(max = 50,message = "联系人3备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksThree;
/**企业联系人4名称*/
@Excel(name = "企业联系人4", width = 15)
@ApiModelProperty(value = "企业联系人4")
@TableField(exist = false)
private String contactsNameFour;
/**
* 企业联系人4手机号
*/
@Excel(name = "企业联系人4手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneFour;
/**
* 企业联系人4邮箱
*/
@Excel(name = "企业联系人4邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailFour;
/**联系人4备注*/
@Excel(name = "联系人4备注", width = 15)
@ApiModelProperty(value = "联系人4备注")
@Size(max = 50,message = "联系人4备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksFour;
/**企业联系人5名称*/
@Excel(name = "企业联系人5", width = 15)
@ApiModelProperty(value = "企业联系人5")
@TableField(exist = false)
private String contactsNameFive;
/**
* 企业联系人5手机号
*/
@Excel(name = "企业联系人5手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneFive;
/**
* 企业联系人5邮箱
*/
@Excel(name = "企业联系人5邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailFive;
/**联系人5备注*/
@Excel(name = "联系人5备注", width = 15)
@ApiModelProperty(value = "联系人5备注")
@Size(max = 50,message = "联系人5备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksFive;
/**企业联系人6名称*/
@Excel(name = "企业联系人6", width = 15)
@ApiModelProperty(value = "企业联系人6")
@TableField(exist = false)
private String contactsNameSix;
/**
* 企业联系人6手机号
*/
@Excel(name = "企业联系人6手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneSix;
/**
* 企业联系人6邮箱
*/
@Excel(name = "企业联系人6邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailSix;
/**联系人6备注*/
@Excel(name = "联系人6备注", width = 15)
@ApiModelProperty(value = "联系人6备注")
@Size(max = 50,message = "联系人6备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksSix;
/**企业联系人7名称*/
@Excel(name = "企业联系人7", width = 15)
@ApiModelProperty(value = "企业联系人7")
@TableField(exist = false)
private String contactsNameSeven;
/**
* 企业联系人7手机号
*/
@Excel(name = "企业联系人7手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneSeven;
/**
* 企业联系人7邮箱
*/
@Excel(name = "企业联系人7邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailSeven;
/**联系人7备注*/
@Excel(name = "联系人7备注", width = 15)
@ApiModelProperty(value = "联系人7备注")
@Size(max = 50,message = "联系人7备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksSeven;
/**企业联系人8名称*/
@Excel(name = "企业联系人8", width = 15)
@ApiModelProperty(value = "企业联系人8")
@TableField(exist = false)
private String contactsNameEight;
/**
* 企业联系人8手机号
*/
@Excel(name = "企业联系人8手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneEight;
/**
* 企业联系人8邮箱
*/
@Excel(name = "企业联系人8邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailEight;
/**联系人8备注*/
@Excel(name = "联系人8备注", width = 15)
@ApiModelProperty(value = "联系人8备注")
@Size(max = 50,message = "联系人8备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksEight;
/**企业联系人9名称*/
@Excel(name = "企业联系人9", width = 15)
@ApiModelProperty(value = "企业联系人9")
@TableField(exist = false)
private String contactsNameNine;
/**
* 企业联系人9手机号
*/
@Excel(name = "企业联系人9手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneNine;
/**
* 企业联系人9邮箱
*/
@Excel(name = "企业联系人9邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailNine;
/**联系人9备注*/
@Excel(name = "联系人9备注", width = 15)
@ApiModelProperty(value = "联系人9备注")
@Size(max = 50,message = "联系人9备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksNine;
/**企业联系人10名称*/
@Excel(name = "企业联系人10", width = 15)
@ApiModelProperty(value = "企业联系人10")
@TableField(exist = false)
private String contactsNameTen;
/**
* 企业联系人10手机号
*/
@Excel(name = "企业联系人10手机号", width = 15)
@TableField(exist = false)
private String contactsPhoneTen;
/**
* 企业联系人10邮箱
*/
@Excel(name = "企业联系人10邮箱", width = 15)
@TableField(exist = false)
private String contactsEmailTen;
/**联系人10备注*/
@Excel(name = "联系人10备注", width = 15)
@ApiModelProperty(value = "联系人10备注")
@Size(max = 50,message = "联系人10备注长度不能大于50个字符")
@TableField(exist = false)
private String remarksTen;
}
@@ -0,0 +1,131 @@
package com.jero.drafting.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 起草组企业联系人表 实体
* @Author: sz
* @Date: 2024-01-02
* @Version: V1.0
*/
@Data
@TableName("pay_drafting_group_subitem_contacts")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="pay_drafting_group_subitem_contacts", description="pay_drafting_group_subitem_contacts")
public class PayDraftingGroupSubItemContacts implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private String id;
/**起草组id*/
@Excel(name = "起草组id", width = 15)
@ApiModelProperty(value = "起草组id")
private String draftingGroupId;
/**起草组成员id*/
@Excel(name = "起草组成员id", width = 15)
@ApiModelProperty(value = "起草组成员id")
private String draftingGroupSubId;
/**企业联系人id*/
@Excel(name = "企业联系人id", width = 15)
@ApiModelProperty(value = "企业联系人id")
private String contactsId;
/**临时企业联系人id*/
@Excel(name = "临时企业联系人id", width = 15)
@ApiModelProperty(value = "临时企业联系人id")
private String contactsTemporaryId;
/**临时企业联系人名称*/
@Excel(name = "临时企业联系人名称", width = 15)
@ApiModelProperty(value = "临时企业联系人名称")
private String contactsTemporaryName;
/**联系人备注*/
@Excel(name = "联系人备注", width = 15)
@ApiModelProperty(value = "联系人备注")
private String remarks;
/**序号*/
@Excel(name = "序号", width = 15)
@ApiModelProperty(value = "序号")
private Integer orderNum;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 企业联系人性别3
*/
@ApiModelProperty(value = "企业联系人性别")
@TableField(exist = false)
private String gender;
/**
* 企业联系人性别3
*/
@ApiModelProperty(value = "企业联系人性别")
@TableField(exist = false)
private String gender_dictText;
/**
* 企业联系人职务3
*/
@ApiModelProperty(value = "企业联系人职务")
@TableField(exist = false)
private String post;
/**
* 企业联系人电话3
*/
@ApiModelProperty(value = "企业联系人电话")
@TableField(exist = false)
private String phone;
/**
* 企业联系人邮箱3
*/
@ApiModelProperty(value = "企业联系人邮箱")
@TableField(exist = false)
private String email;
/**
* 企业联系人邮编3
*/
@ApiModelProperty(value = "企业联系人邮编")
@TableField(exist = false)
private String postalCodeContacts;
/**
* 企业联系人地址
*/
@ApiModelProperty(value = "企业联系人地址")
@TableField(exist = false)
private String contactAddress;
/**
* 企业名称
*/
@TableField(exist = false)
@ApiModelProperty(value = "企业名称")
private String companyName;
}
@@ -0,0 +1,22 @@
package com.jero.drafting.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.drafting.vo.PayDraftingGroupVo;
import com.jero.project.vo.PayWorkingGroupVO;
/**
* <p>
* 起草组表 Mapper 接口
* </p>
*
* @author sz
* @since 2024-01-02
*/
public interface PayDraftingGroupMapper extends BaseMapper<PayDraftingGroup> {
IPage<PayDraftingGroupVo> queryPageList(Page<PayDraftingGroupVo> page, PayDraftingGroup payDraftingGroup);
}
@@ -0,0 +1,25 @@
package com.jero.drafting.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 起草组成员企业联系人表 Mapper 接口
* </p>
*
* @author sz
* @since 2024-01-02
*/
public interface PayDraftingGroupSubItemContactsMapper extends BaseMapper<PayDraftingGroupSubItemContacts> {
List<PayDraftingGroupSubItemContacts> getSubItemContacts(@Param("draftingGroupSubId")String id);
/**
* 根据成员id获得主联系人
*/
String getMasterContactsId(String draftingGroupSubItemId);
}
@@ -0,0 +1,26 @@
package com.jero.drafting.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
/**
* <p>
* 起草组成员表 Mapper 接口
* </p>
*
* @author sz
* @since 2024-01-02
*/
public interface PayDraftingGroupSubItemMapper extends BaseMapper<PayDraftingGroupSubItem> {
/**
* 分页查询
* @param page
* @param payDraftingGroupSubItem
* @param paymentDate
* @return
*/
IPage<PayDraftingGroupSubItem> queryPageList(Page<PayDraftingGroupSubItem> page, PayDraftingGroupSubItem payDraftingGroupSubItem, String paymentDate);
}
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.drafting.mapper.PayDraftingGroupMapper">
<select id="queryPageList" resultType="com.jero.drafting.vo.PayDraftingGroupVo">
SELECT
pdg.id,
pdg.drafting_group_project AS draftingGroupProject,
pdg.working_group_id AS workingGroupId,
pdg.year,
pdg.principal_id_a AS principalIdA,
pdg.principal_id_b AS principalIdB,
pdg.convoke_num AS convokeNum,
pdg.operation_cycle AS operationCycle,
pdg.mission_and_objectives AS missionAndObjectives,
pdg.remarks,
pdg.create_by AS createBy,
pdg.create_time AS createTime,
pdg.update_by AS updateBy,
pdg.update_time AS updateTime,
su.realname AS principalNameA,
su1.realname AS principalNameB
FROM pay_drafting_group pdg
left join sys_user su on pdg.principal_id_a = su.id
left join sys_user su1 on pdg.principal_id_b = su1.id
<if test="(payDraftingGroup.companyContactName != null and payDraftingGroup.companyContactName != '')
or (payDraftingGroup.companyName != null and payDraftingGroup.companyName != '')">
left join pay_drafting_group_subitem pdgs on pdg.id = pdgs.drafting_group_id
left JOIN pay_drafting_group_subitem_contacts pdgsc on pdgsc.drafting_group_sub_id = pdgs.id
</if>
<where>
<if test="payDraftingGroup.draftingGroupProject != null and payDraftingGroup.draftingGroupProject != ''">
AND drafting_group_project LIKE concat('%',concat(#{payDraftingGroup.draftingGroupProject},'%'))
</if>
<if test="payDraftingGroup.principalIdA != null and payDraftingGroup.principalIdA != ''">
AND principal_id_a = #{payDraftingGroup.principalIdA}
</if>
<if test="payDraftingGroup.year != null and payDraftingGroup.year != ''">
AND year = #{payDraftingGroup.year}
</if>
<if test="payDraftingGroup.companyContactName != null and payDraftingGroup.companyContactName != ''">
and pdgsc.contacts_temporary_name like concat('%', #{payDraftingGroup.companyContactName}, '%')
</if>
<if test="payDraftingGroup.companyName != null and payDraftingGroup.companyName != ''">
and pdgs.charge_company_temporary_name like concat('%', #{payDraftingGroup.companyName}, '%')
</if>
</where>
ORDER BY pdg.create_time DESC
</select>
</mapper>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.drafting.mapper.PayDraftingGroupSubItemContactsMapper">
<select id="getSubItemContacts" resultType="com.jero.drafting.entity.PayDraftingGroupSubItemContacts">
select *
from pay_drafting_group_subitem_contacts
where drafting_group_sub_id=#{draftingGroupSubId}
</select>
<select id="getMasterContactsId" resultType="java.lang.String" parameterType="java.lang.String">
select contacts_id
from pay_drafting_group_subitem_contacts
where drafting_group_sub_id=#{draftingGroupSubId} order by order_num asc limit 1
</select>
</mapper>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.drafting.mapper.PayDraftingGroupSubItemMapper">
<select id="queryPageList" resultType="com.jero.drafting.entity.PayDraftingGroupSubItem">
SELECT
pdgs.id,
pdgs.drafting_group_id AS draftingGroupId,
pdgs.charge_company_id AS chargeCompanyId,
pdgs.charge_company_temporary_id AS chargeCompanyTemporaryId,
if(pdgs.charge_company_temporary_name = pcm.company_name, pdgs.charge_company_temporary_name, concat(pdgs.charge_company_temporary_name,'(更名为',pcm.company_name,'')) as chargeCompanyTemporaryName,
pdgs.contacts_id_one AS contactsIdOne,
pdgs.contacts_temporary_id_one AS contactsTemporaryIdOne,
pdgs.contacts_temporary_name_one AS contactsTemporaryNameOne,
pdgs.remarks_one as remarksOne,
pdgs.contacts_id_two AS contactsIdTwo,
pdgs.contacts_temporary_id_two AS contactsTemporaryIdTwo,
pdgs.contacts_temporary_name_two AS contactsTemporaryNameTwo,
pdgs.remarks_two as remarksTwo,
pdgs.contacts_id_three AS contactsIdThree,
pdgs.contacts_temporary_id_three AS contactsTemporaryIdThree,
pdgs.contacts_temporary_name_three AS contactsTemporaryNameThree,
pdgs.remarks,
pdgs.create_by AS createBy,
pdgs.create_time AS createTime,
pdgs.update_by AS updateBy
FROM pay_drafting_group_subitem pdgs
left join pay_company_management_temporary pcmt on pdgs.charge_company_temporary_id = pcmt.id
left join pay_company_management pcm on pcmt.company_id = pcm.id
<where>
pdgs.drafting_group_id = #{payDraftingGroupSubItem.draftingGroupId}
<if test="payDraftingGroupSubItem.chargeCompanyTemporaryName != null and payDraftingGroupSubItem.chargeCompanyTemporaryName != ''">
AND pcm.company_name LIKE
concat('%',concat(#{payDraftingGroupSubItem.chargeCompanyTemporaryName},'%'))
</if>
</where>
GROUP BY pdgs.id
ORDER BY pdgs.create_time desc
</select>
</mapper>
@@ -0,0 +1,61 @@
package com.jero.drafting.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.drafting.vo.PayDraftingGroupVo;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.vo.PayWorkingGroupVO;
import java.util.List;
/**
* <p>
* 起草组表 服务类
* </p>
*
* @author sz
* @since 2024-01-02
*/
public interface IPayDraftingGroupService extends IService<PayDraftingGroup> {
/**
* 分页查询
* @param page
* @param payDraftingGroup
* @return
*/
IPage<PayDraftingGroupVo> queryPageList(Page<PayDraftingGroupVo> page, PayDraftingGroup payDraftingGroup);
/**
* 给PayDraftingGroup 属性赋值
* @param payDraftingGroup
*/
void setPayDraftingGroup(PayDraftingGroup payDraftingGroup);
/**
* 根据工作组的id拿到工作组的名称
* @param payWorkingGroupId
* @return
*/
PayWorkingGroup getPayWorkingGroupNameById(String payWorkingGroupId);
/**
* 根据id删除
* @param id
*/
void deleteById(String id);
/**
* 批量删除
* @param ids
*/
void deleteByIds(List<String> ids);
/**
* 复制
* @param payDraftingGroup
*/
void copy(PayDraftingGroup payDraftingGroup);
}
@@ -0,0 +1,16 @@
package com.jero.drafting.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
/**
* <p>
* 起草组成员企业联系人表 服务类
* </p>
*
* @author sz
* @since 2024-01-02
*/
public interface IPayDraftingGroupSubItemContactsService extends IService<PayDraftingGroupSubItemContacts> {
}
@@ -0,0 +1,59 @@
package com.jero.drafting.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import com.jero.project.entity.PayWorkingGroupSubItem;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 起草组成员表 服务类
* </p>
*
* @author sz
* @since 2024-01-02
*/
public interface IPayDraftingGroupSubItemService extends IService<PayDraftingGroupSubItem> {
/**
* 分页查询
* @param page
* @param payDraftingGroupSubItem
* @param paymentDate
* @return
*/
IPage<PayDraftingGroupSubItem> queryPageList(Page<PayDraftingGroupSubItem> page, PayDraftingGroupSubItem payDraftingGroupSubItem, String paymentDate);
/**
* 添加
* @param payDraftingGroupSubItem
*/
void addPayDraftingGroupSubItem(PayDraftingGroupSubItem payDraftingGroupSubItem);
/**
* 根据id删除
* @param id
*/
void delete(String id);
/**
* 批量删除
* @param ids
*/
void deleteBatch(String ids);
/**
* 编辑
* @param payDraftingGroupSubItem
*/
void editPayWorkingGroupSubItem(PayDraftingGroupSubItem payDraftingGroupSubItem);
/**
* excel导入
* @param request
*/
void importExcel(HttpServletRequest request);
}
@@ -0,0 +1,219 @@
package com.jero.drafting.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.vo.LoginUser;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import com.jero.drafting.mapper.PayDraftingGroupMapper;
import com.jero.drafting.service.IPayDraftingGroupService;
import com.jero.drafting.service.IPayDraftingGroupSubItemService;
import com.jero.drafting.vo.PayDraftingGroupVo;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysUserServiceImpl;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.service.IPayWorkingGroupService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.project.vo.PayWorkingGroupVO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* <p>
* 起草组表 服务实现类
* </p>
*
* @author sz
* @since 2024-01-02
*/
@Service
@Transactional
public class PayDraftingGroupServiceImpl extends ServiceImpl<PayDraftingGroupMapper, PayDraftingGroup> implements IPayDraftingGroupService {
@Resource
private PayDraftingGroupMapper payDraftingGroupMapper;
@Resource
private ISysUserService sysUserService;
@Resource
private IPayWorkingGroupService payWorkingGroupService;
@Resource
private RolePermissionService rolePermissionService;
@Resource
private IPayDraftingGroupSubItemService payDraftingGroupSubItemService;
/**
* 分页查询
*
* @param page
* @param payDraftingGroup
* @return
*/
@Override
public IPage<PayDraftingGroupVo> queryPageList(Page<PayDraftingGroupVo> page, PayDraftingGroup payDraftingGroup) {
return payDraftingGroupMapper.queryPageList(page, payDraftingGroup);
}
/**
* 获取负责人A的名称
*
* @param payDraftingGroup
*/
@Override
public void setPayDraftingGroup(PayDraftingGroup payDraftingGroup) {
// 负责人A名称
SysUser principalIdA = sysUserService.getById(payDraftingGroup.getPrincipalIdA());
if (Objects.isNull(principalIdA)) {
throw new JeroBootException("负责人A不存在!");
}
payDraftingGroup.setPrincipalNameA(principalIdA.getRealname());
// 负责人B名称
SysUser principalIdB = sysUserService.getById(payDraftingGroup.getPrincipalIdB());
if (Objects.isNull(principalIdB)) {
throw new JeroBootException("负责人B不存在!");
}
payDraftingGroup.setPrincipalNameB(principalIdB.getRealname());
}
/**
* 根据工作组的id拿到工作组的名称
*
* @param payWorkingGroupId
* @return
*/
@Override
public PayWorkingGroup getPayWorkingGroupNameById(String payWorkingGroupId) {
LambdaQueryWrapper<PayWorkingGroup> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PayWorkingGroup::getId, payWorkingGroupId);
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getOne(queryWrapper);
return payWorkingGroup;
}
/**
* 根据id删除
*
* @param id
*/
@Override
public void deleteById(String id) {
PayDraftingGroup payDraftingGroupOld = getById(id);
if (Objects.isNull(payDraftingGroupOld)) {
throw new JeroBootException("该起草组不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (!rolePermissionService.getRolePermission("draftingGroupProject:delete") && !Objects.equals(payDraftingGroupOld.getPrincipalIdA(), sysUser.getId())) {
throw new JeroBootException(payDraftingGroupOld.getDraftingGroupProject() + "起草组项目不可操作!");
}
LambdaQueryWrapper<PayDraftingGroupSubItem> query = new LambdaQueryWrapper<>();
query.eq(PayDraftingGroupSubItem::getDraftingGroupId, id);
List<PayDraftingGroupSubItem> listPayDraftingGroupSubItem = payDraftingGroupSubItemService.list(query);
if (!CollectionUtils.isEmpty(listPayDraftingGroupSubItem)) {
throw new JeroBootException(payDraftingGroupOld.getDraftingGroupProject() + "起草组下存在企业,不可进行删除!");
}
removeById(id);
LambdaUpdateWrapper<PayDraftingGroupSubItem> updatePayDraftingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayDraftingGroupSubItem.eq(PayDraftingGroupSubItem::getDraftingGroupId, id);
payDraftingGroupSubItemService.remove(updatePayDraftingGroupSubItem);
}
/**
* 批量删除
*
* @param ids
*/
@Override
public void deleteByIds(List<String> ids) {
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
ids.forEach(p -> {
PayDraftingGroup payDraftingGroupOld = getById(p);
if (Objects.isNull(payDraftingGroupOld)) {
throw new JeroBootException("起草组不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (!rolePermissionService.getRolePermission("draftingGroupProject:batchDel") && !Objects.equals(payDraftingGroupOld.getPrincipalIdA(), sysUser.getId())) {
sb.append(payDraftingGroupOld.getDraftingGroupProject() + "起草组项目不可操作!<br/>");
}
LambdaQueryWrapper<PayDraftingGroupSubItem> query = new LambdaQueryWrapper<>();
query.eq(PayDraftingGroupSubItem::getDraftingGroupId, p);
List<PayDraftingGroupSubItem> listPayDraftingGroupSubItem = payDraftingGroupSubItemService.list(query);
if (!CollectionUtils.isEmpty(listPayDraftingGroupSubItem)) {
sb1.append(payDraftingGroupOld.getDraftingGroupProject() + "起草组下存在企业,不可进行删除!<br/");
}
});
if (!StringUtils.isEmpty(sb)) {
throw new JeroBootException(sb.toString());
}
if (!StringUtils.isEmpty(sb1)) {
throw new JeroBootException(sb1.toString());
}
removeByIds(ids);
LambdaUpdateWrapper<PayDraftingGroupSubItem> updatePayDraftingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayDraftingGroupSubItem.in(PayDraftingGroupSubItem::getDraftingGroupId, ids);
payDraftingGroupSubItemService.remove(updatePayDraftingGroupSubItem);
}
/**
* 复制
*
* @param payDraftingGroup
*/
@Override
public void copy(PayDraftingGroup payDraftingGroup) {
PayDraftingGroup payDraftingGroupOld = getById(payDraftingGroup.getId());
if(Objects.isNull(payDraftingGroupOld)){
throw new JeroBootException("起草组不存在!");
}
if(payDraftingGroup.getDraftingGroupProject().length() == 50){
throw new JeroBootException("起草组名称长度为50位,不可复制,请修改之后再复制!");
}
String str = payDraftingGroup.getDraftingGroupProject() + "-副本";
LambdaQueryWrapper<PayDraftingGroup> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(PayDraftingGroup::getDraftingGroupProject,str);
List<PayDraftingGroup> listPayDraftingGroup = list(queryWrapper);
if(!CollectionUtils.isEmpty(listPayDraftingGroup)){
String rex = "^[0-9]*[1-9][0-9]*$";
List<Integer> list = new ArrayList<>();
String finalStr = str;
listPayDraftingGroup.forEach(p->{
String project = p.getDraftingGroupProject();
if(!StringUtils.isEmpty(project) && !Objects.equals(p.getId(),payDraftingGroupOld.getId())){
String projectNew = project.substring(finalStr.length());
Pattern pa = Pattern.compile(rex);
Matcher m = pa.matcher(projectNew);
if (m.find()){
list.add(Integer.parseInt(projectNew));
}
}
});
if(!CollectionUtils.isEmpty(list)){
int m = list.stream().max(Comparator.comparing(Integer::intValue)).get();
str = str + (m + 1);
}
}else{
str = str + 1;
}
}
}
@@ -0,0 +1,24 @@
package com.jero.drafting.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import com.jero.drafting.mapper.PayDraftingGroupSubItemContactsMapper;
import com.jero.drafting.mapper.PayDraftingGroupSubItemMapper;
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
import com.jero.drafting.service.IPayDraftingGroupSubItemService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* <p>
* 起草组成员企业联系人表 服务实现类
* </p>
*
* @author sz
* @since 2024-01-02
*/
@Service
public class PayDraftingGroupSubItemContactsServiceImpl extends ServiceImpl<PayDraftingGroupSubItemContactsMapper, PayDraftingGroupSubItemContacts> implements IPayDraftingGroupSubItemContactsService {
}
@@ -0,0 +1,645 @@
package com.jero.drafting.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.ImportExcelUtil;
import com.jero.common.util.ValidUtil;
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.contract.service.IPayIncomeContractService;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import com.jero.drafting.mapper.PayDraftingGroupSubItemContactsMapper;
import com.jero.drafting.mapper.PayDraftingGroupSubItemMapper;
import com.jero.drafting.service.IPayDraftingGroupService;
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
import com.jero.drafting.service.IPayDraftingGroupSubItemService;
import com.jero.meeting.service.IPayMeetingRemindRecordService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.pack.entity.PayPackCompanyProject;
import com.jero.pack.service.IPayPackCompanyProjectService;
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 org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecgframework.poi.excel.ExcelImportCheckUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 起草组成员表 服务实现类
* </p>
*
* @author sz
* @since 2024-01-02
*/
@Service
@Transactional
public class PayDraftingGroupSubItemServiceImpl extends ServiceImpl<PayDraftingGroupSubItemMapper, PayDraftingGroupSubItem> implements IPayDraftingGroupSubItemService {
@Resource
private PayDraftingGroupSubItemMapper payDraftingGroupSubItemMapper;
@Resource
private IPayDraftingGroupSubItemContactsService payDraftingGroupSubItemContactsService;
@Resource
private IPayDraftingGroupService payDraftingGroupService;
@Resource
private IPayDraftingGroupSubItemService payDraftingGroupSubItemService;
@Resource
private IPayCompanyManagementTemporaryService payCompanyManagementTemporaryService;
@Resource
private IPayContactsManagementTemporaryService payContactsManagementTemporaryService;
@Resource
private ISysUserService sysUserService;
@Resource
private IPayCompanyManagementService payCompanyManagementService;
@Resource
private IPayContactsManagementService payContactsManagementService;
@Resource
private RolePermissionService rolePermissionService;
@Resource
private PayDraftingGroupSubItemContactsMapper payDraftingGroupSubItemContactsMapper;
/**
* 分页查询
*
* @param page
* @param payDraftingGroupSubItem
* @param paymentDate
* @return
*/
@Override
public IPage<PayDraftingGroupSubItem> queryPageList(Page<PayDraftingGroupSubItem> page, PayDraftingGroupSubItem payDraftingGroupSubItem, String paymentDate) {
IPage<PayDraftingGroupSubItem> payDraftingGroupSubItemIPage = payDraftingGroupSubItemMapper.queryPageList(page, payDraftingGroupSubItem, paymentDate);
List<PayDraftingGroupSubItem> records = payDraftingGroupSubItemIPage.getRecords();
if (!CollectionUtils.isEmpty(records)) {
// 获取企业联系人
List<String> listIds = records.stream().map(PayDraftingGroupSubItem::getId).collect(Collectors.toList());
LambdaQueryWrapper<PayDraftingGroupSubItemContacts> queryDraftingGroupSubItemContacts = new LambdaQueryWrapper<>();
queryDraftingGroupSubItemContacts.in(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, listIds);
List<PayDraftingGroupSubItemContacts> payDraftingGroupSubItemContactsList = payDraftingGroupSubItemContactsService.list(queryDraftingGroupSubItemContacts);
for (PayDraftingGroupSubItem draftingGroupSubItem : records) {
if (!CollectionUtils.isEmpty(payDraftingGroupSubItemContactsList)) {
List<PayDraftingGroupSubItemContacts> pdg = payDraftingGroupSubItemContactsList.stream().filter(p -> Objects.equals(p.getDraftingGroupSubId(), draftingGroupSubItem.getId())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(pdg)) {
pdg.sort(Comparator.comparing(PayDraftingGroupSubItemContacts::getOrderNum));
draftingGroupSubItem.setContactsTemporaryNameOne(pdg.get(0).getContactsTemporaryName());
draftingGroupSubItem.setPayDraftingGroupSubItemContactsList(pdg);
} else {
draftingGroupSubItem.setContactsTemporaryNameOne("");
draftingGroupSubItem.setPayDraftingGroupSubItemContactsList(null);
}
} else {
draftingGroupSubItem.setContactsTemporaryNameOne("");
draftingGroupSubItem.setPayDraftingGroupSubItemContactsList(null);
}
}
}
return payDraftingGroupSubItemIPage;
}
/**
* 添加
*
* @param payDraftingGroupSubItem
*/
@Override
public void addPayDraftingGroupSubItem(PayDraftingGroupSubItem payDraftingGroupSubItem) {
// 验证企业联系人list中是否有重复的联系人
List<PayDraftingGroupSubItemContacts> payDraftingGroupSubItemContactsList = payDraftingGroupSubItem.getPayDraftingGroupSubItemContactsList();
if (!CollectionUtils.isEmpty(payDraftingGroupSubItemContactsList)) {
long oldNum = payDraftingGroupSubItemContactsList.size();
long newNum = payDraftingGroupSubItemContactsList.stream().map(PayDraftingGroupSubItemContacts::getContactsId).collect(Collectors.toList()).stream().distinct().count();
if (oldNum != newNum) {
throw new JeroBootException("企业联系人重复");
}
}
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(payDraftingGroupSubItem.getDraftingGroupId());
if (Objects.isNull(payDraftingGroup)) {
throw new JeroBootException("起草组不存在!");
}
try {
// 编辑保存前再次校验来款项目是否存在
LambdaQueryWrapper<PayDraftingGroupSubItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PayDraftingGroupSubItem::getDraftingGroupId, payDraftingGroupSubItem.getDraftingGroupId());
queryWrapper.eq(PayDraftingGroupSubItem::getChargeCompanyId, payDraftingGroupSubItem.getChargeCompanyId());
PayDraftingGroupSubItem payDraftingGroupSubItemNew = payDraftingGroupSubItemService.getOne(queryWrapper);
// 企业和联系人同时存在,则校验不通过
if (!Objects.isNull(payDraftingGroupSubItemNew)) {
throw new JeroBootException("起草组成员单位已存在!");
}
} catch (Exception e) {
throw new JeroBootException("起草组成员单位已存在!");
}
setPayDraftingGroupSubItemAdd(payDraftingGroupSubItem);
payDraftingGroupSubItemService.save(payDraftingGroupSubItem);
List<PayDraftingGroupSubItemContacts> listPayDraftingGroupSubItemContactsNew = payDraftingGroupSubItem.getPayDraftingGroupSubItemContactsList();
// 添加联系人表
if (!CollectionUtils.isEmpty(listPayDraftingGroupSubItemContactsNew)) {
for (int i = 0; i < listPayDraftingGroupSubItemContactsNew.size(); i++) {
listPayDraftingGroupSubItemContactsNew.get(i).setOrderNum(i + 1);
listPayDraftingGroupSubItemContactsNew.get(i).setDraftingGroupId(payDraftingGroupSubItem.getDraftingGroupId());
listPayDraftingGroupSubItemContactsNew.get(i).setDraftingGroupSubId(payDraftingGroupSubItem.getId());
}
payDraftingGroupSubItemContactsService.saveBatch(listPayDraftingGroupSubItemContactsNew);
}
SysUser sysUserInfo = sysUserService.getById(payDraftingGroup.getPrincipalIdA());
if (Objects.isNull(sysUserInfo)) {
throw new JeroBootException("负责人不存在!");
}
}
/**
* 插入企业信息,联系人信息到临时表,更新项目记录
*
* @param payDraftingGroupSubItem
*/
private void setPayDraftingGroupSubItemAdd(PayDraftingGroupSubItem payDraftingGroupSubItem) {
// 企业
PayCompanyManagementTemporary chargeCompanyName = payCompanyManagementTemporaryService.insertCompanyManagementTemporary(payDraftingGroupSubItem.getChargeCompanyId());
if (Objects.isNull(chargeCompanyName)) {
throw new JeroBootException("企业名称为空!");
}
payDraftingGroupSubItem.setChargeCompanyTemporaryId(chargeCompanyName.getId());
payDraftingGroupSubItem.setChargeCompanyTemporaryName(chargeCompanyName.getCompanyName());
List<PayDraftingGroupSubItemContacts> payDraftingGroupSubItemContactsList = payDraftingGroupSubItem.getPayDraftingGroupSubItemContactsList();
if (!CollectionUtils.isEmpty(payDraftingGroupSubItemContactsList)) {
for (int i = 0; i < payDraftingGroupSubItemContactsList.size(); i++) {
// 企业联系人
PayContactsManagementTemporary contactsName = payContactsManagementTemporaryService.insertContactsManagementTemporary(payDraftingGroupSubItemContactsList.get(i).getContactsId());
if (Objects.isNull(contactsName)) {
throw new JeroBootException("企业联系人" + (i + 1) + "名称为空!");
}
payDraftingGroupSubItemContactsList.get(i).setContactsTemporaryId(contactsName.getId());
payDraftingGroupSubItemContactsList.get(i).setContactsTemporaryName(contactsName.getName());
}
}
}
/**
* 根据id删除
*
* @param id
*/
@Override
public void delete(String id) {
if (StringUtils.isBlank(id)) {
throw new JeroBootException("id不能为空!");
}
deleteProject(id, "draftingGroupMember:delete");
payDraftingGroupSubItemService.removeById(id);
// 删除成员企业联系人
LambdaUpdateWrapper<PayDraftingGroupSubItemContacts> updatePayWorkingGroupSubItemContacts = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItemContacts.eq(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, id);
payDraftingGroupSubItemContactsService.remove(updatePayWorkingGroupSubItemContacts);
}
/**
* 删除联系信息
*
* @param id
* @param perm
*/
private void deleteProject(String id, String perm) {
PayDraftingGroupSubItem payDraftingGroupSubItem = payDraftingGroupSubItemService.getById(id);
if (Objects.isNull(payDraftingGroupSubItem)) {
throw new JeroBootException("该成员不存在!");
}
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(payDraftingGroupSubItem.getDraftingGroupId());
if (Objects.isNull(payDraftingGroup)) {
throw new JeroBootException("起草组不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (!rolePermissionService.getRolePermission(perm)
&& !Objects.equals(payDraftingGroup.getPrincipalIdA(), sysUser.getId())
&& !Objects.equals(payDraftingGroup.getPrincipalIdB(), sysUser.getId())) {
throw new JeroBootException("起草组成员不可操作!");
}
// 删除企业联系人临时数据
payCompanyManagementTemporaryService.removeById(payDraftingGroupSubItem.getChargeCompanyTemporaryId());
List<PayDraftingGroupSubItemContacts> subItemContacts = payDraftingGroupSubItemContactsMapper.getSubItemContacts(id);
List<String> temporaryIds = subItemContacts.stream().map(PayDraftingGroupSubItemContacts::getContactsTemporaryId).collect(Collectors.toList());
payContactsManagementTemporaryService.removeByIds(temporaryIds);
}
/**
* 批量删除
*
* @param ids
*/
@Override
public void deleteBatch(String ids) {
if (StringUtils.isBlank(ids)) {
throw new JeroBootException("id不能为空!");
}
String[] s = ids.split(",");
for (String s1 : s) {
if (StringUtils.isBlank(s1)) {
throw new JeroBootException("id不能为空!");
}
deleteProject(s1, "draftingGroupMember:batchDel");
}
payDraftingGroupSubItemService.removeByIds(Arrays.asList(ids.split(",")));
// 删除成员企业联系人
LambdaUpdateWrapper<PayDraftingGroupSubItemContacts> updatePayWorkingGroupSubItemContacts = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItemContacts.in(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, Arrays.asList(ids.split(",")));
payDraftingGroupSubItemContactsService.remove(updatePayWorkingGroupSubItemContacts);
}
/**
* 编辑
*
* @param payDraftingGroupSubItem
*/
@Override
public void editPayWorkingGroupSubItem(PayDraftingGroupSubItem payDraftingGroupSubItem) {
String draftingGroupSubItemId = payDraftingGroupSubItem.getId();
PayDraftingGroupSubItem payDraftingGroupSubItemOld = payDraftingGroupSubItemService.getById(draftingGroupSubItemId);
if (Objects.isNull(payDraftingGroupSubItemOld)) {
throw new JeroBootException("项目不存在!");
}
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(payDraftingGroupSubItemOld.getDraftingGroupId());
if (Objects.isNull(payDraftingGroup)) {
throw new JeroBootException("起草组不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (!rolePermissionService.getRolePermission("draftingGroupMember:edit")
&& !Objects.equals(payDraftingGroup.getPrincipalIdA(), sysUser.getId())
&& !Objects.equals(payDraftingGroup.getPrincipalIdB(), sysUser.getId())) {
throw new JeroBootException("起草组成员不可操作!");
}
try {
// 编辑保存前再次校验来款项目是否存在
LambdaQueryWrapper<PayDraftingGroupSubItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PayDraftingGroupSubItem::getDraftingGroupId, payDraftingGroupSubItem.getDraftingGroupId());
queryWrapper.eq(PayDraftingGroupSubItem::getChargeCompanyId, payDraftingGroupSubItem.getChargeCompanyId());
PayDraftingGroupSubItem payDraftingGroupSubItemNew = payDraftingGroupSubItemService.getOne(queryWrapper);
// 企业和联系人同时存在,则校验不通过
if (!Objects.isNull(payDraftingGroupSubItemNew) && !Objects.equals(payDraftingGroupSubItemNew.getId(), draftingGroupSubItemId)) {
throw new JeroBootException("起草组成员单位已存在!");
}
} catch (Exception e) {
throw new JeroBootException("起草组成员单位已存在!");
}
LambdaQueryWrapper<PayDraftingGroupSubItemContacts> queryPayDraftingGroupSubItemContacts = new LambdaQueryWrapper<>();
queryPayDraftingGroupSubItemContacts.eq(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, payDraftingGroupSubItemOld.getId());
List<PayDraftingGroupSubItemContacts> listPayDraftingGroupSubItemContacts = payDraftingGroupSubItemContactsService.list(queryPayDraftingGroupSubItemContacts);
if (!CollectionUtils.isEmpty(listPayDraftingGroupSubItemContacts)) {
payDraftingGroupSubItemOld.setPayDraftingGroupSubItemContactsList(listPayDraftingGroupSubItemContacts);
}
setPayDraftingGroupSubItemEdit(payDraftingGroupSubItem, payDraftingGroupSubItemOld);
List<PayDraftingGroupSubItemContacts> listPayDraftingGroupSubItemContactsNew = payDraftingGroupSubItem.getPayDraftingGroupSubItemContactsList();
// 添加联系人表
if (!CollectionUtils.isEmpty(listPayDraftingGroupSubItemContactsNew)) {
// 先删除之前的企业联系人
LambdaUpdateWrapper<PayDraftingGroupSubItemContacts> updatePayWorkingGroupSubItemContacts = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItemContacts.eq(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, draftingGroupSubItemId);
payDraftingGroupSubItemContactsService.remove(updatePayWorkingGroupSubItemContacts);
// 添加新的企业联系人
for (int i = 0; i < listPayDraftingGroupSubItemContactsNew.size(); i++) {
listPayDraftingGroupSubItemContactsNew.get(i).setOrderNum(i + 1);
listPayDraftingGroupSubItemContactsNew.get(i).setDraftingGroupSubId(draftingGroupSubItemId);
listPayDraftingGroupSubItemContactsNew.get(i).setDraftingGroupId(payDraftingGroupSubItem.getDraftingGroupId());
}
payDraftingGroupSubItemContactsService.saveBatch(listPayDraftingGroupSubItemContactsNew);
}
payDraftingGroupSubItemService.updateById(payDraftingGroupSubItem);
}
/**
* 插入企业信息,联系人信息到临时表,更新项目记录
*
* @param payDraftingGroupSubItem
* @param payDraftingGroupSubItemOld
*/
private void setPayDraftingGroupSubItemEdit(PayDraftingGroupSubItem payDraftingGroupSubItem, PayDraftingGroupSubItem payDraftingGroupSubItemOld) {
if (!Objects.equals(payDraftingGroupSubItemOld.getChargeCompanyTemporaryId(), payDraftingGroupSubItem.getChargeCompanyId())) {
// 企业信息
PayCompanyManagementTemporary chargeCompanyName = payCompanyManagementTemporaryService.insertCompanyManagementTemporary(payDraftingGroupSubItem.getChargeCompanyId());
if (Objects.isNull(chargeCompanyName)) {
throw new JeroBootException("企业名称为空!");
}
payDraftingGroupSubItem.setChargeCompanyTemporaryId(chargeCompanyName.getId());
payDraftingGroupSubItem.setChargeCompanyTemporaryName(chargeCompanyName.getCompanyName());
payCompanyManagementTemporaryService.removeById(payDraftingGroupSubItemOld.getChargeCompanyTemporaryId());
} else {
payDraftingGroupSubItem.setChargeCompanyId(payDraftingGroupSubItemOld.getChargeCompanyId());
}
// 企业联系人信息
List<PayDraftingGroupSubItemContacts> payDraftingGroupSubItemContactsList = payDraftingGroupSubItem.getPayDraftingGroupSubItemContactsList();
if (!CollectionUtils.isEmpty(payDraftingGroupSubItemContactsList)) {
// 删除临时表历史记录
if (!CollectionUtils.isEmpty(payDraftingGroupSubItemOld.getPayDraftingGroupSubItemContactsList())) {
List<String> list = payDraftingGroupSubItemOld.getPayDraftingGroupSubItemContactsList().stream().map(PayDraftingGroupSubItemContacts::getContactsTemporaryId).collect(Collectors.toList());
payContactsManagementTemporaryService.removeByIds(list);
}
// 删除联系人记录
LambdaUpdateWrapper<PayDraftingGroupSubItemContacts> updatePayDraftingGroupSubItemContacts = new LambdaUpdateWrapper<>();
updatePayDraftingGroupSubItemContacts.eq(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, payDraftingGroupSubItem.getId());
payDraftingGroupSubItemContactsService.remove(updatePayDraftingGroupSubItemContacts);
// 新增
for (int i = 0; i < payDraftingGroupSubItemContactsList.size(); i++) {
// 企业联系人
PayContactsManagementTemporary contactsName = payContactsManagementTemporaryService.insertContactsManagementTemporary(payDraftingGroupSubItemContactsList.get(i).getContactsId());
if (Objects.isNull(contactsName)) {
throw new JeroBootException("企业联系人" + (i + 1) + "名称为空!");
}
payDraftingGroupSubItemContactsList.get(i).setContactsTemporaryId(contactsName.getId());
payDraftingGroupSubItemContactsList.get(i).setContactsTemporaryName(contactsName.getName());
}
}
}
/**
* excel导入
*
* @param request
*/
@Override
public void importExcel(HttpServletRequest request) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
String draftGroupId;
try {
draftGroupId = multipartRequest.getParameter("draftGroupId");
}catch (Exception e){
log.error("获取起草组id异常",e);
throw new JeroBootException("起草组id不能为空 ");
}
if(StringUtils.isBlank(draftGroupId)){
throw new JeroBootException("起草组id不能为空 ");
}
StringBuilder msg = new StringBuilder();
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile file = entity.getValue();// 获取上传文件对象
// 校验文件是否为excel
if(!ImportExcelUtil.checkExcelFile(file)){
throw new JeroBootException("请导入excel文件!");
}
ImportParams params = new ImportParams();
params.setTitleRows(1);
params.setHeadRows(1);
try {
Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), PayDraftingGroupSubItem.class, params);
if(!t){
throw new JeroBootException("文件格式有误,请下载模板后上传!");
}
} catch (Exception e) {
e.printStackTrace();
throw new JeroBootException("文件格式有误,请下载模板后上传!");
}
try {
List<PayDraftingGroupSubItem> list = ExcelImportUtil.importExcel(file.getInputStream(), PayDraftingGroupSubItem.class, params);
if(!CollectionUtils.isEmpty(list)){
// 校验重复成员的集合
List<PayDraftingGroupSubItem> listCompanyAndContacts = new ArrayList<>();
// 获取excel中的企业名称
List<String> listCompanyName = list.stream().map(PayDraftingGroupSubItem::getChargeCompanyTemporaryName).collect(Collectors.toList());
// 获取excel企业信息
LambdaQueryWrapper<PayCompanyManagement> companyWrapper = new LambdaQueryWrapper<>();
companyWrapper.in(PayCompanyManagement::getCompanyName,listCompanyName);
List<PayCompanyManagement> listCompanyInfo = payCompanyManagementService.list(companyWrapper);
List<String> listContactsName = new ArrayList<>();
// 获取excel中联系人1名称
List<String> listContactsName1 = list.stream().map(PayDraftingGroupSubItem::getContactsNameOne).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName1)){
listContactsName.addAll(listContactsName1);
}
// 获取excel中联系人2名称
List<String> listContactsName2 = list.stream().map(PayDraftingGroupSubItem::getContactsNameTwo).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName2)){
listContactsName.addAll(listContactsName2);
}
// 获取excel中联系人3名称
List<String> listContactsName3 = list.stream().map(PayDraftingGroupSubItem::getContactsNameThree).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName3)){
listContactsName.addAll(listContactsName3);
}
// 获取excel中联系人4名称
List<String> listContactsName4 = list.stream().map(PayDraftingGroupSubItem::getContactsNameFour).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName4)){
listContactsName.addAll(listContactsName4);
}
// 获取excel中联系人5名称
List<String> listContactsName5 = list.stream().map(PayDraftingGroupSubItem::getContactsNameFive).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName5)){
listContactsName.addAll(listContactsName5);
}
// 获取excel中联系人6名称
List<String> listContactsName6 = list.stream().map(PayDraftingGroupSubItem::getContactsNameSix).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName6)){
listContactsName.addAll(listContactsName6);
}
// 获取excel中联系人7名称
List<String> listContactsName7 = list.stream().map(PayDraftingGroupSubItem::getContactsNameSeven).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName7)){
listContactsName.addAll(listContactsName7);
}
// 获取excel中联系人8名称
List<String> listContactsName8 = list.stream().map(PayDraftingGroupSubItem::getContactsNameEight).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName8)){
listContactsName.addAll(listContactsName8);
}
// 获取excel中联系人9名称
List<String> listContactsName9 = list.stream().map(PayDraftingGroupSubItem::getContactsNameNine).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName9)){
listContactsName.addAll(listContactsName9);
}
// 获取excel中联系人10名称
List<String> listContactsName10 = list.stream().map(PayDraftingGroupSubItem::getContactsNameTen).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listContactsName10)){
listContactsName.addAll(listContactsName10);
}
// 获取excel联系人信息
LambdaQueryWrapper<PayContactsManagement> contactsWrapper = new LambdaQueryWrapper<>();
contactsWrapper.in(PayContactsManagement::getName,listContactsName);
List<PayContactsManagement> listContactsInfo = payContactsManagementService.list(contactsWrapper);
// 获取起草组信息
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(draftGroupId);
if(Objects.isNull(payDraftingGroup)){
msg.append("起草组不存在 ");
}
if(StringUtils.isBlank(msg)) {
// 获取工作组成员
LambdaQueryWrapper<PayDraftingGroupSubItem> query = new LambdaQueryWrapper<>();
query.eq(PayDraftingGroupSubItem::getDraftingGroupId, draftGroupId);
List<PayDraftingGroupSubItem> listData = payDraftingGroupSubItemService.list(query);
list.forEach(p -> {
p.setDraftingGroupId(draftGroupId);
int count = list.indexOf(p);
// 校验企业名称
List<PayCompanyManagement> listCompany = new ArrayList<>();
if (StringUtils.isBlank(p.getChargeCompanyTemporaryName())) {
msg.append("").append(count + 3).append("行:企业名称不能为空,请修改。<br/>");
} 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("行:企业名称不存在,请修改。<br/>");
} else {
p.setChargeCompanyId(listCompany.get(0).getId());
}
}
// 校验工作组成员单位是否已存在(是否重复)
if (!StringUtils.isBlank(p.getChargeCompanyId())) {
List<PayDraftingGroupSubItem> listDateNew = listData.stream().filter(item -> Objects.equals(p.getChargeCompanyId(), item.getChargeCompanyId())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(listDateNew)) {
msg.append("").append(count + 3).append("行:工作组成员单位已存在,请修改。<br/>");
}
}
// 校验重复
List<PayDraftingGroupSubItemContacts> listPayDraftingGroupSubItemContacts = checkRepeat(p,msg,count,listCompany,listContactsInfo);
p.setPayDraftingGroupSubItemContactsList(listPayDraftingGroupSubItemContacts);
// 校验成员唯一性
List<PayDraftingGroupSubItem> listCompanyAndContactsNew = listCompanyAndContacts.stream().filter(item -> Objects.equals(p.getChargeCompanyTemporaryName(), item.getChargeCompanyTemporaryName())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(listCompanyAndContactsNew)) {
msg.append("").append(count + 3).append("行:工作组成员单位重复出现,请修改。<br/>");
}
listCompanyAndContacts.add(p);
// 校验字段值
StringBuilder s = ValidUtil.validateExcel(p, (count + 3));
if (!StringUtils.isBlank(s)) {
msg.append(s);
}
});
if (StringUtils.isBlank(msg)) {
// 拷贝企业,联系人
list.forEach(this::setPayDraftingGroupSubItemAdd);
// 更新数据
payDraftingGroupSubItemService.saveBatch(list);
list.forEach(p->{
String draftingGroupSubItemId = p.getId();
List<PayDraftingGroupSubItemContacts> listPayDraftingGroupSubItemContacts = p.getPayDraftingGroupSubItemContactsList();
if(!CollectionUtils.isEmpty(listPayDraftingGroupSubItemContacts)){
for (int i = 0; i < listPayDraftingGroupSubItemContacts.size(); i++) {
listPayDraftingGroupSubItemContacts.get(i).setDraftingGroupId(p.getDraftingGroupId());
listPayDraftingGroupSubItemContacts.get(i).setDraftingGroupSubId(draftingGroupSubItemId);
listPayDraftingGroupSubItemContacts.get(i).setOrderNum(i + 1);
}
payDraftingGroupSubItemContactsService.saveBatch(listPayDraftingGroupSubItemContacts);
}
});
}
}
}
}catch (Exception e){
log.error(e.getMessage(),e);
throw new JeroBootException("文件导入失败!");
} finally {
try {
file.getInputStream().close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(!StringUtils.isBlank(msg)){
throw new JeroBootException(msg.toString());
}
}
}
/**
* 验证重复
* @param p
* @param msg
* @param count 行数
* @param listCompany 企业集合
* @param listContactsInfo 联系人集合
* @return
*/
private List<PayDraftingGroupSubItemContacts> checkRepeat(PayDraftingGroupSubItem p, StringBuilder msg, int count, List<PayCompanyManagement> listCompany, List<PayContactsManagement> listContactsInfo) {
List<PayDraftingGroupSubItemContacts> list = new ArrayList<>();
HashMap<String,Integer> map = new HashMap<>();
if(!StringUtils.isBlank(p.getContactsNameOne())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameOne(),1,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}else{
msg.append("").append(count + 3).append("行:企业联系人1不能为空,请修改。<br/>");
}
if(!StringUtils.isBlank(p.getContactsNameTwo())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameTwo(),2,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
if(!StringUtils.isBlank(p.getContactsNameThree())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameThree(),3,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
if(!StringUtils.isBlank(p.getContactsNameFour())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameFour(),4,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
if(!StringUtils.isBlank(p.getContactsNameFive())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameFive(),5,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
if(!StringUtils.isBlank(p.getContactsNameSix())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameSix(),6,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
if(!StringUtils.isBlank(p.getContactsNameSeven())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameSeven(),7,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
if(!StringUtils.isBlank(p.getContactsNameEight())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameEight(),8,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
if(!StringUtils.isBlank(p.getContactsNameNine())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameNine(),9,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
if(!StringUtils.isBlank(p.getContactsNameTen())){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = setContactsId(msg,p.getContactsNameTen(),10,count,listCompany,listContactsInfo,map);
list.add(payDraftingGroupSubItemContacts);
}
return list;
}
private PayDraftingGroupSubItemContacts setContactsId(StringBuilder msg,String name,int num,int count,List<PayCompanyManagement> listCompany,List<PayContactsManagement> listContactsInfo,HashMap<String,Integer> map){
PayDraftingGroupSubItemContacts payDraftingGroupSubItemContacts = new PayDraftingGroupSubItemContacts();
if(map.containsKey(name)){
int c = map.get(name);
msg.append("").append(count + 3).append("行:企业联系人").append(c).append("与企业联系人").append(num).append("重复,请修改。<br/>");
}else{
map.put(name,num);
}
if (!CollectionUtils.isEmpty(listCompany)) {
// 通过联系人获取联系人id
List<PayContactsManagement> listContacts = listContactsInfo.stream().filter(item ->
Objects.equals(item.getName(), name)
&& Objects.equals(item.getCompanyId(), listCompany.get(0).getId())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(listContacts)) {
msg.append("").append(count + 3).append("行:该企业下不存在企业联系人").append(num).append(",请修改。<br/>");
} else {
payDraftingGroupSubItemContacts.setContactsId(listContacts.get(0).getId());
}
}
return payDraftingGroupSubItemContacts;
}
}
@@ -0,0 +1,257 @@
package com.jero.drafting.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class PayDraftingGroupSubItemExcel implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 临时成员单位
*/
@Excel(name = "成员单位", width = 15)
@ApiModelProperty(value = "临时成员单位")
private String chargeCompanyTemporaryName;
/**
* 备注
*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 企业联系人1名称
*/
@Excel(name = "企业联系人1", width = 15)
@ApiModelProperty(value = "企业联系人1名称")
private String contactsNameOne;
/**
* 企业联系人1手机号
*/
@Excel(name = "企业联系人1手机号", width = 17)
private String contactsPhoneOne;
/**
* 企业联系人1邮箱
*/
@Excel(name = "企业联系人1邮箱", width = 15)
private String contactsEmailOne;
/**
* 联系人1备注
*/
@Excel(name = "联系人1备注", width = 15)
@ApiModelProperty(value = "联系人1备注")
private String remarksOne;
/**
* 企业联系人2名称
*/
@Excel(name = "企业联系人2", width = 15)
@ApiModelProperty(value = "企业联系人2名称")
private String contactsNameTwo;
/**
* 企业联系人2手机号
*/
@Excel(name = "企业联系人2手机号", width = 17)
private String contactsPhoneTwo;
/**
* 企业联系人2邮箱
*/
@Excel(name = "企业联系人2邮箱", width = 15)
private String contactsEmailTwo;
/**
* 联系人2备注
*/
@Excel(name = "联系人2备注", width = 15)
@ApiModelProperty(value = "联系人2备注")
private String remarksTwo;
/**
* 企业联系人3名称
*/
@Excel(name = "企业联系人3", width = 15)
@ApiModelProperty(value = "企业联系人3名称")
private String contactsNameThree;
/**
* 企业联系人3手机号
*/
@Excel(name = "企业联系人3手机号", width = 17)
private String contactsPhoneThree;
/**
* 企业联系人3邮箱
*/
@Excel(name = "企业联系人3邮箱", width = 15)
private String contactsEmailThree;
/**
* 联系人3备注
*/
@Excel(name = "联系人3备注", width = 15)
@ApiModelProperty(value = "联系人3备注")
private String remarksThree;
/**
* 企业联系人4名称
*/
@Excel(name = "企业联系人4", width = 15)
@ApiModelProperty(value = "企业联系人4名称")
private String contactsNameFour;
/**
* 企业联系人4手机号
*/
@Excel(name = "企业联系人4手机号", width = 17)
private String contactsPhoneFour;
/**
* 企业联系人4邮箱
*/
@Excel(name = "企业联系人4邮箱", width = 15)
private String contactsEmailFour;
/**
* 联系人4备注
*/
@Excel(name = "联系人4备注", width = 15)
@ApiModelProperty(value = "联系人4备注")
private String remarksFour;
/**
* 企业联系人5名称
*/
@Excel(name = "企业联系人5", width = 15)
@ApiModelProperty(value = "企业联系人5名称")
private String contactsNameFive;
/**
* 企业联系人5手机号
*/
@Excel(name = "企业联系人5手机号", width = 17)
private String contactsPhoneFive;
/**
* 企业联系人5邮箱
*/
@Excel(name = "企业联系人5邮箱", width = 15)
private String contactsEmailFive;
/**
* 联系人5备注
*/
@Excel(name = "联系人5备注", width = 15)
@ApiModelProperty(value = "联系人5备注")
private String remarksFive;
/**
* 企业联系人6名称
*/
@Excel(name = "企业联系人6", width = 15)
@ApiModelProperty(value = "企业联系人6名称")
private String contactsNameSix;
/**
* 企业联系人6手机号
*/
@Excel(name = "企业联系人6手机号", width = 17)
private String contactsPhoneSix;
/**
* 企业联系人6邮箱
*/
@Excel(name = "企业联系人6邮箱", width = 15)
private String contactsEmailSix;
/**
* 联系人6备注
*/
@Excel(name = "联系人6备注", width = 15)
@ApiModelProperty(value = "联系人6备注")
private String remarksSix;
/**
* 企业联系人7名称
*/
@Excel(name = "企业联系人7", width = 15)
@ApiModelProperty(value = "企业联系人7名称")
private String contactsNameSeven;
/**
* 企业联系人7手机号
*/
@Excel(name = "企业联系人7手机号", width = 17)
private String contactsPhoneSeven;
/**
* 企业联系人7邮箱
*/
@Excel(name = "企业联系人7邮箱", width = 15)
private String contactsEmailSeven;
/**
* 联系人7备注
*/
@Excel(name = "联系人7备注", width = 15)
@ApiModelProperty(value = "联系人7备注")
private String remarksSeven;
/**
* 企业联系人8名称
*/
@Excel(name = "企业联系人8", width = 15)
@ApiModelProperty(value = "企业联系人8名称")
private String contactsNameEight;
/**
* 企业联系人8手机号
*/
@Excel(name = "企业联系人8手机号", width = 17)
private String contactsPhoneEight;
/**
* 企业联系人8邮箱
*/
@Excel(name = "企业联系人8邮箱", width = 15)
private String contactsEmailEight;
/**
* 联系人8备注
*/
@Excel(name = "联系人8备注", width = 15)
@ApiModelProperty(value = "联系人8备注")
private String remarksEight;
/**
* 企业联系人9名称
*/
@Excel(name = "企业联系人9", width = 15)
@ApiModelProperty(value = "企业联系人9名称")
private String contactsNameNine;
/**
* 企业联系人9手机号
*/
@Excel(name = "企业联系人9手机号", width = 17)
private String contactsPhoneNine;
/**
* 企业联系人9邮箱
*/
@Excel(name = "企业联系人9邮箱", width = 15)
private String contactsEmailNine;
/**
* 联系人9备注
*/
@Excel(name = "联系人9备注", width = 15)
@ApiModelProperty(value = "联系人9备注")
private String remarksNine;
/**
* 企业联系人10名称
*/
@Excel(name = "企业联系人10", width = 15)
@ApiModelProperty(value = "企业联系人10名称")
private String contactsNameTen;
/**
* 企业联系人10手机号
*/
@Excel(name = "企业联系人10手机号", width = 17)
private String contactsPhoneTen;
/**
* 企业联系人10邮箱
*/
@Excel(name = "企业联系人10邮箱", width = 15)
private String contactsEmailTen;
/**
* 联系人10备注
*/
@Excel(name = "联系人10备注", width = 15)
@ApiModelProperty(value = "联系人10备注")
private String remarksTen;
@Excel(name = "标签名称", width = 15)
@ApiModelProperty(value = "标签")
private String label;
}
@@ -0,0 +1,29 @@
package com.jero.drafting.vo;
import com.jero.drafting.entity.PayDraftingGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class PayDraftingGroupVo extends PayDraftingGroup {
/**
* 打包(1:是,0:否)
*/
private String pack;
/**
* 项目id
*/
private String projectId;
/**
* 当前登录人是否可以操作(1为可操作,2为不可操作)
*/
private Integer checkoutOperation;
/**
* 工作组名称
*/
private String workingGroupName;
}
@@ -158,7 +158,7 @@ spring:
min-idle: 0 #最小等待连接中的数量,设 0 为没有限制
shutdown-timeout: 100ms
# password: hzwlsoft.com
password: 123456
# password: 123456
# port: 4780
port: 6379