Merge branch 'xuqiubiangeng1026'

# Conflicts:
#	jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java
This commit is contained in:
梁琦涛
2021-11-01 11:15:08 +08:00
32 changed files with 929 additions and 176 deletions
@@ -24,7 +24,9 @@ public enum CompanyMessageEnums {
MSG10("QY_10_YJTZ_MAIL_CONTRACT","邮寄通知","contractName"),//查看该物流信息,contractName
MSG11("QY_11_CKTZ_PAY","催款通知","projectName"),//弹窗:查看该项目详情
MSG12("QY_12_WJTZ_WORK_GROUP_SEND","文件通知","workGroupName,systemAddress,wxName"),//弹窗:查看该项目详情,workGroupNamesystemUrlwxName
MSG13("QY_13_HYTZ_FBW_CREATE","会议通知","meetingName,busId");//点击跳转到报名页面,meetingName,busId
MSG13("QY_13_JFTZ_DZ_CREATE","缴费通知","projectName,amount"),//弹窗:查看该项目详情,projectName,amount
MSG14("QY_14_KPTZ_KP_CREATE","开票通知","projectName"),//弹窗:查看该项目详情,projectName
MSG15("QY_15_HYTZ_NOT_AUDIT_CREATE","会议通知","");//弹窗:查看该会议详情
@@ -19,7 +19,12 @@ public enum ManagementMessageEnums {
MSG6("GL_6_DBTZ_ADD","打包通知","projectName"),//查看该项目详情,projectName
MSG7("GL_7_DBTZ_CONTRACT","打包通知","projectName"),//查看项目详情,projectName
MSG8("GL_8_HYTZ_ON_ACCESS_UPDATE","会议通知","meetingName,username1,username2,record"),//查看该参会人详情,meetingNameusername1username2
MSG9("GL_9_QYTZ_CREATE","企业通知","");//企业列表页
MSG9("GL_9_QYTZ_CREATE","企业通知",""),//企业列表页
MSG10("GL_10_HYTZ_CREATE","会议通知","meetingName"),//参会人员列表页, meetingName
MSG11("GL_11_DZTZ_DZ_CREATE","到账通知","projectName,time,amount"),//查看该项目详情, projectName,time,amount
MSG12("GL_12_KPTZ_KP_CREATE","开票通知","projectName,time,amount,num"),//查看该项目详情,projectName,time,amount,num
MSG13("GL_13_YJTZ_PJ_CREATE","邮寄通知","projectName"),//查看该项目详情, projectName
MSG14("GL_14_YJTZ_HT_CREATE","邮寄通知","contractNum,contractName");//跳转到合同的详情页面, contractNum,contractName
private String code;
@@ -21,6 +21,11 @@ public enum MessageUrlEnums {
M_OPEN_TYPE7("M_OPEN_TYPE7","component","@comp/ProjectDetailModal"),
M_OPEN_TYPE8("M_OPEN_TYPE8","url","/incomePayments/meetManage/SignUpInfoDetail"),
M_OPEN_TYPE9("M_OPEN_TYPE9","url","/businessManagement/BusinessManagement"),
M_OPEN_TYPE10("M_OPEN_TYPE10","url","/businessManagement/BusinessManagement"),// todo 未改
M_OPEN_TYPE11("M_OPEN_TYPE11","url","/businessManagement/BusinessManagement"),// todo 未改
M_OPEN_TYPE12("M_OPEN_TYPE12","url","/businessManagement/BusinessManagement"),// todo 未改
M_OPEN_TYPE13("M_OPEN_TYPE13","url","/businessManagement/BusinessManagement"),// todo 未改
M_OPEN_TYPE14("M_OPEN_TYPE14","url","/businessManagement/BusinessManagement"),// todo 未改
// todo 待定企业端
C_OPEN_TYPE1("C_OPEN_TYPE1","href",""),
C_OPEN_TYPE2("C_OPEN_TYPE2","component","MessagePage/MeetingDetailModal"),
@@ -34,7 +39,10 @@ public enum MessageUrlEnums {
C_OPEN_TYPE10("C_OPEN_TYPE10","href","https://www.kuaidi100.com/all/hhair56.shtml?mscomnu"),
C_OPEN_TYPE11("C_OPEN_TYPE11","component","MessagePage/ProjectDetailModal"),
C_OPEN_TYPE12("C_OPEN_TYPE12","component","MessagePage/ProjectDetailModal"),
C_OPEN_TYPE13("C_OPEN_TYPE13","href","");
C_OPEN_TYPE13("C_OPEN_TYPE13","href",""),// todo 未改
C_OPEN_TYPE14("C_OPEN_TYPE14","href",""),// todo 未改
C_OPEN_TYPE15("C_OPEN_TYPE15","href","");// todo 未改
/**
* 业务类型(email:邮件 bpm:流程)
@@ -177,9 +177,6 @@
<!-- 会员项目-->
UNION ALL
select count(*) as num from pay_member_project_subitem msub where DATE_FORMAT(create_time,'%Y-%m') = #{time}
<!-- 标协会员项目-->
UNION ALL
select count(*) as num from tb_member_project_subitem tmsub where DATE_FORMAT(create_time,'%Y-%m') = #{time}
) a
</select>
</mapper>
@@ -295,6 +295,36 @@ public class SendMessageServiceImpl implements SendMessageService {
signature = "中汽中心标准所";
templateId = "1b9dd79bb217420fa25725feb1ffaef4";
break;
case "GL_10_HYTZ_CREATE":
//中汽中心标准所-管理端-会议通知-10
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "c842206392b944998bf9dd2742570931";
break;
case "GL_11_DZTZ_DZ_CREATE":
//中汽中心标准所-管理端-到账通知-11
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "908238343aa94bab9d3921f77e98431d";
break;
case "GL_12_KPTZ_KP_CREATE":
//中汽中心标准所-管理端-开票通知-12
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "626041c1823240b99f7aad68aa2bd9ec";
break;
case "GL_13_YJTZ_PJ_CREATE":
//中汽中心标准所-管理端-邮寄通知-13
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "b933c487581146f38a7a7bf306b8aa0e";
break;
case "GL_14_YJTZ_HT_CREATE":
//中汽中心标准所-管理端-邮寄通知-14
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "6f054af3cfc345168e1e2e3cbf03403b";
break;
case "QY_1_HYTZ_WORK_GROUP_CREATE":
//中汽中心标准所-企业端-会议通知-1
sender = "8821092414406";
@@ -369,13 +399,25 @@ public class SendMessageServiceImpl implements SendMessageService {
//中汽中心标准所-企业端-文件通知-12
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "e1a089109aaa4820927d488613171b54";//todo 审核不通过
templateId = "e1a089109aaa4820927d488613171b54";
break;
case "QY_13_HYTZ_FBW_CREATE":
//中汽中心标准所-企业端-会议通知-13
case "QY_13_JFTZ_DZ_CREATE":
//中汽中心标准所-企业端-缴费通知-13
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "926e49e09008438b88d80849fe9f5bbb";
templateId = "8beb893a9ce64444a71019c9eec6e310";
break;
case "QY_14_KPTZ_KP_CREATE":
//中汽中心标准所-企业端-开票通知-14
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "9895707d70584324b3ff398b362a83e6";
break;
case "QY_15_HYTZ_NOT_AUDIT_CREATE":
//中汽中心标准所-企业端-会议通知-15
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "5f438a655ed148c69f9d17e881112017";
break;
default:
throw new JeroBootException("codeType flase.");
@@ -80,11 +80,11 @@ public class PayIncomeContractCommon {
*/
public final static List<String> LIST_SPENDING_CONTRACT = Arrays.asList("合同编号","合同名称","签订单位","签订联系人","是否开口","负责人",
"部门名称","签订合同总金额","税率","未税金额","合同签订日期","合同终止日期","合同约定主要时点",
"金额","金额","金额","账款状态","合同约定付款次数");
"金额","金额","金额","账款状态","合同约定付款次数");
/**
* 支出合同分期信息excel 表头
*/
public final static List<String> LIST_SPENDING_CONTRACT_INSTALLMENT = Arrays.asList("阶段","阶段应","阶段应时间","阶段实","阶段实时间");
public final static List<String> LIST_SPENDING_CONTRACT_INSTALLMENT = Arrays.asList("阶段","阶段应","阶段应时间","阶段实","阶段实时间");
/**
* 来源(1:收入合同,2:打包管理)
@@ -456,12 +456,39 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
if(!Objects.isNull(p.getChargeUse())){
p.setChargeUse_dictText(sysBaseAPI.translateDict("payment_charge_use",String.valueOf(p.getChargeUse())));
}
if(Objects.isNull(p.getPaidAmount())){
p.setPaidAmount(new BigDecimal("0.00"));
}
});
BigDecimal b = listProject.stream().map(ProjectOutput::getPaidAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
payIncomeContractDetailOutput.setAmountReceived(b);
payIncomeContractDetailOutput.setListProject(listProject);
}else{
payIncomeContractDetailOutput.setAmountReceived(new BigDecimal("0.00"));
}
return Result.OK(payIncomeContractDetailOutput);
}
/**
* 通过companyId查询合同编号
*
* @param companyId 企业id
*/
@ApiOperation(value="收入合同-通过companyId查询合同编号", notes="收入合同-通过companyId查询合同编号")
@GetMapping(value = "/queryByCompanyId")
public Result<?> queryByCompanyId(@RequestParam(name="companyId") String companyId) {
if (StringUtils.isBlank(companyId)) {
return Result.error("企业id不能为空!");
}
LambdaQueryWrapper<PayIncomeContract> queryPayIncomeContract = new LambdaQueryWrapper();
queryPayIncomeContract.eq(PayIncomeContract::getSignedCompanyId,companyId);
List<PayIncomeContract> listPayIncomeContract = payIncomeContractService.list(queryPayIncomeContract);
List<String> list = new ArrayList<>();
if(!CollectionUtils.isEmpty(listPayIncomeContract)){
list = listPayIncomeContract.stream().map(PayIncomeContract::getContractNum).collect(Collectors.toList());
}
return Result.OK(list);
}
/**
* 通过id查询详情
*
@@ -520,8 +547,15 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
if(!Objects.isNull(p.getChargeUse())){
p.setChargeUse_dictText(sysBaseAPI.translateDict("payment_charge_use",String.valueOf(p.getChargeUse())));
}
if(Objects.isNull(p.getPaidAmount())){
p.setPaidAmount(new BigDecimal("0.00"));
}
});
BigDecimal b = listProject.stream().map(ProjectOutput::getPaidAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
payIncomeContractDetailOutput.setAmountReceived(b);
payIncomeContractDetailOutput.setListProject(listProject);
}else{
payIncomeContractDetailOutput.setAmountReceived(new BigDecimal("0.00"));
}
if(!CollectionUtils.isEmpty(listArchive)){
payIncomeContractDetailOutput.setListArchive(listArchive);
@@ -576,34 +610,55 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
LambdaQueryWrapper<PayIncomeContractInstallment> query = new LambdaQueryWrapper<>();
query.in(PayIncomeContractInstallment::getContractId,listId);
List<PayIncomeContractInstallment> listPayIncomeContractInstallment = payIncomeContractInstallmentService.list(query);
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
exportList.forEach(p->{
String str = JSON.toJSONString(p);
Map<String,String> map = JSONObject.parseObject(str,Map.class);
map.put("contractDate",DateUtils.date2Str(p.getContractDate(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("terminationDate",DateUtils.date2Str(p.getTerminationDate(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("opening",sysBaseAPI.translateDict("yn",String.valueOf(p.getOpening())));
map.put("accountStatus",sysBaseAPI.translateDict("revenue_contract_account_status",String.valueOf(p.getAccountStatus())));
map.put("pack",sysBaseAPI.translateDict("yn",String.valueOf(p.getPack())));
List<PayIncomeContractInstallment> listSub = listPayIncomeContractInstallment.stream().filter(item->
Objects.equals(p.getId(),item.getContractId())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listSub)){
exportList.forEach(p->{
if(Objects.isNull(p.getAccountsReceivableAmount())){
p.setAccountsReceivableAmount(new BigDecimal("0.00"));
}
if(Objects.isNull(p.getAmountReceived())){
p.setAmountReceived(new BigDecimal("0.00"));
}
p.setOutstandingAmount(p.getAccountsReceivableAmount().subtract(p.getAmountReceived()));
// 已收全款
if(p.getOutstandingAmount().compareTo(new BigDecimal("0.00")) == 0
|| p.getOutstandingAmount().compareTo(new BigDecimal("0.00")) < 0){
p.setAccountStatus(PayIncomeContractCommon.ACCOUNT_STATUS3);
}
// 部分收款
if(p.getOutstandingAmount().compareTo(new BigDecimal("0.00")) > 0 && p.getOutstandingAmount().compareTo(p.getAccountsReceivableAmount()) < 0){
p.setAccountStatus(PayIncomeContractCommon.ACCOUNT_STATUS2);
}
// 待收款
if(p.getOutstandingAmount().compareTo(p.getAccountsReceivableAmount()) == 0 && p.getAccountsReceivableAmount().compareTo(new BigDecimal("0.00")) > 0 ){
p.setAccountStatus(PayIncomeContractCommon.ACCOUNT_STATUS1);
}
String str = JSON.toJSONString(p);
Map<String,String> map = JSONObject.parseObject(str,Map.class);
map.put("contractDate",DateUtils.date2Str(p.getContractDate(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("terminationDate",DateUtils.date2Str(p.getTerminationDate(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("opening",sysBaseAPI.translateDict("yn",String.valueOf(p.getOpening())));
map.put("accountStatus",sysBaseAPI.translateDict("revenue_contract_account_status",String.valueOf(p.getAccountStatus())));
map.put("pack",sysBaseAPI.translateDict("yn",String.valueOf(p.getPack())));
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)) {
List<PayIncomeContractInstallment> listSub = listPayIncomeContractInstallment.stream().filter(item ->
Objects.equals(p.getId(), item.getContractId())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(listSub)) {
int count = mapCount.get("count");
if(count < listSub.size()){
mapCount.put("count",listSub.size());
if (count < listSub.size()) {
mapCount.put("count", listSub.size());
}
listSub.forEach(p1->{
listSub.forEach(p1 -> {
int n = listSub.indexOf(p1) + 1;
map.put("phaseName" + n,p1.getPhaseName());
map.put("accountsReceivableAmount" + n,Objects.isNull(p1.getAccountsReceivableAmount()) ? "" : String.valueOf(p1.getAccountsReceivableAmount()));
map.put("accountsReceivableTime" + n, DateUtils.date2Str(p1.getAccountsReceivableTime(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("paidAmount" + n,Objects.isNull(p1.getPaidAmount()) ? "" : String.valueOf(p1.getPaidAmount()));
map.put("paidTime" + n,DateUtils.date2Str(p1.getPaidTime(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("phaseName" + n, p1.getPhaseName());
map.put("accountsReceivableAmount" + n, Objects.isNull(p1.getAccountsReceivableAmount()) ? "" : String.valueOf(p1.getAccountsReceivableAmount()));
map.put("accountsReceivableTime" + n, DateUtils.date2Str(p1.getAccountsReceivableTime(), new SimpleDateFormat("yyyy-MM-dd")));
map.put("paidAmount" + n, Objects.isNull(p1.getPaidAmount()) ? "" : String.valueOf(p1.getPaidAmount()));
map.put("paidTime" + n, DateUtils.date2Str(p1.getPaidTime(), new SimpleDateFormat("yyyy-MM-dd")));
});
}
list.add(map);
});
}
}
});
}else{
throw new JeroBootException("数据为空!");
}
@@ -7,6 +7,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -20,7 +21,9 @@ import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.DateUtils;
import com.jero.common.util.oConvertUtils;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.contract.entity.*;
import com.jero.contract.service.IPaySpendingContractAuditService;
import com.jero.contract.service.IPaySpendingContractInstallmentService;
import com.jero.contract.service.IPaySpendingContractService;
import com.jero.contract.vo.*;
@@ -56,6 +59,8 @@ public class PaySpendingContractController extends JeroController<PaySpendingCon
@Resource
private IPaySpendingContractInstallmentService paySpendingContractInstallmentService;
@Resource
private IPaySpendingContractAuditService paySpendingContractAuditService;
@Resource
private Environment env;
@Resource
private ISysBaseAPI sysBaseAPI;
@@ -78,6 +83,7 @@ public class PaySpendingContractController extends JeroController<PaySpendingCon
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="startTime",required = false) String startTime,
@RequestParam(name="endTime",required = false) String endTime,
@RequestParam(name="chargeStatus",required = false) String chargeStatus,
HttpServletRequest req) {
if(!StringUtils.isBlank(paySpendingContract.getContractNum()) && paySpendingContract.getContractNum().length() > 50){
return Result.error("合同编号长度不能大于50个字符!");
@@ -96,7 +102,7 @@ public class PaySpendingContractController extends JeroController<PaySpendingCon
paySpendingContract.setPrincipalId(sysUser.getId());
}
Page<PaySpendingContract> page = new Page<>(pageNo, pageSize);
IPage<PaySpendingContract> pageList = paySpendingContractService.queryPageList(page, paySpendingContract,startTime,endTime);
IPage<PaySpendingContract> pageList = paySpendingContractService.queryPageList(page, paySpendingContract,startTime,endTime,chargeStatus);
return Result.OK(pageList);
}
@@ -154,6 +160,40 @@ public class PaySpendingContractController extends JeroController<PaySpendingCon
}
return Result.error("合同编号不存在!");
}
/**
* 审核
*
* @param paySpendingContractAudit 审核记录
*/
@AutoLog(value = "收入合同-合同审核",operateType = 7)
@RequiresPermissions("revenueContract:aduit")
@ApiOperation(value="收入合同-审核", notes="收入合同-审核")
@PostMapping(value = "/audit")
public Result<?> audit(@RequestBody PaySpendingContractAudit paySpendingContractAudit) {
if(StringUtils.isBlank(paySpendingContractAudit.getContractId())){
return Result.error("id不能为空!");
}
paySpendingContractService.updateAudit(paySpendingContractAudit);
return Result.OK("审核成功!");
}
/**
* 归档
*
* @param paySpendingContractAudit 审核记录
*/
@AutoLog(value = "收入合同-归档",operateType = 8)
@RequiresPermissions("revenueContract:archive")
@ApiOperation(value="收入合同-归档", notes="收入合同-归档")
@PostMapping(value = "/archive")
public Result<?> archive(@RequestBody PaySpendingContractAudit paySpendingContractAudit) {
if(StringUtils.isBlank(paySpendingContractAudit.getContractId())){
return Result.error("id不能为空!");
}
paySpendingContractService.updateArchive(paySpendingContractAudit);
return Result.OK("归档成功!");
}
/**
* 通过id删除
*
@@ -217,14 +257,40 @@ public class PaySpendingContractController extends JeroController<PaySpendingCon
queryPaySpendingContractInstallment.eq(PaySpendingContractInstallment::getContractId,paySpendingContract.getId());
List<PaySpendingContractInstallment> listPaySpendingContractInstallment = paySpendingContractInstallmentService.list(queryPaySpendingContractInstallment);
String str = JSON.toJSONString(paySpendingContract);
PaySpendingContractDetailOutput paySpendingContractDetailOutput = JSONObject.parseObject(str,PaySpendingContractDetailOutput.class);
// 字典翻译
paySpendingContractDetailOutput.setOpening_dictText(sysBaseAPI.translateDict("yn",String.valueOf(paySpendingContract.getOpening())));
paySpendingContractDetailOutput.setAccountStatus_dictText(sysBaseAPI.translateDict("revenue_contract_account_status",String.valueOf(paySpendingContract.getAccountStatus())));
paySpendingContractDetailOutput.setPack_dictText(sysBaseAPI.translateDict("yn",String.valueOf(paySpendingContract.getPack())));
paySpendingContractDetailOutput.setContractStatus_dictText(sysBaseAPI.translateDict("revenue_contract_status",String.valueOf(paySpendingContract.getStatus())));
if(!CollectionUtils.isEmpty(listPaySpendingContractInstallment)){
paySpendingContractDetailOutput.setListInstallment(listPaySpendingContractInstallment);
}
LambdaQueryWrapper<PaySpendingContractAudit> queryPaySpendingContractAudit = new LambdaQueryWrapper<>();
queryPaySpendingContractAudit.in(PaySpendingContractAudit::getContractId,id);
List<PaySpendingContractAudit> listPaySpendingContractAudit = paySpendingContractAuditService.list(queryPaySpendingContractAudit);
List<PaySpendingContractAuditOutput> listArchive = new ArrayList<>();
List<PaySpendingContractAuditOutput> listAudit = new ArrayList<>();
if(!CollectionUtils.isEmpty(listPaySpendingContractAudit)){
String strAudit = JSON.toJSONString(listPaySpendingContractAudit);
List<PaySpendingContractAuditOutput> listAll = JSONArray.parseArray(strAudit,PaySpendingContractAuditOutput.class);
listAll.forEach(p->{
if(!Objects.isNull(p.getContractStatus())){
p.setContractStatus_dictText(sysBaseAPI.translateDict("revenue_contract_status",String.valueOf(p.getContractStatus())));
}
});
// 获取存档记录
listArchive = listAll.stream().filter(p->Objects.equals(p.getContractStatus(), PayIncomeContractCommon.STATUS5)).collect(Collectors.toList());
// 获取审核记录
listAudit = listAll.stream().filter(p->!Objects.equals(p.getContractStatus(), PayIncomeContractCommon.STATUS5)).collect(Collectors.toList());
}
if(!CollectionUtils.isEmpty(listArchive)){
paySpendingContractDetailOutput.setListArchive(listArchive);
}
if(!CollectionUtils.isEmpty(listAudit)){
paySpendingContractDetailOutput.setListAudit(listAudit);
}
return Result.OK(paySpendingContractDetailOutput);
}
@@ -252,14 +318,14 @@ public class PaySpendingContractController extends JeroController<PaySpendingCon
@ApiOperation(value="支出合同-导出excel", notes="支出合同-导出excel")
public ModelAndView exportXls(HttpServletRequest request, PaySpendingContract paySpendingContract,
@RequestParam(name="startTime",required = false) String startTime,
@RequestParam(name="endTime",required = false) String endTime) {
@RequestParam(name="endTime",required = false) String endTime,
@RequestParam(name="chargeStatus",required = false) String chargeStatus) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!sysUser.getRoleCode().contains(RoleCommon.CWRY)){
paySpendingContract.setPrincipalId(sysUser.getId());
}
List<PaySpendingContract> pageList = paySpendingContractService.queryList(paySpendingContract.getPrincipalId(), paySpendingContract.getContractNum(),
paySpendingContract.getContractName(),startTime,endTime);
List<PaySpendingContract> pageList = paySpendingContractService.queryList(paySpendingContract,startTime,endTime,chargeStatus);
List<PaySpendingContract> exportList = null;
// 过滤选中数据
@@ -324,24 +390,24 @@ public class PaySpendingContractController extends JeroController<PaySpendingCon
filedsList.add(new ExcelExportEntity("合同签订日期", "contractDate"));
filedsList.add(new ExcelExportEntity("合同终止日期", "terminationDate"));
filedsList.add(new ExcelExportEntity("合同约定主要时点", "contractTimePoints"));
filedsList.add(new ExcelExportEntity("金额", "accountsReceivableAmount"));
filedsList.add(new ExcelExportEntity("金额", "amountReceived"));
filedsList.add(new ExcelExportEntity("金额", "outstandingAmount"));
filedsList.add(new ExcelExportEntity("金额", "accountsReceivableAmount"));
filedsList.add(new ExcelExportEntity("金额", "amountReceived"));
filedsList.add(new ExcelExportEntity("金额", "outstandingAmount"));
filedsList.add(new ExcelExportEntity("账款状态", "accountStatus"));
filedsList.add(new ExcelExportEntity("合同约定付款次数", "contractPaymentTimes"));
int count = mapCount.get("count");
if(count > 0){
for (int i = 1; i <= count; i++){
filedsList.add(new ExcelExportEntity(i + "阶段", "phaseName" + i));
filedsList.add(new ExcelExportEntity(i + "阶段应", "accountsReceivableAmount" + i));
filedsList.add(new ExcelExportEntity(i + "阶段应时间", "accountsReceivableTime" + i));
filedsList.add(new ExcelExportEntity(i + "阶段实", "paidAmount" + i));
filedsList.add(new ExcelExportEntity(i + "阶段实时间", "paidTime" + i));
filedsList.add(new ExcelExportEntity(i + "阶段应", "accountsReceivableAmount" + i));
filedsList.add(new ExcelExportEntity(i + "阶段应时间", "accountsReceivableTime" + i));
filedsList.add(new ExcelExportEntity(i + "阶段实", "paidAmount" + i));
filedsList.add(new ExcelExportEntity(i + "阶段实时间", "paidTime" + i));
}
}
// Step.3 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgMapExcelView());
mv.addObject(MapExcelConstants.FILE_NAME, "收入合同"); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(MapExcelConstants.FILE_NAME, "支出合同"); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(MapExcelConstants.ENTITY_LIST, filedsList);
//update-begin--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
ExportParams exportParams=new ExportParams("支出合同", "支出合同");
@@ -174,6 +174,11 @@ public class PaySpendingContract implements Serializable {
@ApiModelProperty(value = "打包年份")
// @Pattern(regexp = "^\\d{4}$",message = "打包年份式错误")
private String packYear;
/**合同状态(2:已通过,3:未通过,4:已归档)*/
@Excel(name = "合同状态(2:已通过,3:未通过,4:已存档)", width = 15)
@ApiModelProperty(value = "合同状态(2:已通过,3:未通过,4:已存档)")
@Dict(dicCode = "expenditure_contract_status")
private java.lang.Integer status;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
@@ -0,0 +1,72 @@
package com.jero.contract.entity;
import com.baomidou.mybatisplus.annotation.IdType;
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 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.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
import java.io.Serializable;
/**
* @Description: pay_spending_contract_audit
* @Author: jeecg-boot
* @Date: 2021-09-03
* @Version: V1.0
*/
@Data
@TableName("pay_spending_contract_audit")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="pay_spending_contract_audit对象", description="pay_spending_contract_audit")
public class PaySpendingContractAudit implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**合同id*/
@Excel(name = "合同id", width = 15)
@ApiModelProperty(value = "合同id")
@Size(max = 32, message = "合同id长度不能大于32个字符")
private String contractId;
/**合同状态(2:待审核,3:已通过,4:未通过,5:已归档)*/
@Excel(name = "合同状态(2:待审核,3:已通过,4:未通过,5:已归档)", width = 15)
@ApiModelProperty(value = "合同状态(2:待审核,3:已通过,4:未通过,5:已归档)")
@Dict(dicCode = "expenditure_contract_status")
@Max(5)
@Min(1)
private Integer contractStatus;
/**拒绝说明*/
@Excel(name = "拒绝说明", width = 15)
@ApiModelProperty(value = "拒绝说明")
@Size(max = 200, message = "拒绝说明长度不能大于200个字符")
private String explainRemarks;
/**创建人*/
@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 java.util.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 java.util.Date updateTime;
}
@@ -0,0 +1,15 @@
package com.jero.contract.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.contract.entity.PaySpendingContractAudit;
/**
* @Description: pay_income_contract_audit
* @Author: jeecg-boot
* @Date: 2021-09-03
* @Version: V1.0
*/
public interface PaySpendingContractAuditMapper extends BaseMapper<PaySpendingContractAudit> {
}
@@ -26,7 +26,7 @@ public interface PaySpendingContractMapper extends BaseMapper<PaySpendingContrac
* @Exception
*/
IPage<PaySpendingContract> queryPageList(Page<PaySpendingContract> page, @Param("paySpendingContract") PaySpendingContract paySpendingContract
,@Param("startTime") String startTime, @Param("endTime") String endTime);
,@Param("startTime") String startTime, @Param("endTime") String endTime,@Param("chargeStatus") String chargeStatus);
/**
* @Description excel导出
@@ -36,8 +36,7 @@ public interface PaySpendingContractMapper extends BaseMapper<PaySpendingContrac
* @Return
* @Exception
*/
List<PaySpendingContract> queryList(@Param("principalId") String principalId, @Param("contractNum") String contractNum,
@Param("contractName") String contractName,@Param("startTime") String startTime,
@Param("endTime") String endTime);
List<PaySpendingContract> queryList(@Param("paySpendingContract") PaySpendingContract paySpendingContract
,@Param("startTime") String startTime, @Param("endTime") String endTime,@Param("chargeStatus") String chargeStatus);
}
@@ -231,9 +231,6 @@
pic.termination_date AS terminationDate,
pic.contract_time_points AS contractTimePoints,
pic.accounts_receivable_amount AS accountsReceivableAmount,
pic.amount_received AS amountReceived,
pic.outstanding_amount AS outstandingAmount,
pic.account_status AS accountStatus,
pic.contract_payment_times AS contractPaymentTimes,
pic.pack,
pic.pack_year AS packYear,
@@ -248,26 +245,27 @@
where contract_id = pic.id AND accounts_receivable_time is not null AND accounts_receivable_time &lt; DATE_FORMAT( NOW(), '%Y-%m-%d' )
AND accounts_receivable_amount != 0 AND accounts_receivable_amount > if(paid_amount is null or paid_amount = '',0,paid_amount)
) AS chargeStatus,
GROUP_CONCAT(project.projectName ORDER BY project.id DESC) AS associatedProject
GROUP_CONCAT(project.projectName ORDER BY project.id DESC) AS associatedProject,
sum(project.paid_amount) as amountReceived
FROM pay_income_contract pic
LEFT JOIN pay_income_contract_associated pica ON pica.contract_id = pic.id
LEFT JOIN
(
SELECT id,charge_project AS projectName FROM pay_common_project
SELECT id,charge_project AS projectName,paid_amount FROM pay_common_project
UNION ALL
SELECT pwgs.id,pwg.working_group_project AS projectName FROM pay_working_group_subitem pwgs
SELECT pwgs.id,pwg.working_group_project AS projectName,paid_amount FROM pay_working_group_subitem pwgs
LEFT JOIN pay_working_group pwg ON pwg.id = pwgs.working_group_id
WHERE pwg.working_group_project IS NOT NULL AND pwg.working_group_project != ''
UNION ALL
SELECT sit.id,meeting.meeting_name AS projectName FROM pay_meeting meeting
SELECT sit.id,meeting.meeting_name AS projectName,paid_amount FROM pay_meeting meeting
INNER JOIN pay_meeting_situation sit ON meeting.id = sit.meeting_id
WHERE meeting.meeting_name IS NOT NULL AND meeting.meeting_name != ''
UNION ALL
SELECT msub.id,pmp.project_name AS projectName FROM pay_member_project pmp
SELECT msub.id,pmp.project_name AS projectName,paid_amount FROM pay_member_project pmp
INNER JOIN pay_member_project_subitem msub ON pmp.id = msub.project_id
WHERE pmp.project_name IS NOT NULL AND pmp.project_name != ''
UNION ALL
SELECT tmsub.id,tmember.project_name AS projectName FROM tb_member_project tmember
SELECT tmsub.id,tmember.project_name AS projectName,paid_amount FROM tb_member_project tmember
INNER JOIN tb_member_project_subitem tmsub ON tmember.id=tmsub.project_id
where tmember.project_name IS NOT NULL AND tmember.project_name != ''
) project ON project.id = pica.project_id
@@ -0,0 +1,5 @@
<?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.contract.mapper.PaySpendingContractAuditMapper">
</mapper>
@@ -30,6 +30,8 @@
contract_payment_times,
pack,
pack_year,
status,
if(status = 2,1,0) as statusOrder,
create_by,
create_time,
update_by,
@@ -55,6 +57,12 @@
<if test="paySpendingContract.principalId != null and paySpendingContract.principalId != ''">
AND principal_id = #{paySpendingContract.principalId}
</if>
<if test="paySpendingContract.status != null and paySpendingContract.status != ''">
AND psc.status = #{paySpendingContract.status}
</if>
<if test="chargeStatus != null and chargeStatus != ''">
AND psc.chargeStatus = #{chargeStatus}
</if>
</where>
ORDER BY chargeStatus desc,create_time desc
</select>
@@ -97,11 +105,11 @@
) AS chargeStatus
FROM pay_spending_contract psc
<where>
<if test="contractNum != null and contractNum != ''">
AND contract_num LIKE CONCAT('%',CONCAT(#{contractNum},'%'))
<if test="paySpendingContract.contractNum != null and paySpendingContract.contractNum != ''">
AND contract_num LIKE CONCAT('%',CONCAT(#{paySpendingContract.contractNum},'%'))
</if>
<if test="contractName != null and contractName != ''">
AND contract_name LIKE CONCAT('%',CONCAT(#{contractName},'%'))
<if test="paySpendingContract.contractName != null and paySpendingContract.contractName != ''">
AND contract_name LIKE CONCAT('%',CONCAT(#{paySpendingContract.contractName},'%'))
</if>
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT(create_time,'%Y-%m-%d') >= #{startTime}
@@ -109,8 +117,14 @@
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT(create_time,'%Y-%m-%d') &lt;= #{endTime}
</if>
<if test="principalId != null and principalId != ''">
AND principal_id = #{principalId}
<if test="paySpendingContract.principalId != null and paySpendingContract.principalId != ''">
AND principal_id = #{paySpendingContract.principalId}
</if>
<if test="paySpendingContract.status != null and paySpendingContract.status != ''">
AND psc.status = #{paySpendingContract.status}
</if>
<if test="chargeStatus != null and chargeStatus != ''">
AND psc.chargeStatus = #{chargeStatus}
</if>
</where>
ORDER BY chargeStatus desc,create_time desc
@@ -0,0 +1,14 @@
package com.jero.contract.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.contract.entity.PaySpendingContractAudit;
/**
* @Description: pay_income_contract_audit
* @Author: jeecg-boot
* @Date: 2021-09-03
* @Version: V1.0
*/
public interface IPaySpendingContractAuditService extends IService<PaySpendingContractAudit> {
}
@@ -3,7 +3,10 @@ package com.jero.contract.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.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAudit;
import com.jero.contract.entity.PaySpendingContract;
import com.jero.contract.entity.PaySpendingContractAudit;
import com.jero.contract.vo.PaySpendingContractInput;
import javax.servlet.http.HttpServletRequest;
@@ -24,7 +27,7 @@ public interface IPaySpendingContractService extends IService<PaySpendingContrac
* @Return
* @Exception
*/
IPage<PaySpendingContract> queryPageList(Page<PaySpendingContract> page,PaySpendingContract paySpendingContract,String startTime,String endTime);
IPage<PaySpendingContract> queryPageList(Page<PaySpendingContract> page,PaySpendingContract paySpendingContract,String startTime,String endTime,String chargeStatus);
/**
* @Description 添加
@@ -79,5 +82,23 @@ public interface IPaySpendingContractService extends IService<PaySpendingContrac
* @Return
* @Exception
*/
List<PaySpendingContract> queryList(String principalId, String contractNum,String contractName,String startTime,String endTime);
List<PaySpendingContract> queryList(PaySpendingContract paySpendingContract,String startTime,String endTime,String chargeStatus);
/**
* @Description 审核
* @Author lqt
* @Date 2021/9/5
* @Param paySpendingContractAudit 审核记录
* @Return
* @Exception
*/
void updateAudit(PaySpendingContractAudit paySpendingContractAudit);
/**
* @Description 归档
* @Author lqt
* @Date 2021/9/5
* @Param paySpendingContractAudit 审核记录
* @Return
* @Exception
*/
void updateArchive(PaySpendingContractAudit paySpendingContractAudit);
}
@@ -46,6 +46,7 @@ import com.jero.modules.system.service.ISysUserService;
import com.jero.pack.common.PackCommon;
import com.jero.pack.entity.PayPackCompanyProject;
import com.jero.pack.service.IPayPackCompanyProjectService;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayCommonProject;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
@@ -138,10 +139,10 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
if(Objects.isNull(payIncomeContract)){
throw new JeroBootException("收入合同信息不能为空!");
}
if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
throw new JeroBootException("已收金额大于应收金额!");
}
// if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
// && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
// throw new JeroBootException("已收金额大于应收金额!");
// }
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
if(!StringUtils.isBlank(msgPayIncomeContract)){
throw new JeroBootException(msgPayIncomeContract.toString());
@@ -235,10 +236,10 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
if(Objects.isNull(input.getContract())){
throw new JeroBootException("收入合同信息不能为空!");
}
if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
throw new JeroBootException("已收金额大于应收金额!");
}
// if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
// && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
// throw new JeroBootException("已收金额大于应收金额!");
// }
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
if(!StringUtils.isBlank(msgPayIncomeContract)){
throw new JeroBootException(msgPayIncomeContract.toString());
@@ -353,17 +354,16 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
updatePayCommonProject.eq(PayCommonProject::getId,p.getProjectId());
updatePayCommonProject.set(PayCommonProject::getUpdateBy,sysUser.getUsername());
updatePayCommonProject.set(PayCommonProject::getUpdateTime,new Date());
if(Objects.equals(payCommonProject.getChargeWay(),PayIncomeContractCommon.CHARGE_WAY2)){
updatePayCommonProject.set(PayCommonProject::getContractNum,payIncomeContract.getContractNum());
}
updatePayCommonProject.set(PayCommonProject::getChargeWay,PayIncomeContractCommon.CHARGE_WAY2);
updatePayCommonProject.set(PayCommonProject::getContractNum,payIncomeContract.getContractNum());
updatePayCommonProject.set(PayCommonProject::getChargeNoticeNo,null);
updatePayCommonProject.set(PayCommonProject::getChargeNoticeId,null);
// 合同选择了打包,查看打包年份&&打包企业是否存在
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
updatePayCommonProject.set(PayCommonProject::getPack,PayIncomeContractCommon.PACK1);
payPackCompanyProjectService.setPack(payCommonProject.getChargeCompanyId(),payCommonProject.getContactsId(),payIncomeContract.getPackYear(),payCommonProject.getId(),PayIncomeContractCommon.PROJECT_TYPE1,payIncomeContract.getPack());
}
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1) || Objects.equals(payCommonProject.getChargeWay(),PayIncomeContractCommon.CHARGE_WAY2)){
payCommonProjectService.update(updatePayCommonProject);
}
payCommonProjectService.update(updatePayCommonProject);
principalId = payCommonProject.getPrincipalId();
projectName = payCommonProject.getChargeProject();
// 更新项目id
@@ -395,17 +395,17 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getUpdateBy,sysUser.getUsername());
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getUpdateTime,new Date());
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getId,listPayWorkingGroupSubItem.get(0).getId());
if(Objects.equals(listPayWorkingGroupSubItem.get(0).getChargeWay(),PayIncomeContractCommon.CHARGE_WAY2)){
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getContractNum,payIncomeContract.getContractNum());
}
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getContractNum,payIncomeContract.getContractNum());
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeWay,PayIncomeContractCommon.CHARGE_WAY2);
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getCharge,null);
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeNoticeNo,null);
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeNoticeId,null);
// 合同选择了打包,查看打包年份&&打包企业是否存在
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getPack,PayIncomeContractCommon.PACK1);
payPackCompanyProjectService.setPack(listPayWorkingGroupSubItem.get(0).getChargeCompanyId(),listPayWorkingGroupSubItem.get(0).getContactsIdOne(),payIncomeContract.getPackYear(),listPayWorkingGroupSubItem.get(0).getId(),PayIncomeContractCommon.PROJECT_TYPE2,payIncomeContract.getPack());
}
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1) || Objects.equals(listPayWorkingGroupSubItem.get(0).getChargeWay(),PayIncomeContractCommon.CHARGE_WAY2)){
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
}
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
principalId = payWorkingGroup.getPrincipalIdA();
projectName = payWorkingGroup.getWorkingGroupProject();
// 更新项目id
@@ -468,17 +468,16 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateBy,sysUser.getUsername());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateTime,new Date());
updatePayMemberProjectSubitem.eq(PayMemberProjectSubitem::getId,listPayMemberProjectSubitem.get(0).getId());
if(Objects.equals(listPayMemberProjectSubitem.get(0).getPaymentMethod(),PayIncomeContractCommon.CHARGE_WAY2)){
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getContractNo,payIncomeContract.getContractNum());
}
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getContractNo,payIncomeContract.getContractNum());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getPaymentMethod,PayIncomeContractCommon.CHARGE_WAY2);
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getChargeNoticeNo,null);
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getChargeNoticeFileId,null);
// 合同选择了打包,查看打包年份&&打包企业是否存在
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getPack,PayIncomeContractCommon.PACK1);
payPackCompanyProjectService.setPack(listPayMemberProjectSubitem.get(0).getCompanyId(),listPayMemberProjectSubitem.get(0).getCompanyContactId(),payIncomeContract.getPackYear(),listPayMemberProjectSubitem.get(0).getId(),PayIncomeContractCommon.PROJECT_TYPE4,payIncomeContract.getPack());
}
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1) || Objects.equals(listPayMemberProjectSubitem.get(0).getPaymentMethod(),PayIncomeContractCommon.CHARGE_WAY2)){
memberProjectSubitemService.update(updatePayMemberProjectSubitem);
}
memberProjectSubitemService.update(updatePayMemberProjectSubitem);
principalId = payMemberProject.getDirectorId();
projectName = payMemberProject.getProjectName();
p.setProjectId(listPayMemberProjectSubitem.get(0).getId());
@@ -606,6 +605,9 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
if(Objects.isNull(payCommonProject)){
throw new JeroBootException("项目不存在!");
}
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.set(PayCommonProject::getUpdateBy,sysUser.getUsername());
updatePayCommonProject.set(PayCommonProject::getUpdateTime,new Date());
// 合同为打包
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
// 查询打包项目来源是否为收入合同
@@ -616,14 +618,12 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
// 存在数据,取消打包,变更项目打包状态, 否则不进行操作
if(!CollectionUtils.isEmpty(listPayPackCompanyProject)){
payPackCompanyProjectService.removeById(listPayPackCompanyProject.get(0).getId());
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.set(PayCommonProject::getUpdateBy,sysUser.getUsername());
updatePayCommonProject.set(PayCommonProject::getUpdateTime,new Date());
updatePayCommonProject.set(PayCommonProject::getPack,PayIncomeContractCommon.PACK0);
updatePayCommonProject.eq(PayCommonProject::getId,payIncomeContractAssociated.getProjectId());
payCommonProjectService.update(updatePayCommonProject);
}
}
updatePayCommonProject.eq(PayCommonProject::getId,payIncomeContractAssociated.getProjectId());
updatePayCommonProject.set(PayCommonProject::getContractNum,null);
payCommonProjectService.update(updatePayCommonProject);
break;
case PayIncomeContractCommon.PROJECT_TYPE2:
// 工作组项目
@@ -633,7 +633,9 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
}
// 更新项目id
payIncomeContractAssociated.setProjectId(listPayWorkingGroupSubItem.getId());
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getUpdateBy,sysUser.getUsername());
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getUpdateTime,new Date());
// 合同为打包
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
// 查询打包项目来源是否为收入合同
@@ -644,14 +646,12 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
// 存在数据,取消打包,变更项目打包状态, 否则不进行操作
if(!CollectionUtils.isEmpty(listPayPackCompanyProject)){
payPackCompanyProjectService.removeById(listPayPackCompanyProject.get(0).getId());
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getUpdateBy,sysUser.getUsername());
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getUpdateTime,new Date());
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getPack,PayIncomeContractCommon.PACK0);
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getId,listPayWorkingGroupSubItem.getId());
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
}
}
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getId,listPayWorkingGroupSubItem.getId());
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getContractNum,null);
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
break;
case PayIncomeContractCommon.PROJECT_TYPE3:
// 会议项目
@@ -682,6 +682,9 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
}
// 更新项目id
payIncomeContractAssociated.setProjectId(payMemberProjectSubitem.getId());
LambdaUpdateWrapper<PayMemberProjectSubitem> updatePayMemberProjectSubitem = new LambdaUpdateWrapper<>();
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateBy,sysUser.getUsername());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateTime,new Date());
// 合同为打包
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
// 查询打包项目来源是否为收入合同
@@ -692,14 +695,12 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
// 存在数据,取消打包,变更项目打包状态, 否则不进行操作
if(!CollectionUtils.isEmpty(listPayPackCompanyProject)){
payPackCompanyProjectService.removeById(listPayPackCompanyProject.get(0).getId());
LambdaUpdateWrapper<PayMemberProjectSubitem> updatePayMemberProjectSubitem = new LambdaUpdateWrapper<>();
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateBy,sysUser.getUsername());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateTime,new Date());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getPack,PayIncomeContractCommon.PACK0);
updatePayMemberProjectSubitem.eq(PayMemberProjectSubitem::getId,payMemberProjectSubitem.getId());
memberProjectSubitemService.update(updatePayMemberProjectSubitem);
}
}
updatePayMemberProjectSubitem.eq(PayMemberProjectSubitem::getId,payMemberProjectSubitem.getId());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getContractNo,null);
memberProjectSubitemService.update(updatePayMemberProjectSubitem);
break;
case PayIncomeContractCommon.PROJECT_TYPE5:
// 标协会员
@@ -1114,7 +1115,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
// 能关联上合同
if(!Objects.isNull(payIncomeContract)){
if(!Objects.equals(payIncomeContract.getSignedCompanyId(),companyId)){
throw new JeroBootException("关联合同中签订单位与项目中来款企业不匹配");
throw new JeroBootException("关联合同中签订单位与项目中来款企业不匹配");
}
return payIncomeContract;
}
@@ -0,0 +1,18 @@
package com.jero.contract.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.contract.entity.PaySpendingContractAudit;
import com.jero.contract.mapper.PaySpendingContractAuditMapper;
import com.jero.contract.service.IPaySpendingContractAuditService;
import org.springframework.stereotype.Service;
/**
* @Description: pay_income_contract_audit
* @Author: jeecg-boot
* @Date: 2021-09-03
* @Version: V1.0
*/
@Service
public class PaySpendingContractAuditServiceImpl extends ServiceImpl<PaySpendingContractAuditMapper, PaySpendingContractAudit> implements IPaySpendingContractAuditService {
}
@@ -1,27 +1,39 @@
package com.jero.contract.service.impl;
import com.alibaba.fastjson.JSONObject;
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.common.RoleCommon;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.ManagementMessageEnums;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.SendMessageService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.DateUtils;
import com.jero.common.util.ImportExcelUtil;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PaySpendingContract;
import com.jero.contract.entity.PaySpendingContractAudit;
import com.jero.contract.entity.PaySpendingContractInstallment;
import com.jero.contract.mapper.PaySpendingContractMapper;
import com.jero.contract.service.IPaySpendingContractAuditService;
import com.jero.contract.service.IPaySpendingContractInstallmentService;
import com.jero.contract.service.IPaySpendingContractService;
import com.jero.contract.vo.PaySpendingContractImportExcel;
import com.jero.contract.vo.PaySpendingContractInput;
import com.jero.mail.entity.PayMailContract;
import com.jero.mail.service.IPayMailContractService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -64,11 +76,19 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
private ISysBaseAPI sysBaseAPI;
@Resource
private PaySpendingContractMapper paySpendingContractMapper;
@Resource
private IPaySpendingContractAuditService paySpendingContractAuditService;
@Resource
private IPayMailContractService payMailContractService;
@Resource
private IPayContactsManagementTemporaryService payContactsManagementTemporaryService;
@Resource
private SendMessageService sendMessageService;
@Override
public IPage<PaySpendingContract> queryPageList(Page<PaySpendingContract> page, PaySpendingContract paySpendingContract, String startTime, String endTime) {
return paySpendingContractMapper.queryPageList(page,paySpendingContract,startTime,endTime);
public IPage<PaySpendingContract> queryPageList(Page<PaySpendingContract> page, PaySpendingContract paySpendingContract, String startTime, String endTime,String chargeStatus) {
return paySpendingContractMapper.queryPageList(page,paySpendingContract,startTime,endTime,chargeStatus);
}
@Override
@@ -83,7 +103,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}
if(!Objects.isNull(paySpendingContract.getAccountsReceivableAmount()) && !Objects.isNull(paySpendingContract.getAmountReceived())
&& paySpendingContract.getAccountsReceivableAmount().compareTo(paySpendingContract.getAmountReceived()) < 0){
throw new JeroBootException("金额大于应金额!");
throw new JeroBootException("金额大于应金额!");
}
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(paySpendingContract);
if(!StringUtils.isBlank(msgPayIncomeContract)){
@@ -109,6 +129,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
if(Objects.isNull(principalName)){
throw new JeroBootException("负责人名称为空!");
}
paySpendingContract.setStatus(PayIncomeContractCommon.STATUS2);
paySpendingContract.setPrincipalId(principalName.getId());
paySpendingContract.setPrincipalName(principalName.getRealname());
paySpendingContractService.save(paySpendingContract);
@@ -123,7 +144,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}
if(!Objects.isNull(p.getAccountsReceivableAmount()) && !Objects.isNull(p.getPaidAmount())
&& p.getAccountsReceivableAmount().compareTo(p.getPaidAmount()) < 0){
msgPaySpendingContractInstallment.append("").append(finalListPaySpendingContractInstallment.indexOf(p) + 1).append("期实金额大于应金额!");
msgPaySpendingContractInstallment.append("").append(finalListPaySpendingContractInstallment.indexOf(p) + 1).append("期实金额大于应金额!");
}
});
paySpendingContractInstallmentService.saveBatch(listPaySpendingContractInstallment);
@@ -131,6 +152,34 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
if(!StringUtils.isBlank(msgPaySpendingContractInstallment)){
throw new JeroBootException(msgPaySpendingContractInstallment.toString());
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 获取项目负责人,发送消息
List<SysUser> list = sysUserService.getRolesUser(Arrays.asList(RoleCommon.CWRY));
if(!CollectionUtils.isEmpty(list)){
list.forEach(p->{
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if(!StringUtils.isBlank(p.getEmail())){
sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail()));
}
if(!StringUtils.isEmpty(p.getPhone())){
sendMessageDTO.setPhone(PasswordUtil.decrypt(p.getPhone()));
}
HashMap<String,String> map = new HashMap<>();
map.put("contractNum",paySpendingContract.getContractNum());
map.put("contractName",paySpendingContract.getContractName());
sendMessageDTO.setFromUser(sysUser.getUsername());
sendMessageDTO.setToUser(p.getUsername());
sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG2.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("M_OPEN_TYPE2");
JSONObject json = new JSONObject();
json.put("revenueId",paySpendingContract.getId());
json.put("contractNum",paySpendingContract.getContractNum());
sendMessageDTO.setBusId(json.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
});
}
return paySpendingContract;
}
@@ -146,7 +195,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}
if(!Objects.isNull(paySpendingContract.getAccountsReceivableAmount()) && !Objects.isNull(paySpendingContract.getAmountReceived())
&& paySpendingContract.getAccountsReceivableAmount().compareTo(paySpendingContract.getAmountReceived()) < 0){
throw new JeroBootException("金额大于应金额!");
throw new JeroBootException("金额大于应金额!");
}
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(paySpendingContract);
if(!StringUtils.isBlank(msgPayIncomeContract)){
@@ -199,7 +248,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}
if(!Objects.isNull(p.getAccountsReceivableAmount()) && !Objects.isNull(p.getPaidAmount())
&& p.getAccountsReceivableAmount().compareTo(p.getPaidAmount()) < 0){
msgPaySpendingContractInstallment.append("").append(finalListPaySpendingContractInstallment.indexOf(p) + 1).append("期实金额大于应金额!");
msgPaySpendingContractInstallment.append("").append(finalListPaySpendingContractInstallment.indexOf(p) + 1).append("期实金额大于应金额!");
}
});
paySpendingContractInstallmentService.saveBatch(listPaySpendingContractInstallment);
@@ -212,6 +261,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
if(Objects.isNull(principalName)){
throw new JeroBootException("负责人名称为空!");
}
paySpendingContract.setStatus(PayIncomeContractCommon.STATUS2);
paySpendingContract.setPrincipalId(principalName.getId());
paySpendingContract.setPrincipalName(principalName.getRealname());
paySpendingContractService.updateById(paySpendingContract);
@@ -241,7 +291,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
query.in(PaySpendingContract::getId,ids);
List<PaySpendingContract> listPaySpendingContractStatus = paySpendingContractService.list(query);
if(CollectionUtils.isEmpty(listPaySpendingContractStatus)){
throw new JeroBootException("收入合同不存在!");
throw new JeroBootException("支出合同不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
StringBuilder msg = new StringBuilder();
@@ -352,28 +402,28 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
paySpendingContractInstallment.setPhaseName(sub.get(mm));
if(!StringUtils.isBlank(sub.get(mm + 1))){
if(!pattern.matcher(sub.get(mm + 1)).matches()){
sb.append("").append(n + 1).append("行:").append(i+1).append("阶段应格式错误,请修改。<br/>");
sb.append("").append(n + 1).append("行:").append(i+1).append("阶段应格式错误,请修改。<br/>");
}else{
paySpendingContractInstallment.setAccountsReceivableAmount(new BigDecimal(sub.get(mm + 1)));
}
}
if(!StringUtils.isBlank(sub.get(mm + 2))){
if(!DateUtils.isValidDate(sub.get(mm + 2))){
sb.append("").append(n + 1).append("行:").append(i+1).append("阶段应时间日期格式不正确,请修改。 <br/>");
sb.append("").append(n + 1).append("行:").append(i+1).append("阶段应时间日期格式不正确,请修改。 <br/>");
}else{
paySpendingContractInstallment.setAccountsReceivableTime(DateUtils.str2Date(sub.get(mm + 2),new SimpleDateFormat("yyyy-MM-dd")));
}
}
if(!StringUtils.isBlank(sub.get(mm + 3))){
if(!pattern.matcher(sub.get(mm + 3)).matches()){
sb.append("").append(n + 1).append("行:").append(i+1).append("阶段实格式错误,请修改。<br/>");
sb.append("").append(n + 1).append("行:").append(i+1).append("阶段实格式错误,请修改。<br/>");
}else{
paySpendingContractInstallment.setPaidAmount(new BigDecimal(sub.get(mm + 3)));
}
}
if(!StringUtils.isBlank(sub.get(mm + 4))) {
if (!DateUtils.isValidDate(sub.get(mm + 4))) {
sb.append("").append(n + 1).append("行:").append(i+1).append("阶段实时间日期格式不正确,请修改。<br/>");
sb.append("").append(n + 1).append("行:").append(i+1).append("阶段实时间日期格式不正确,请修改。<br/>");
} else {
paySpendingContractInstallment.setPaidTime(DateUtils.str2Date(sub.get(mm + 4), new SimpleDateFormat("yyyy-MM-dd")));
}
@@ -458,9 +508,9 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}
if(!Objects.isNull(paySpendingContract.getAccountsReceivableAmount()) && !Objects.isNull(paySpendingContract.getAmountReceived())){
if(paySpendingContract.getAccountsReceivableAmount().compareTo(paySpendingContract.getAmountReceived()) < 0){
sb.append("").append(n + 1).append("行:已金额大于应金额,请修改。<br/>");
sb.append("").append(n + 1).append("行:已金额大于应金额,请修改。<br/>");
}else if(!Objects.isNull(paySpendingContract.getOutstandingAmount()) && paySpendingContract.getAccountsReceivableAmount().subtract(paySpendingContract.getAmountReceived()).compareTo(paySpendingContract.getOutstandingAmount()) != 0){
sb.append("").append(n + 1).append("行:未金额不正确,请修改。<br/>");
sb.append("").append(n + 1).append("行:未金额不正确,请修改。<br/>");
}
}
List<PaySpendingContractInstallment> listPaySpendingContractInstallment = p.getListInstallment();
@@ -469,7 +519,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
int c = listPaySpendingContractInstallment.indexOf(item) + 1;
if(!Objects.isNull(item.getAccountsReceivableAmount()) && !Objects.isNull(item.getPaidAmount())
&& item.getAccountsReceivableAmount().compareTo(item.getPaidAmount()) < 0){
sb.append("").append(n + 1).append("行:").append(c).append("阶段实大于应,请修改。<br/>");
sb.append("").append(n + 1).append("行:").append(c).append("阶段实大于应,请修改。<br/>");
}
});
}
@@ -499,6 +549,7 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}
paySpendingContract.setPrincipalId(principalName.getId());
paySpendingContract.setPrincipalName(principalName.getRealname());
paySpendingContract.setStatus(PayIncomeContractCommon.STATUS2);
paySpendingContractService.save(paySpendingContract);
List<PaySpendingContractInstallment> listPaySpendingContractInstallment = p.getListInstallment();
if(!CollectionUtils.isEmpty(listPaySpendingContractInstallment)){
@@ -518,8 +569,135 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
}
@Override
public List<PaySpendingContract> queryList(String principalId,String contractNum, String contractName, String startTime, String endTime) {
return paySpendingContractMapper.queryList(principalId, contractNum, contractName, startTime, endTime);
public List<PaySpendingContract> queryList(PaySpendingContract paySpendingContract,String startTime,String endTime,String chargeStatus) {
return paySpendingContractMapper.queryList( paySpendingContract, startTime, endTime, chargeStatus);
}
@Override
@Transactional
public void updateAudit(PaySpendingContractAudit paySpendingContractAudit) {
PaySpendingContract paySpendingContractStatus = paySpendingContractService.getById(paySpendingContractAudit.getContractId());
if(Objects.isNull(paySpendingContractStatus)){
throw new JeroBootException("支出合同不存在!");
}
// 校验合同状态是否为待审核
if(Objects.isNull(paySpendingContractAudit.getContractStatus()) || !Objects.equals(paySpendingContractStatus.getStatus(),PayIncomeContractCommon.STATUS2)
|| (!Objects.equals(paySpendingContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS3) && !Objects.equals(paySpendingContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS4))){
throw new JeroBootException("支出合同状态不正确!");
}
if(Objects.equals(paySpendingContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS4)
&& StringUtils.isBlank(paySpendingContractAudit.getExplainRemarks())){
throw new JeroBootException("请输入拒绝说明!");
}
if(Objects.equals(paySpendingContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS3)){
paySpendingContractAudit.setExplainRemarks("");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaUpdateWrapper<PaySpendingContract> update = new LambdaUpdateWrapper<>();
update.set(PaySpendingContract::getUpdateBy,sysUser.getUsername());
update.set(PaySpendingContract::getUpdateTime,new Date());
update.eq(PaySpendingContract::getId,paySpendingContractAudit.getContractId());
update.set(PaySpendingContract::getStatus, paySpendingContractAudit.getContractStatus());
paySpendingContractService.update(update);
// 添加审核记录
paySpendingContractAuditService.save(paySpendingContractAudit);
// 审核通过
if(Objects.equals(paySpendingContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS3)){
// 更新到合同邮寄表
PayMailContract payMailContract = new PayMailContract();
PayContactsManagementTemporary payContactsManagementTemporary = payContactsManagementTemporaryService.getById(paySpendingContractStatus.getSignedContactsTemporaryId());
if(!Objects.isNull(payContactsManagementTemporary)){
payMailContract.setMobile(payContactsManagementTemporary.getPhone());
payMailContract.setEmail(payContactsManagementTemporary.getEmail());
}
payMailContract.setContractId(paySpendingContractStatus.getId());
payMailContract.setPostStatus(PayIncomeContractCommon.POST_STATUS0);
payMailContract.setLiaisonMan(paySpendingContractStatus.getContractName());
payMailContractService.save(payMailContract);
// 获取项目负责人,发送消息
List<SysUser> list = sysUserService.getRolesUser(Arrays.asList(RoleCommon.CWRY));
if(!CollectionUtils.isEmpty(list)){
list.forEach(p->{
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if(!StringUtils.isBlank(p.getEmail())){
sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail()));
}
if(!StringUtils.isBlank(p.getPhone())){
sendMessageDTO.setPhone(PasswordUtil.decrypt(p.getPhone()));
}
HashMap<String,String> map = new HashMap<>();
map.put("contractNum",paySpendingContractStatus.getContractNum());
map.put("contractName",paySpendingContractStatus.getContractName());
sendMessageDTO.setFromUser(sysUser.getUsername());
sendMessageDTO.setToUser(p.getUsername());
sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG3.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("M_OPEN_TYPE3");
JSONObject json = new JSONObject();
json.put("revenueId",paySpendingContractStatus.getId());
json.put("contractNum",paySpendingContractStatus.getContractNum());
sendMessageDTO.setBusId(json.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
});
}
}
// 审核未通过
if(Objects.equals(paySpendingContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS4)){
SysUser sysUserData = sysUserService.getById(paySpendingContractStatus.getPrincipalId());
if(!Objects.isNull(sysUserData)){
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if(!StringUtils.isBlank(sysUserData.getEmail())){
sendMessageDTO.setEmail(PasswordUtil.decrypt(sysUserData.getEmail()));
}
if(!StringUtils.isEmpty(sysUserData.getPhone())){
sendMessageDTO.setPhone(PasswordUtil.decrypt(sysUserData.getPhone()));
}
HashMap<String,String> map = new HashMap<>();
map.put("contractNum",paySpendingContractStatus.getContractNum());
map.put("contractName",paySpendingContractStatus.getContractName());
sendMessageDTO.setFromUser(sysUser.getUsername());
sendMessageDTO.setToUser(sysUserData.getUsername());
sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG4.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("M_OPEN_TYPE4");
JSONObject json = new JSONObject();
json.put("revenueId",paySpendingContractStatus.getId());
json.put("contractNum",paySpendingContractStatus.getContractNum());
sendMessageDTO.setBusId(json.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
}
}
}
@Override
@Transactional
public void updateArchive(PaySpendingContractAudit paySpendingContractAudit) {
PaySpendingContract paySpendingContractStatus = paySpendingContractService.getById(paySpendingContractAudit.getContractId());
if(Objects.isNull(paySpendingContractStatus)){
throw new JeroBootException("支出合同不存在!");
}
// 校验合同状态是否为已通过
if(!Objects.equals(paySpendingContractStatus.getStatus(),PayIncomeContractCommon.STATUS3)){
throw new JeroBootException("支出合同不可归档!");
}
if(Objects.isNull(paySpendingContractAudit.getContractStatus()) || !Objects.equals(paySpendingContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS5)){
throw new JeroBootException("支出合同状态不正确!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaUpdateWrapper<PaySpendingContract> update = new LambdaUpdateWrapper<>();
update.set(PaySpendingContract::getUpdateBy,sysUser.getUsername());
update.set(PaySpendingContract::getUpdateTime,new Date());
update.eq(PaySpendingContract::getId,paySpendingContractAudit.getContractId());
update.set(PaySpendingContract::getStatus, PayIncomeContractCommon.STATUS5);
paySpendingContractService.update(update);
// 添加归档记录
paySpendingContractAudit.setContractStatus(PayIncomeContractCommon.STATUS5);
paySpendingContractAuditService.save(paySpendingContractAudit);
}
@@ -589,21 +767,21 @@ public class PaySpendingContractServiceImpl extends ServiceImpl<PaySpendingContr
paySpendingContract.setContractTimePoints(map.get(13));
if(!StringUtils.isBlank(map.get(13))){
if(!pattern.matcher(map.get(13)).matches()){
sb.append("").append(n).append("行:应金额格式错误,请修改。<br/>");
sb.append("").append(n).append("行:应金额格式错误,请修改。<br/>");
}else{
paySpendingContract.setAccountsReceivableAmount(new BigDecimal(map.get(13)));
}
}
if(!StringUtils.isBlank(map.get(14))){
if(!pattern.matcher(map.get(14)).matches()){
sb.append("").append(n).append("行:已金额格式错误,请修改。<br/>");
sb.append("").append(n).append("行:已金额格式错误,请修改。<br/>");
}else{
paySpendingContract.setAmountReceived(new BigDecimal(map.get(14)));
}
}
if(!StringUtils.isBlank(map.get(15))){
if(!pattern.matcher(map.get(15)).matches()){
sb.append("").append(n).append("行:未金额格式错误,请修改。<br/>");
sb.append("").append(n).append("行:未金额格式错误,请修改。<br/>");
}else{
paySpendingContract.setOutstandingAmount(new BigDecimal(map.get(15)));
}
@@ -0,0 +1,14 @@
package com.jero.contract.vo;
import com.jero.contract.entity.PayIncomeContractAudit;
import lombok.Data;
import java.io.Serializable;
@Data
public class PaySpendingContractAuditOutput extends PayIncomeContractAudit implements Serializable {
/**
* 合同状态(1:草稿,2:待审核,3:已通过,4:未通过,5:已归档)
*/
private String contractStatus_dictText;
}
@@ -2,6 +2,7 @@ package com.jero.contract.vo;
import com.jero.contract.entity.PaySpendingContract;
import com.jero.contract.entity.PaySpendingContractInstallment;
import com.jero.mail.entity.PayMailContract;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -23,9 +24,30 @@ public class PaySpendingContractDetailOutput extends PaySpendingContract impleme
* 是否打包(1:是,2:否)
*/
private String pack_dictText;
/**
* 合同状态(2:待审核,3:已通过,4:未通过,5:已存档)
*/
private String contractStatus_dictText;
/**
* 分期记录
*/
@ApiModelProperty(value = "分期记录集合")
private List<PaySpendingContractInstallment> listInstallment;
/**
* 归档记录
*/
@ApiModelProperty(value = "归档记录")
private List<PaySpendingContractAuditOutput> listArchive;
/**
* 审核记录
*/
@ApiModelProperty(value = "审核记录")
private List<PaySpendingContractAuditOutput> listAudit;
/**
* 邮寄信息
*/
@ApiModelProperty(value = "邮寄信息")
private PayMailContract payMailContract;
}
@@ -47,14 +47,14 @@ public class PaySpendingContractExcelModel implements Serializable {
/**合同约定主要时点*/
@Excel(name = "合同约定主要时点", width = 15)
private String contractTimePoints;
/**应金额*/
@Excel(name = "金额", width = 15)
/**应金额*/
@Excel(name = "金额", width = 15)
private String accountsReceivableAmount;
/**已金额*/
@Excel(name = "金额", width = 15)
/**已金额*/
@Excel(name = "金额", width = 15)
private String amountReceived;
/**未金额*/
@Excel(name = "金额", width = 15)
/**未金额*/
@Excel(name = "金额", width = 15)
private BigDecimal outstandingAmount;
/**账款状态(1:未支付,2:部分支付,3:已付全款)*/
@Excel(name = "账款状态", width = 15)
@@ -65,31 +65,31 @@ public class PaySpendingContractExcelModel implements Serializable {
/**阶段名称*/
@Excel(name = "1阶段", width = 15)
private String phaseName1;
/**应金额*/
@Excel(name = "1阶段应", width = 15)
/**应金额*/
@Excel(name = "1阶段应", width = 15)
private Integer accountsReceivableAmount1;
/**应时间*/
@Excel(name = "1阶段应时间", width = 15, format = "yyyy-MM-dd")
/**应时间*/
@Excel(name = "1阶段应时间", width = 15, format = "yyyy-MM-dd")
private Date accountsReceivableTime1;
/**实金额*/
@Excel(name = "1阶段实", width = 15)
/**实金额*/
@Excel(name = "1阶段实", width = 15)
private Integer paidAmount1;
/**实时间*/
@Excel(name = "1阶段实时间", width = 15, format = "yyyy-MM-dd")
/**实时间*/
@Excel(name = "1阶段实时间", width = 15, format = "yyyy-MM-dd")
private Date paidTime1;
/**阶段名称*/
@Excel(name = "2阶段", width = 15)
private String phaseName2;
/**应金额*/
@Excel(name = "2阶段应", width = 15)
/**应金额*/
@Excel(name = "2阶段应", width = 15)
private Integer accountsReceivableAmount2;
/**应时间*/
@Excel(name = "2阶段应时间", width = 15, format = "yyyy-MM-dd")
/**应时间*/
@Excel(name = "2阶段应时间", width = 15, format = "yyyy-MM-dd")
private Date accountsReceivableTime2;
/**实金额*/
@Excel(name = "2阶段实", width = 15)
/**实金额*/
@Excel(name = "2阶段实", width = 15)
private Integer paidAmount2;
/**实时间*/
@Excel(name = "2阶段实时间", width = 15, format = "yyyy-MM-dd")
/**实时间*/
@Excel(name = "2阶段实时间", width = 15, format = "yyyy-MM-dd")
private Date paidTime2;
}
@@ -9,8 +9,12 @@ 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.common.ProjectCommon;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.ManagementMessageEnums;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.service.SendMessageService;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.AuthenticationUtils;
import com.jero.common.util.PasswordUtil;
import com.jero.company.entity.PayCompanyManagement;
@@ -55,16 +59,15 @@ import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -104,13 +107,11 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
@Resource
private PayMailBillProjectMapper payMailBillProjectMapper;
@Resource
private ProjectDetailService projectDetailService;
@Resource
private IPayCompanyManagementTemporaryService payCompanyManagementTemporaryService;
@Resource
private IPayCompanyManagementService payCompanyManagementService;
@Resource
private IPayPaymentRecordService payPaymentRecordService;
private SendMessageService sendMessageService;
@Resource
private ISysUserService sysUserService;
@@ -200,6 +201,39 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
//批量插入票据关联项目表
payMailBillProjectService.saveBatch(bmpList);
// 获取项目负责人,发送消息
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!StringUtils.isEmpty(principalId)){
SysUser sysUserInfo = sysUserService.getById(payMailBill.getPrincipalId());
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if(!StringUtils.isBlank(sysUserInfo.getEmail())){
sendMessageDTO.setEmail(PasswordUtil.decrypt(sysUserInfo.getEmail()));
}
if(!StringUtils.isEmpty(sysUserInfo.getPhone())){
sendMessageDTO.setPhone(PasswordUtil.decrypt(sysUserInfo.getPhone()));
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
HashMap<String,String> map = new HashMap<>();
map.put("projectName", payMailBill.getProjectName());
map.put("time", sdf.format(payMailBill.getCreateTime()));
map.put("amount", String.valueOf(payMailBill.getInvoiceAmount()));
map.put("num", String.valueOf(payMailBill.getBillNo()));
sendMessageDTO.setFromUser(sysUser.getUsername());
sendMessageDTO.setToUser(sysUserInfo.getUsername());
sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG12.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("M_OPEN_TYPE12");
// JSONObject json = new JSONObject();
// if(payWorkingGroupDistributionRecord.getProjectType() == PayProjectCommon.PROJECT_TYPE_FILE1){
// json.put("id",listStr.get(0).getSubId());
// }else if(payWorkingGroupDistributionRecord.getProjectType() == PayProjectCommon.PROJECT_TYPE_FILE2){
// json.put("id",listStr.get(0).getProjectId());
// }
// sendMessageDTO.setBusId(json.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
}
return Result.OK("添加成功!");
}
@@ -8,6 +8,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.RolePermissionService;
@@ -17,9 +19,10 @@ import com.jero.common.system.vo.DictModel;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.entity.PayCompanyManagement;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.member.entity.PayMemberProject;
import com.jero.member.entity.PayMemberProjectSubitem;
import com.jero.member.service.IPayMemberProjectService;
@@ -28,12 +31,15 @@ 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.member.vo.PayMemberProjectSubitemExcel;
import com.jero.project.common.PayProjectCommon;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
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.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
@@ -59,6 +65,8 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
@Resource
private IPayContactsManagementService contactsManagementService;
@Resource
private IPayIncomeContractService payIncomeContractService;
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private RolePermissionService rolePermissionService;
@@ -239,6 +247,7 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
@AutoLog(value = "会员项目成员表-导入数据")
@ApiOperation(value = "会员项目成员表-导入数据", notes = "会员项目成员表-通过id查询")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
@Transactional
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
String projectId = request.getParameter("projectId");
if (StringUtils.isBlank(projectId)) {
@@ -287,6 +296,17 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
errorMessage.add("" + errorRowNum + "行:需要发票不符合规范");
}
}
if (Objects.equals(Integer.parseInt(paymentTypeMap.get(paymentMethod)), PayProjectCommon.CHARGE_WAY2)) {
// 合同编号验证
LambdaQueryWrapper<PayIncomeContract> queryPayIncomeContract = new LambdaQueryWrapper();
queryPayIncomeContract.eq(PayIncomeContract::getContractNum,projectSubitemExcel.getContractNo());
queryPayIncomeContract.eq(PayIncomeContract::getSignedCompanyId,projectSubitemExcel.getCompanyId());
List<PayIncomeContract> listPayIncomeContract = payIncomeContractService.list(queryPayIncomeContract);
if(CollectionUtils.isEmpty(listPayIncomeContract)){
errorMessage.add("" + errorRowNum + "行:合同号不存在");
}
}
//复制属性
BeanUtils.copyProperties(projectSubitemExcel, projectSubitem);
@@ -16,6 +16,8 @@ import com.jero.member.service.IPayMemberProjectService;
import com.jero.member.service.IPayMemberProjectSubitemService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayCommonProject;
import org.apache.commons.collections.CollectionUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +21,7 @@ import com.jero.member.mapper.PayMemberProjectMapper;
import com.jero.pack.entity.PayPackCompanyProject;
import com.jero.pack.service.IPayPackCompanyProjectService;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayCommonProject;
import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
@@ -209,6 +210,21 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
payMemberProjectSubitem.setMail(projectStatusVO.getMail());
}
}
// 选择无
if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(), PayProjectCommon.CHARGE_WAY1)){
payMemberProjectSubitem.setContractNo(null);
payMemberProjectSubitem.setChargeNoticeNo(null);
payMemberProjectSubitem.setChargeNoticeFileId(null);
}
// 选择合同
if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){
payMemberProjectSubitem.setChargeNoticeNo(null);
payMemberProjectSubitem.setChargeNoticeFileId(null);
}
// 选择收费通知
if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY3)){
payMemberProjectSubitem.setContractNo(null);
}
validMemberProjectSubitemEdit(payMemberProjectSubitem,payMemberProjectSubitem1);
saveOrUpdate(payMemberProjectSubitem);
}
@@ -130,7 +130,7 @@
<select id="queryPackListAll" resultType="com.jero.project.entity.PayCommonProject">
SELECT * FROM (
<!-- 普通项目-->
select c.id,c.charge_project, c.charge_use, c.principal_id,c.principal_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
select c.id,c.charge_project, c.charge_use, c.principal_id,c.principal_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,c.contacts_temporary_name
from pay_common_project c
<where>
<if test="projectId != null and projectId != ''">
@@ -151,7 +151,7 @@
</where>
<!--工作组项目-->
UNION ALL
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,g.principal_name_a,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
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,g.principal_name_a,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.contacts_temporary_name_one
from pay_working_group g
inner join pay_working_group_subitem gsub on g.id = gsub.working_group_id
<where>
@@ -173,7 +173,7 @@
</where>
<!-- 会议项目-->
UNION ALL
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, meeting.director_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
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, meeting.director_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.company_contact_name
from pay_meeting meeting
inner join pay_meeting_situation sit on meeting.id = sit.meeting_id
<where>
@@ -196,7 +196,7 @@
</where>
<!-- 会员项目-->
UNION ALL
select msub.id,pmp.project_name,msub.charge_use,pmp.director_id,pmp.director_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
select msub.id,pmp.project_name,msub.charge_use,pmp.director_id,pmp.director_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.company_contact_name
from pay_member_project pmp
inner join pay_member_project_subitem msub on pmp.id=msub.project_id
<where>
@@ -218,7 +218,7 @@
</where>
<!-- 标协会员项目-->
UNION ALL
select tmsub.id,tmember.project_name,tmsub.charge_use,'','',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
select tmsub.id,tmember.project_name,tmsub.charge_use,'','',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.liaison_man
from tb_member_project tmember
inner join tb_member_project_subitem tmsub on tmember.id=tmsub.project_id
<where>
@@ -4,10 +4,10 @@
<!-- 到账开票主列表-->
<select id="mainList" resultType="com.jero.project.entity.PayCommonProject">
select p.id,p.charge_project, p.charge_use, p.principal_id,p.principal_name,p.charge_company_id,p.charge_company_temporary_name,p.receivable_amount,p.paid_amount,p.need_invoice,p.pack,p.in_account,p.make_invoice,p.mail,p.create_time,p.projectType,p.invoice_amount,p.mail_contacts_id,p.register_check_result
select p.id,p.charge_project, p.charge_use, p.principal_id,p.principal_name,p.charge_company_id,p.charge_company_temporary_name,p.receivable_amount,p.paid_amount,p.need_invoice,p.pack,p.in_account,p.make_invoice,p.mail,p.create_time,p.projectType,p.invoice_amount,p.mail_contacts_id,p.register_check_result,p.contacts_temporary_name
from
(<!-- 普通项目-->
select c.id,c.charge_project, c.charge_use, c.principal_id,c.principal_name,c.charge_company_id,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,c.invoice_amount,c.mail_contacts_id,'' as register_check_result
select c.id,c.charge_project, c.charge_use, c.principal_id,c.principal_name,c.charge_company_id,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,c.invoice_amount,c.mail_contacts_id,'' as register_check_result,c.contacts_temporary_name
from pay_common_project c
where
c.receivable_amount <![CDATA[<>]]> 0
@@ -23,7 +23,7 @@
</if>
<!--工作组项目-->
UNION ALL
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,g.principal_name_a,gsub.charge_company_id,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.invoice_amount,gsub.mail_contacts_id,'' as register_check_result
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,g.principal_name_a,gsub.charge_company_id,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.invoice_amount,gsub.mail_contacts_id,'' as register_check_result,gsub.contacts_temporary_name_one
from pay_working_group g
inner join pay_working_group_subitem gsub on g.id = gsub.working_group_id
where
@@ -40,7 +40,7 @@
</if>
<!-- 会议项目-->
UNION ALL
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, meeting.director_name,sit.company_id,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.invoice_amount,sit.post_contact_id,sit.register_check_result
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, meeting.director_name,sit.company_id,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.invoice_amount,sit.post_contact_id,sit.register_check_result,sit.company_contact_name
from pay_meeting meeting
inner join pay_meeting_situation sit on meeting.id = sit.meeting_id
where
@@ -57,7 +57,7 @@
</if>
<!-- 会员项目-->
UNION ALL
select msub.id,member.project_name,msub.charge_use,member.director_id,member.director_name,msub.company_id,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.invoice_amount,msub.post_contact_id,'' as register_check_result
select msub.id,member.project_name,msub.charge_use,member.director_id,member.director_name,msub.company_id,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.invoice_amount,msub.post_contact_id,'' as register_check_result,msub.company_contact_name
from pay_member_project member
inner join pay_member_project_subitem msub on member.id=msub.project_id
where
@@ -74,7 +74,7 @@
</if>
<!-- 标协会员项目-->
UNION ALL
select tmsub.id,tmember.project_name,tmsub.charge_use,'空','空',tmsub.company_id,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.invoice_amount,tmsub.liaison_man_id,'' as register_check_result
select tmsub.id,tmember.project_name,tmsub.charge_use,'空','空',tmsub.company_id,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.invoice_amount,tmsub.liaison_man_id,'' as register_check_result,tmsub.liaison_man
from tb_member_project tmember
inner join tb_member_project_subitem tmsub on tmember.id=tmsub.project_id
where
@@ -1,36 +1,54 @@
package com.jero.payment.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.common.RoleCommon;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.ManagementMessageEnums;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.SendMessageService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.entity.PayCompanyManagement;
import com.jero.company.service.IPayCompanyManagementService;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingSituation;
import com.jero.meeting.mapper.PayMeetingSituationMapper;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.member.entity.PayMemberProject;
import com.jero.member.entity.PayMemberProjectSubitem;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.mapper.PayMemberProjectSubitemMapper;
import com.jero.member.mapper.TbMemberProjectSubitemMapper;
import com.jero.member.service.IPayMemberProjectService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.payment.entity.PayPaymentRecord;
import com.jero.payment.mapper.PayPaymentRecordMapper;
import com.jero.payment.service.IPayPaymentRecordService;
import com.jero.payment.vo.TbCheckVo;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayCommonProject;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.mapper.PayCommonProjectMapper;
import com.jero.project.mapper.PayWorkingGroupSubItemMapper;
import com.jero.common.util.AuthenticationUtils;
import com.jero.project.service.IPayWorkingGroupService;
import com.jero.project.vo.PayCommonProjectOutput;
import com.jero.standards.memberinfo.entity.MemberInfo;
import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
@@ -42,6 +60,7 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -72,6 +91,16 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
private IPayCompanyManagementTemporaryService payCompanyManagementTemporaryService;
@Resource
private IPayCompanyManagementService payCompanyManagementService;
@Resource
private IPayWorkingGroupService payWorkingGroupService;
@Resource
private IPayMeetingService payMeetingService;
@Resource
private IPayMemberProjectService memberProjectService;
@Resource
private ISysUserService sysUserService;
@Resource
private SendMessageService sendMessageService;
@Value("${jero.path.upload}")
private String upLoadPath;
@@ -127,13 +156,19 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
BigDecimal newPaidAmount;
BigDecimal paidAmount;
Integer inAccount;
String principalId = "";
String project = "";
//累加主列表实收金额
switch (String.valueOf(payPaymentRecord.getProjectType())){
// 普通项目
case PayIncomeContractCommon.PROJECT_TYPE1:
PayCommonProject payCommonProject = payCommonProjectMapper.selectById(payPaymentRecord.getProjectId());
if(Objects.isNull(payCommonProject)){
throw new JeroBootException("项目不存在,不可提交!");
}
principalId = payCommonProject.getPrincipalId();
project = payCommonProject.getChargeProject();
receivableAmount = payCommonProject.getReceivableAmount();//应收
paidAmount=payCommonProject.getPaidAmount();//实收
//是否还能再添加来款
@@ -157,7 +192,15 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
// 工作组项目
case PayIncomeContractCommon.PROJECT_TYPE2:
PayWorkingGroupSubItem payWorking = payWorkingGroupSubItemMapper.selectById(payPaymentRecord.getProjectId());
if(Objects.isNull(payWorking)){
throw new JeroBootException("项目不存在,不可提交!");
}
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(payWorking.getWorkingGroupId());
if(Objects.isNull(payWorkingGroup)){
throw new JeroBootException("工作组不存在,不可提交!");
}
principalId = payWorkingGroup.getPrincipalIdA();
project = payWorkingGroup.getWorkingGroupProject();
receivableAmount = payWorking.getReceivableAmount();//应收
paidAmount=payWorking.getPaidAmount();//实收
@@ -182,7 +225,15 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
//会议项目
case PayIncomeContractCommon.PROJECT_TYPE3:
PayMeetingSituation meeting = payMeetingSituationMapper.selectById(payPaymentRecord.getProjectId());
if(Objects.isNull(meeting)){
throw new JeroBootException("项目不存在,不可提交!");
}
PayMeeting payMeeting =payMeetingService.getById(meeting.getMeetingId());
if(Objects.isNull(payMeeting)){
throw new JeroBootException("会议不存在,不可提交!");
}
principalId = payMeeting.getDirectorId();
project = payMeeting.getMeetingName();
receivableAmount = meeting.getAmountReceivable();//应收
paidAmount=meeting.getPaidAmount();//实收
@@ -211,7 +262,15 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
//会员项目
case PayIncomeContractCommon.PROJECT_TYPE4:
PayMemberProjectSubitem member = payMemberProjectSubitemMapper.selectById(payPaymentRecord.getProjectId());
if(Objects.isNull(member)){
throw new JeroBootException("项目不存在,不可提交!");
}
PayMemberProject payMemberProject = memberProjectService.getById(member.getProjectId());
if(Objects.isNull(payMemberProject)){
throw new JeroBootException("会员项目不存在,不可提交!");
}
principalId = payMemberProject.getDirectorId();
project = payMemberProject.getProjectName();
receivableAmount = member.getAmountReceivable();//应收
paidAmount=member.getPaidAmount();//实收
@@ -272,6 +331,38 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
//插入来款记录表
payPaymentRecordMapper.insert(payPaymentRecord);
// return Result.OK("添加成功!");
// 发消息
// 获取项目负责人,发送消息
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!StringUtils.isEmpty(principalId)){
SysUser sysUserInfo = sysUserService.getById(principalId);
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if(!StringUtils.isBlank(sysUserInfo.getEmail())){
sendMessageDTO.setEmail(PasswordUtil.decrypt(sysUserInfo.getEmail()));
}
if(!StringUtils.isEmpty(sysUserInfo.getPhone())){
sendMessageDTO.setPhone(PasswordUtil.decrypt(sysUserInfo.getPhone()));
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
HashMap<String,String> map = new HashMap<>();
map.put("projectName", project);
map.put("time", sdf.format(payPaymentRecord.getCreateTime()));
map.put("amount", String.valueOf(payPaymentRecord.getAmountReceived()));
sendMessageDTO.setFromUser(sysUser.getUsername());
sendMessageDTO.setToUser(sysUserInfo.getUsername());
sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG11.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("M_OPEN_TYPE11");
// JSONObject json = new JSONObject();
// if(payWorkingGroupDistributionRecord.getProjectType() == PayProjectCommon.PROJECT_TYPE_FILE1){
// json.put("id",listStr.get(0).getSubId());
// }else if(payWorkingGroupDistributionRecord.getProjectType() == PayProjectCommon.PROJECT_TYPE_FILE2){
// json.put("id",listStr.get(0).getProjectId());
// }
// sendMessageDTO.setBusId(json.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
}
}
/**
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
import com.jero.contract.entity.PayIncomeContract;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
@@ -229,4 +230,9 @@ public class PayWorkingGroupSubItem implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "运行年份")
private String year;
/**
* 合同数据
*/
@TableField(exist = false)
private PayIncomeContract payIncomeContract;
}
@@ -19,6 +19,8 @@ import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.meeting.entity.PayMeetingRemindRecord;
import com.jero.meeting.service.IPayMeetingRemindRecordService;
@@ -85,6 +87,8 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
@Resource
private ContractCreateProjectSendMessageService contractCreateProjectSendMessageService;
@Resource
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@Resource
private RolePermissionService rolePermissionService;
@@ -504,6 +508,17 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
}
if (StringUtils.isBlank(p.getContractNum())) {
msg.append("").append(count + 3).append("行:合同号不能为空,请修改。<br/>");
}else{
// 合同编号验证
LambdaQueryWrapper<PayIncomeContract> queryPayIncomeContract = new LambdaQueryWrapper();
queryPayIncomeContract.eq(PayIncomeContract::getContractNum,p.getContractNum());
queryPayIncomeContract.eq(PayIncomeContract::getSignedCompanyId,p.getChargeCompanyId());
List<PayIncomeContract> listPayIncomeContract = payIncomeContractService.list(queryPayIncomeContract);
if(CollectionUtils.isEmpty(listPayIncomeContract)){
msg.append("").append(count + 3).append("行:合同号不存在,请修改。<br/>");
}else{
p.setPayIncomeContract(listPayIncomeContract.get(0));
}
}
}
if (Objects.equals(p.getChargeWay(), PayProjectCommon.CHARGE_WAY3)) {
@@ -524,6 +539,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
msg.append("").append(count + 3).append("行:应收金额不能为空,请修改。<br/>");
}
}
p.setChargeUse(PayProjectCommon.CHARGE_USE1);
p.setPack(PayProjectCommon.PACKAGING0);
p.setInAccount(PayProjectCommon.IN_ACCOUNT0);
p.setMakeInvoice(PayProjectCommon.MAKE_INVOICE0);
@@ -539,6 +555,23 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
list.forEach(this::setPayWorkingGroupSubItemAdd);
// 更新数据
payWorkingGroupSubItemService.saveBatch(list);
list.forEach(p->{
PayIncomeContract payIncomeContract = p.getPayIncomeContract();
// 合同存在 && 合同状态不为草稿,不为未通过 关联合同
PayIncomeContractAssociated payIncomeContractAssociated = new PayIncomeContractAssociated();
payIncomeContractAssociated.setContractId(payIncomeContract.getId());
payIncomeContractAssociated.setProjectType(Integer.parseInt(PayProjectCommon.PROJECT_TYPE2));
payIncomeContractAssociated.setProjectId(p.getId());
payIncomeContractAssociatedService.save(payIncomeContractAssociated);
// 关联了合同,判断合同是否打包,更新项目打包状态,添加打包
if(Objects.equals(payIncomeContract.getPack(),PayProjectCommon.PACKAGING1)){
payPackCompanyProjectService.setPack(p.getChargeCompanyId(),p.getContactsIdOne(),payIncomeContract.getPackYear(),p.getId(),PayProjectCommon.PROJECT_TYPE2,payIncomeContract.getPack());
LambdaUpdateWrapper<PayWorkingGroupSubItem> update = new LambdaUpdateWrapper<>();
update.eq(PayWorkingGroupSubItem::getId,p.getId());
update.set(PayWorkingGroupSubItem::getPack,PayProjectCommon.PACKAGING1);
payWorkingGroupSubItemService.update(update);
}
});
}
}
}else{