通用项目详情完善

This commit is contained in:
梁琦涛
2021-09-14 16:36:41 +08:00
parent 6ef135340e
commit 123bb8c6a8
10 changed files with 338 additions and 54 deletions
@@ -0,0 +1,14 @@
package com.jero.common.mapper;
import com.jero.project.entity.PayCommonProject;
public interface ProjectDetailMapper {
/**
* @Description 查询项目信息
* @Author lqt
* @Date 2021/9/14
* @Param projectId 项目id
* @Return
* @Exception
*/
PayCommonProject queryProject(String projectId);
}
@@ -0,0 +1,55 @@
<?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.common.mapper.ProjectDetailMapper">
<select id="queryProject" resultType="com.jero.project.entity.PayCommonProject">
<!-- 普通项目-->
select c.id,c.charge_project, c.charge_use, c.principal_id,c.principal_name,c.contacts_temporary_id,c.contacts_temporary_name,c.charge_company_temporary_name,c.receivable_amount,c.paid_amount,c.need_invoice,c.pack,c.in_account,c.make_invoice,c.mail,c.create_time,1 as projectType,'' as phone,'' as email,c.remarks,c.contract_num,c.charge_company_temporary_id
from pay_common_project c
<where>
<if test="projectId != null and projectId != ''">
AND c.id = #{projectId}
</if>
</where>
<!--工作组项目-->
UNION ALL
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,g.principal_name_a,gsub.contacts_temporary_id_one,gsub.contacts_temporary_name_one,gsub.charge_company_temporary_name,gsub.receivable_amount,gsub.paid_amount,gsub.need_invoice,gsub.pack,gsub.in_account,gsub.make_invoice,gsub.mail,gsub.create_time,2,'','',gsub.remarks,gsub.contract_num,gsub.charge_company_temporary_id
from pay_working_group g
inner join pay_working_group_subitem gsub on g.id = gsub.charge_company_id
<where>
<if test="projectId != null and projectId != ''">
AND gsub.id = #{projectId}
</if>
</where>
<!-- 会议项目-->
UNION ALL
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, meeting.director_name,sit.company_contact_temporary_id,sit.company_contact_name,sit.company_name,sit.amount_receivable,sit.paid_amount,sit.need_invoice,sit.pack,sit.in_account,sit.make_invoice,sit.mail,sit.create_time,3,'','',sit.remark,'',sit.company_temporary_id
from pay_meeting meeting
inner join pay_meeting_situation sit on meeting.id = sit.meeting_id
<where>
<if test="projectId != null and projectId != ''">
AND sit.id = #{projectId}
</if>
</where>
<!-- 会员项目-->
UNION ALL
select msub.id,pmp.project_name,msub.charge_use,pmp.director_id,pmp.director_name,msub.company_contact_temporary_id,msub.company_contact_name,msub.company_name,msub.amount_receivable,msub.paid_amount,msub.need_invoice,msub.pack,msub.in_account,msub.make_invoice,msub.mail,msub.create_time,4,'','',msub.remark,msub.contract_no,msub.company_temporary_id
from pay_member_project pmp
inner join pay_member_project_subitem msub on pmp.id = msub.project_id
<where>
<if test="projectId != null and projectId != ''">
AND msub.id = #{projectId}
</if>
</where>
<!-- 标协会员项目-->
UNION ALL
select tmsub.id,tmember.project_name,tmsub.charge_use,'','','',tmsub.liaison_man,tmsub.company_name,tmsub.amount_receivable,tmsub.paid_amount,tmsub.invoice_requirements,tmsub.pack,tmsub.in_account,tmsub.make_invoice,tmsub.mail,tmsub.create_time,5,tmsub.mobile,tmsub.email,'','',tmsub.company_id
from tb_member_project tmember
inner join tb_member_project_subitem tmsub on tmember.id=tmsub.project_id
<where>
<if test="projectId != null and projectId != ''">
AND tmsub.id = #{projectId}
</if>
</where>
</select>
</mapper>
@@ -1,18 +1,16 @@
package com.jero.common.service;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.vo.ProjectDetailVO;
public interface ProjectDetailService {
/**
* @Description 获取企业信息,联系人信息,到账信息,开票邮寄记录
* @Description 获取项目详情
* @Author lqt
* @Date 2021/9/2
* @Param projectId项目id
* @Param companyId 企业id
* @Param contactsId 联系人id
* @Return
* @Exception
*/
JSONObject getProjectDetail(String projectId,String companyId,String contactsId);
ProjectDetailVO getProjectDetail(String projectId);
}
@@ -1,22 +1,32 @@
package com.jero.common.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.common.ProjectCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.mapper.ProjectDetailMapper;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.util.PasswordUtil;
import com.jero.common.vo.ProjectDetailVO;
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.mail.entity.PayMailBill;
import com.jero.mail.service.IPayMailBillService;
import com.jero.pack.common.PackCommon;
import com.jero.payment.entity.PayPaymentRecord;
import com.jero.payment.service.IPayPaymentRecordService;
import com.jero.project.entity.PayCommonProject;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
@@ -24,34 +34,116 @@ import java.util.Objects;
public class ProjectDetailServiceImpl implements ProjectDetailService {
@Autowired
IPayCompanyManagementTemporaryService payCompanyManagementTemporaryService;
private IPayCompanyManagementTemporaryService payCompanyManagementTemporaryService;
@Autowired
IPayContactsManagementTemporaryService payContactsManagementTemporaryService;
private IPayContactsManagementTemporaryService payContactsManagementTemporaryService;
@Autowired
IPayPaymentRecordService payPaymentRecordService;
private IPayCompanyManagementService payCompanyManagementService;
@Autowired
IPayMailBillService payMailBillService;
private IPayContactsManagementService payContactsManagementService;
@Autowired
private IPayPaymentRecordService payPaymentRecordService;
@Autowired
private IPayMailBillService payMailBillService;
@Resource
private ProjectDetailMapper projectDetailMapper;
@Autowired
private ISysBaseAPI sysBaseAPI;
@Override
public JSONObject getProjectDetail(String projectId, String companyId, String contactsId) {
if(StringUtils.isBlank(projectId) || StringUtils.isBlank(companyId) || StringUtils.isBlank(contactsId)){
throw new JeroBootException("项目id、企业id、联系人id不能为空!");
public ProjectDetailVO getProjectDetail(String projectId) {
if(StringUtils.isBlank(projectId)){
throw new JeroBootException("项目id不能为空!");
}
// 获取项目信息
PayCommonProject payCommonProject = projectDetailMapper.queryProject(projectId);
if(Objects.isNull(payCommonProject)){
throw new JeroBootException("项目不存在!");
}
ProjectDetailVO projectDetailVO = new ProjectDetailVO();
projectDetailVO.setPrincipalName(payCommonProject.getPrincipalName());
projectDetailVO.setReceivableAmount(payCommonProject.getReceivableAmount());
projectDetailVO.setRemarks(payCommonProject.getRemarks());
projectDetailVO.setChargeWay(payCommonProject.getChargeWay());
if(!Objects.isNull(payCommonProject.getChargeWay())){
projectDetailVO.setChargeWay_dictText(sysBaseAPI.translateDict("payment_charge_use",String.valueOf(payCommonProject.getChargeWay())));
}
projectDetailVO.setContractNum(payCommonProject.getContractNum());
projectDetailVO.setNeedInvoice(payCommonProject.getNeedInvoice());
if(!Objects.isNull(payCommonProject.getNeedInvoice())){
projectDetailVO.setNeedInvoice_dictText(sysBaseAPI.translateDict("invoice_type",String.valueOf(payCommonProject.getNeedInvoice())));
}
projectDetailVO.setPack(payCommonProject.getPack());
if(!Objects.isNull(payCommonProject.getPack())){
projectDetailVO.setPack_dictText(sysBaseAPI.translateDict("yn",String.valueOf(payCommonProject.getPack())));
}
// 标协会员,直接查询企业,联系人
if(Objects.equals(payCommonProject.getProjectType(), ProjectCommon.PROJECT_TYPE5)){
PayCompanyManagement payCompanyManagement = payCompanyManagementService.getById(payCommonProject.getChargeCompanyTemporaryId());
if(Objects.isNull(payCompanyManagement)){
throw new JeroBootException("企业不存在!");
}
projectDetailVO.setCompanyName(payCompanyManagement.getCompanyName());
projectDetailVO.setPostalCodeCompany(payCompanyManagement.getPostalCode());
projectDetailVO.setCompanyAddress(payCompanyManagement.getCompanyAddress());
PayContactsManagement payContactsManagement = payContactsManagementService.getById(payCommonProject.getContactsTemporaryId());
if(Objects.isNull(payContactsManagement)){
throw new JeroBootException("联系人不存在!");
}
projectDetailVO.setName(payContactsManagement.getName());
projectDetailVO.setGender(payContactsManagement.getGender());
if(!Objects.isNull(payContactsManagement.getGender())){
projectDetailVO.setGender_dictText(sysBaseAPI.translateDict("sex",String.valueOf(payContactsManagement.getGender())));
}
projectDetailVO.setPost(payContactsManagement.getPost());
if(!StringUtils.isBlank(payContactsManagement.getPhone())){
projectDetailVO.setPhone(PasswordUtil.decrypt(payContactsManagement.getPhone()));
}
if(!StringUtils.isBlank(payContactsManagement.getEmail())){
projectDetailVO.setEmail(PasswordUtil.decrypt(payContactsManagement.getEmail()));
}
projectDetailVO.setPostalCodeContacts(payContactsManagement.getPostalCode());
projectDetailVO.setContactAddress(payContactsManagement.getContactAddress());
}else{
PayCompanyManagementTemporary payCompanyManagementTemporary = payCompanyManagementTemporaryService.getById(payCommonProject.getChargeCompanyTemporaryId());
if(Objects.isNull(payCompanyManagementTemporary)){
throw new JeroBootException("企业不存在!");
}
projectDetailVO.setCompanyName(payCompanyManagementTemporary.getCompanyName());
projectDetailVO.setPostalCodeCompany(payCompanyManagementTemporary.getPostalCode());
projectDetailVO.setCompanyAddress(payCompanyManagementTemporary.getCompanyAddress());
PayContactsManagementTemporary payContactsManagementTemporary = payContactsManagementTemporaryService.getById(payCommonProject.getContactsTemporaryId());
if(Objects.isNull(payContactsManagementTemporary)){
throw new JeroBootException("联系人不存在!");
}
projectDetailVO.setName(payContactsManagementTemporary.getName());
projectDetailVO.setGender(payContactsManagementTemporary.getGender());
if(!Objects.isNull(payContactsManagementTemporary.getGender())){
projectDetailVO.setGender_dictText(sysBaseAPI.translateDict("sex",String.valueOf(payContactsManagementTemporary.getGender())));
}
projectDetailVO.setPost(payContactsManagementTemporary.getPost());
if(!StringUtils.isBlank(payContactsManagementTemporary.getPhone())){
projectDetailVO.setPhone(PasswordUtil.decrypt(payContactsManagementTemporary.getPhone()));
}
if(!StringUtils.isBlank(payContactsManagementTemporary.getEmail())){
projectDetailVO.setEmail(PasswordUtil.decrypt(payContactsManagementTemporary.getEmail()));
}
projectDetailVO.setPostalCodeContacts(payContactsManagementTemporary.getPostalCode());
projectDetailVO.setContactAddress(payContactsManagementTemporary.getContactAddress());
}
JSONObject json = new JSONObject();
// 企业信息
PayCompanyManagementTemporary payCompanyManagementTemporary = payCompanyManagementTemporaryService.getById(companyId);
json.put("company",payCompanyManagementTemporary);
// 联系人信息
PayContactsManagementTemporary payContactsManagementTemporary = payContactsManagementTemporaryService.getById(contactsId);
json.put("contacts",payContactsManagementTemporary);
// 到账信息
LambdaQueryWrapper<PayPaymentRecord> queryWrapperPayPaymentRecord = new LambdaQueryWrapper<>();
queryWrapperPayPaymentRecord.eq(PayPaymentRecord::getProjectId,projectId);
List<PayPaymentRecord> payPaymentRecordList = payPaymentRecordService.list(queryWrapperPayPaymentRecord);
json.put("paymentRecord",payPaymentRecordList);
if(!CollectionUtils.isEmpty(payPaymentRecordList)){
projectDetailVO.setPaymentRecord(payPaymentRecordList);
}
// 开票邮寄记录
List<PayMailBill> listMailBillVO = payMailBillService.selectMailBillVO(projectId);
json.put("mailBill",listMailBillVO);
return json;
if(!CollectionUtils.isEmpty(listMailBillVO)){
projectDetailVO.setMailBill(listMailBillVO);
}
return projectDetailVO;
}
}
@@ -0,0 +1,131 @@
package com.jero.common.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.mail.entity.PayMailBill;
import com.jero.payment.entity.PayPaymentRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@Data
public class ProjectDetailVO implements Serializable {
/**
* 项目负责人
*/
@ApiModelProperty(value = "项目负责人")
private String principalName;
/**
* 应收金额
*/
@ApiModelProperty(value = "应收金额")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 来款方式
*/
@ApiModelProperty(value = "来款方式")
private Integer chargeWay;
/**
* 来款方式
*/
@ApiModelProperty(value = "来款方式")
private String chargeWay_dictText;
/**
* 合同编号
*/
@ApiModelProperty(value = "合同编号")
private String contractNum;
/**
* 是否需要发票
*/
@ApiModelProperty(value = "是否需要发票")
private Integer needInvoice;
/**
* 是否需要发票
*/
@ApiModelProperty(value = "是否需要发票")
private String needInvoice_dictText;
/**
* 是否打包
*/
@ApiModelProperty(value = "是否打包")
private Integer pack;
/**
* 是否打包
*/
@ApiModelProperty(value = "是否打包")
private String pack_dictText;
/**
* 来款企业
*/
@ApiModelProperty(value = "来款企业")
private String companyName;
/**
* 企业邮编
*/
@ApiModelProperty(value = "企业邮编")
private String postalCodeCompany;
/**
* 企业地址
*/
@ApiModelProperty(value = "企业地址")
private String companyAddress;
/**
* 企业联系人
*/
@ApiModelProperty(value = "企业联系人")
private String name;
/**
* 企业联系人性别
*/
@ApiModelProperty(value = "企业联系人性别")
private Integer gender;
/**
* 企业联系人性别
*/
@ApiModelProperty(value = "企业联系人性别")
private String gender_dictText;
/**
* 企业联系人职务
*/
@ApiModelProperty(value = "企业联系人职务")
private String post;
/**
* 企业联系人电话
*/
@ApiModelProperty(value = "企业联系人电话")
private String phone;
/**
* 企业联系人邮箱
*/
@ApiModelProperty(value = "企业联系人邮箱")
private String email;
/**
* 企业联系人邮编
*/
@ApiModelProperty(value = "企业联系人邮编")
private String postalCodeContacts;
/**
* 企业联系人地址
*/
@ApiModelProperty(value = "企业联系人地址")
private String contactAddress;
/**
* 到账信息
*/
@ApiModelProperty(value = "到账信息")
private List<PayPaymentRecord> paymentRecord;
/**
* 开票邮寄记录
*/
@ApiModelProperty(value = "开票邮寄记录")
private List<PayMailBill> mailBill;
}