This commit is contained in:
Paidax
2024-11-29 09:03:59 +08:00
commit 2ffadd89a7
3480 changed files with 879405 additions and 0 deletions
@@ -0,0 +1,28 @@
package io.v.nutz.zhgh.medicalMutualAidFund.constant;
import io.v.nutz.base.annontation.SelectEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 互助金审核代码
*
* @author jug
* @date 2024/01/17
*/
@Getter
@SelectEnum
@AllArgsConstructor
public enum MedicalMutualAidFundAuditStateConstant {
NOT_SUBMIT(1, "待提交"),
BRANCH_UNION_AUDIT(2, "待分工会审核"),
BRANCH_UNION_REJECT(3, "分工会审核拒绝"),
SCHOOL_HOSPITAL_IMPORT(4,"待校医院核定金额"),
FUND_AID_GROUP_IMPORT(5,"待医疗互助金小组核定金额"),
PASS(6,"申请通过");
private final int code;
private final String desc;
}
@@ -0,0 +1,158 @@
package io.v.nutz.zhgh.medicalMutualAidFund.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import io.v.nutz.base.utils.OfficeTemplateUtil;
import io.v.nutz.web.commons.slog.annotation.SLog;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.medicalMutualAidFund.constant.MedicalMutualAidFundAuditStateConstant;
import io.v.nutz.zhgh.medicalMutualAidFund.handler.MedicalMutualAidFundToDoHandler;
import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
/**
* 互助金申请
*
* @author jug
* @date 2024/01/17
*/
@IocBean
@At("/platform/medicalMutualAidFund/apply")
@Slf4j
@Ok("json:full")
public class MedicalMutualAidFundApplyController {
@Inject
private Dao dao;
@Inject
private OfficeTemplateUtil officeTemplateUtil;
@At("")
@Ok("beetl:/platform/medicalMutualAidFund/apply.html")
@RequiresPermissions("medicalMutualAidFund.apply")
public void index(HttpServletRequest request) {
}
@At
@RequiresPermissions("medicalMutualAidFund.apply")
@SLog(type = "medicalMutualAidFund", tag = "互助金申请保存", msg = "互助金申请保存")
public Result save(@Param("apply") MedicalMutualAidFund medicalMutualAidFund) {
if (StrUtil.isBlank(medicalMutualAidFund.getId())) {
int count = dao.count(MedicalMutualAidFund.class, Cnd.where("YEAR(applyDate)", "=", DateUtil.thisYear())
.and("userId", "=", ShiroUtil.getUserId()));
if (count > 0) {
return Result.error("您今年已经申请过了,请到我的申请里查看!");
}
}
medicalMutualAidFund.setStateId(MedicalMutualAidFundAuditStateConstant.NOT_SUBMIT.getCode());
medicalMutualAidFund.setApplyDate(new Date());
dao.insertOrUpdate(medicalMutualAidFund);
//开启流程
MedicalMutualAidFundToDoHandler.START_PROCESS.exec(medicalMutualAidFund);
return Result.success();
}
@At
@RequiresPermissions("medicalMutualAidFund.apply")
@SLog(type = "medicalMutualAidFund", tag = "互助金申请提交", msg = "互助金申请提交")
public Result submit(@Param("apply") MedicalMutualAidFund medicalMutualAidFund) {
if (StrUtil.isBlank(medicalMutualAidFund.getId())) {
int count = dao.count(MedicalMutualAidFund.class, Cnd.where("YEAR(applyDate)", "=", DateUtil.thisYear())
.and("userId", "=", ShiroUtil.getUserId()));
if (count > 0) {
return Result.error("您今年已经申请过了,请到我的申请里查看!");
}
}
medicalMutualAidFund.setStateId(MedicalMutualAidFundAuditStateConstant.BRANCH_UNION_AUDIT.getCode());
medicalMutualAidFund.setApplyDate(new Date());
dao.insertOrUpdate(medicalMutualAidFund);
//开启流程
MedicalMutualAidFundToDoHandler.START_PROCESS.exec(medicalMutualAidFund);
//完成修改任务 如果有的话
MedicalMutualAidFundToDoHandler.COMPLETE_APPLY_RE_MODIFY_TASK.exec(medicalMutualAidFund);
//创建分工会待办
MedicalMutualAidFundToDoHandler.CREATE_UNION_TASK.exec(medicalMutualAidFund);
return Result.success();
}
@At
@RequiresPermissions("medicalMutualAidFund.apply")
@SLog(type = "medicalMutualAidFund", tag = "互助金申请修改", msg = "互助金申请修改")
public Result update(@Param("apply") MedicalMutualAidFund medicalMutualAidFund) {
dao.updateIgnoreNull(medicalMutualAidFund);
return null;
}
@At
@RequiresPermissions("medicalMutualAidFund.apply")
public Result findOne(String id) {
MedicalMutualAidFund mutualAidFund = dao.fetch(MedicalMutualAidFund.class, id);
dao.fetchLinks(mutualAidFund, "branchUnionAudit");
// dao.fetchLinks(mutualAidFund, "schoolHospitalConfirmSelfPaymentAmountAudit");
dao.fetchLinks(mutualAidFund, "schoolConfirmSelfPaymentAmountAudit");
return Result.success(mutualAidFund);
}
@At
@RequiresPermissions(value =
{"medicalMutualAidFund.apply",
"medicalMutualAidFund.myApply",
"medicalMutualAidFund.branchUnionAudit",
"medicalMutualAidFund.schoolUnionAudit"}, logical = Logical.OR)
@Ok("void")
public void exportApply(String id, HttpServletResponse response) {
try {
MedicalMutualAidFund mutualAidFund = dao.fetch(MedicalMutualAidFund.class, id);
dao.fetchLinks(mutualAidFund, "branchUnionAudit");
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
Configure config = Configure.builder().bind("familyIncome", policy).build();
String docxName = mutualAidFund.getUserName() + "互助金申请";
NutMap nutMap = Lang.obj2nutmap(mutualAidFund);
nutMap.setv("applyDate", DateUtil.format(DateUtil.parseDate(nutMap.getString("applyDate")), "yyyy年MM月dd日"));
nutMap.setv("birthday", DateUtil.format(DateUtil.parseDate(nutMap.getString("birthday")), "yyyy年MM月dd日"));
nutMap.setv("fghyj", mutualAidFund.getBranchUnionAudit() != null ? mutualAidFund.getBranchUnionAudit().getAuditOpinion() : null);
nutMap.setv("hdje", mutualAidFund.getSchoolConfirmSelfPaymentAmount());
nutMap.setv("bzje", mutualAidFund.getFinalSubsidyMoney());
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(docxName.getBytes("UTF-8"), "ISO-8859-1") + "\".docx");
ServletOutputStream os = response.getOutputStream();
XWPFTemplate.compile(officeTemplateUtil.getPath("medicalMutualAidFundApply"),
config).render(nutMap).writeAndClose(os);
os.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
@@ -0,0 +1,107 @@
package io.v.nutz.zhgh.medicalMutualAidFund.controller;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.web.commons.slog.annotation.SLog;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.medicalMutualAidFund.constant.MedicalMutualAidFundAuditStateConstant;
import io.v.nutz.zhgh.medicalMutualAidFund.handler.MedicalMutualAidFundToDoHandler;
import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletRequest;
/**
* 分工会审核
*
* @author jug
* @date 2024/01/17
*/
@IocBean
@At("/platform/medicalMutualAidFund/branchUnionAudit")
@Slf4j
@Ok("json:full")
public class MedicalMutualAidFundBranchUnionAuditController {
@Inject
private Dao dao;
@Inject(value = "MedicalMutualAidFund")
private ViService medicalMutualAidFundService;
@At("")
@Ok("beetl:/platform/medicalMutualAidFund/branchUnionAudit.html")
@RequiresPermissions("medicalMutualAidFund.branchUnionAudit")
public void index(HttpServletRequest request) {
}
@At
@RequiresPermissions("medicalMutualAidFund.branchUnionAudit")
public Result pageData(PageForm pageForm, @Param(required = false, value = "year") Integer year,Integer isAudit) {
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(applyDate)", "=", year);
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
cnd.and("unionId", "=", Vi.getUnionId());
}
switch (isAudit) {
case 0 -> cnd.and("stateId", ">=", MedicalMutualAidFundAuditStateConstant.BRANCH_UNION_AUDIT.getCode());
case 1 -> cnd.and("stateId", ">", MedicalMutualAidFundAuditStateConstant.BRANCH_UNION_AUDIT.getCode());
case -1 -> cnd.and("stateId", "=", MedicalMutualAidFundAuditStateConstant.BRANCH_UNION_AUDIT.getCode());
}
Pagination pagination = medicalMutualAidFundService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
return Result.success(pagination);
}
@At
@RequiresPermissions("medicalMutualAidFund.branchUnionAudit")
@SLog(type = "medicalMutualAidFund", tag = "分工会(离退休)审核通过", msg = "分工会(离退休)审核通过")
@Aop(TransAop.READ_COMMITTED)
public Result pass(Audit audit, String id) {
dao.insert(audit);
dao.update(MedicalMutualAidFund.class,
Chain.make("stateId", MedicalMutualAidFundAuditStateConstant.SCHOOL_HOSPITAL_IMPORT.getCode())
.add("branchUnionAuditId", audit.getId()),
Cnd.where("id", "=", id));
//完成待办
MedicalMutualAidFundToDoHandler.COMPLETE_UNION_TASK.exec(new MedicalMutualAidFund().setId(id));
//发起校医院待办
MedicalMutualAidFundToDoHandler.CREATE_SCHOOL_HOSPITAL_TASK.exec(new MedicalMutualAidFund().setId(id));
return Result.success();
}
@At
@RequiresPermissions("medicalMutualAidFund.branchUnionAudit")
@SLog(type = "medicalMutualAidFund", tag = "分工会(离退休)审核拒绝", msg = "分工会(离退休)审核拒绝")
@Aop(TransAop.READ_COMMITTED)
public Result reject(Audit audit, String id) {
dao.insert(audit);
dao.update(MedicalMutualAidFund.class,
Chain.make("stateId", MedicalMutualAidFundAuditStateConstant.BRANCH_UNION_REJECT.getCode())
.add("branchUnionAuditId", audit.getId()),
Cnd.where("id", "=", id));
//完成待办
MedicalMutualAidFundToDoHandler.COMPLETE_UNION_TASK.exec(new MedicalMutualAidFund().setId(id));
//发起重新填写待办
MedicalMutualAidFundToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(new MedicalMutualAidFund().setId(id));
return Result.success();
}
}
@@ -0,0 +1,195 @@
package io.v.nutz.zhgh.medicalMutualAidFund.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.zhgh.medicalMutualAidFund.constant.MedicalMutualAidFundAuditStateConstant;
import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.upload.TempFile;
import org.nutz.mvc.upload.UploadAdaptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 互助金小组金额
*
* @author jug
* @date 2024/01/17
*/
@IocBean
@At("/platform/medicalMutualAidFund/finalAudit")
@Slf4j
@Ok("json:full")
public class MedicalMutualAidFundFinalAuditController {
private static final BigDecimal lowerBound = new BigDecimal("5000");
private static final BigDecimal middleBound = new BigDecimal("30000");
private static final BigDecimal upperBound = new BigDecimal("70000");
private static final BigDecimal maxSubsidyAmount = new BigDecimal("30000");
@Inject
private Dao dao;
@Inject(value = "MedicalMutualAidFund")
private ViService medicalMutualAidFundService;
@At("")
@Ok("beetl:/platform/medicalMutualAidFund/finalAudit.html")
@RequiresPermissions("medicalMutualAidFund.finalAudit")
public void index(HttpServletRequest request) {
}
@At
@RequiresPermissions("medicalMutualAidFund.finalAudit")
public Result pageData(PageForm pageForm, @Param(required = false, value = "year") Integer year, Integer isAudit) {
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(applyDate)", "=", year);
cnd.and("stateId", ">", MedicalMutualAidFundAuditStateConstant.FUND_AID_GROUP_IMPORT.getCode());
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("userName", pageForm.getSearchKeyword());
seg.orLike("loginName", pageForm.getSearchKeyword());
cnd.and(seg);
}
Pagination pagination = medicalMutualAidFundService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
return Result.success(pagination);
}
@At
@RequiresPermissions("medicalMutualAidFund.finalAudit")
public Result modifyFinalSubsidyMoney(String id,
double schoolHospitalConfirmSelfPaymentAmount,
double schoolConfirmSelfPaymentAmount,
double finalSubsidyMoney,
boolean calcMode) {
Chain chain = Chain.make("schoolHospitalConfirmSelfPaymentAmount", BigDecimal.valueOf(schoolHospitalConfirmSelfPaymentAmount).setScale(2));
chain.add("schoolConfirmSelfPaymentAmount", BigDecimal.valueOf(schoolConfirmSelfPaymentAmount).setScale(2));
chain.add("finalSubsidyMoney", finalSubsidyMoney);
medicalMutualAidFundService.update(chain, Cnd.where("id", "=", id));
return Result.success();
}
/**
* 计算金额
*
* @param schoolConfirmSelfPaymentAmount 互助金小组核对金额
* @return
*/
@At
@RequiresPermissions("medicalMutualAidFund.finalAudit")
public Result calcMoney(double schoolConfirmSelfPaymentAmount) {
BigDecimal confirmMoney = new BigDecimal(schoolConfirmSelfPaymentAmount).setScale(2, RoundingMode.HALF_UP);
BigDecimal subsidyAmount = BigDecimal.ZERO;
if (confirmMoney.compareTo(lowerBound) > 0) {
if (confirmMoney.compareTo(middleBound) <= 0) {
subsidyAmount = subsidyAmount.add((confirmMoney.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
} else if (confirmMoney.compareTo(upperBound) <= 0) {
subsidyAmount = subsidyAmount.add((middleBound.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
subsidyAmount = subsidyAmount.add((confirmMoney.subtract(middleBound)).multiply(new BigDecimal("0.3")));
} else {
subsidyAmount = subsidyAmount.add((middleBound.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
subsidyAmount = subsidyAmount.add((upperBound.subtract(middleBound)).multiply(new BigDecimal("0.3")));
subsidyAmount = subsidyAmount.add((confirmMoney.subtract(upperBound)).multiply(new BigDecimal("0.35")));
}
}
subsidyAmount = subsidyAmount.min(maxSubsidyAmount);
// 向上取整至十位计
subsidyAmount = subsidyAmount.setScale(-1, BigDecimal.ROUND_CEILING);
return Result.success(subsidyAmount);
}
@At
@RequiresPermissions("medicalMutualAidFund.finalAudit")
public Result batchCalcSubsidyAmount(Integer year) {
List<MedicalMutualAidFund> list = dao.query(MedicalMutualAidFund.class, Cnd.where("YEAR(applyDate)", "=", year));
for (MedicalMutualAidFund medicalMutualAidFund : list) {
BigDecimal confirmMoney = medicalMutualAidFund.getSchoolConfirmSelfPaymentAmount();
BigDecimal subsidyAmount = BigDecimal.ZERO;
if (confirmMoney.compareTo(lowerBound) > 0) {
if (confirmMoney.compareTo(middleBound) <= 0) {
subsidyAmount = subsidyAmount.add((confirmMoney.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
} else if (confirmMoney.compareTo(upperBound) <= 0) {
subsidyAmount = subsidyAmount.add((middleBound.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
subsidyAmount = subsidyAmount.add((confirmMoney.subtract(middleBound)).multiply(new BigDecimal("0.3")));
} else {
subsidyAmount = subsidyAmount.add((middleBound.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
subsidyAmount = subsidyAmount.add((upperBound.subtract(middleBound)).multiply(new BigDecimal("0.3")));
subsidyAmount = subsidyAmount.add((confirmMoney.subtract(upperBound)).multiply(new BigDecimal("0.35")));
}
}
subsidyAmount = subsidyAmount.min(maxSubsidyAmount);
// 向上取整至十位计
subsidyAmount = subsidyAmount.setScale(-1, BigDecimal.ROUND_CEILING);
String s = subsidyAmount.toPlainString();
System.out.println(s);
medicalMutualAidFund.setFinalSubsidyMoney(new BigDecimal(s));
}
dao.update(list,"finalSubsidyMoney");
return Result.success();
}
@At
@Ok("void")
@RequiresPermissions("medicalMutualAidFund.finalAudit")
public void exportSummary(Integer year, HttpServletResponse response) {
try {
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
exportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
exportEntities.add(new ExcelExportEntity("单位", "unitName", 20));
exportEntities.add(new ExcelExportEntity("分工会", "unionName", 20));
exportEntities.add(new ExcelExportEntity("疾病", "diseaseCategory", 20));
exportEntities.add(new ExcelExportEntity("个人现金支付金额", "selfPaymentAmount", 20));
exportEntities.add(new ExcelExportEntity("病种", "diseaseType", 20));
exportEntities.add(new ExcelExportEntity("核定个人现金支付金额", "confirmSelfPaymentAmount", 20));
exportEntities.add(new ExcelExportEntity("最终补助金额", "finalSubsidyMoney", 20));
exportEntities.add(new ExcelExportEntity("备注", "note", 20));
exportEntities.add(new ExcelExportEntity("联系方式", "mobile", 20));
List<MedicalMutualAidFund> list = dao.query(MedicalMutualAidFund.class, Cnd.where("year(applyDate)", "=", year));
ViTool.excelResponse(response, "互助金申请汇总表.xls");
ExportParams exportParams = new ExportParams();
exportParams.setTitle(year + "年在职医疗互助金申请汇总表");
try (Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list)) {
workbook.write(response.getOutputStream());
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
}
@@ -0,0 +1,80 @@
package io.v.nutz.zhgh.medicalMutualAidFund.controller;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.web.commons.slog.annotation.SLog;
import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* 互助金我的申请
*
* @author jug
* @date 2024/01/17
*/
@IocBean
@At("/platform/medicalMutualAidFund/myApply")
@Slf4j
@Ok("json:full")
public class MedicalMutualAidFundMyApplyController {
@Inject
private Dao dao;
@Inject(value = "MedicalMutualAidFund")
private ViService medicalMutualAidFundService;
@At("/h5")
@Ok("beetl:/mobile/medicalMutualAidFund/index.html")
@RequiresPermissions("medicalMutualAidFund.myApply")
public void h5_index(HttpServletRequest request) {
}
@At("")
@Ok("beetl:/platform/medicalMutualAidFund/myApply.html")
@RequiresPermissions("medicalMutualAidFund.myApply")
public void index(HttpServletRequest request) {
}
@At(value = {"/pageData","/h5/pageData"})
@RequiresPermissions("medicalMutualAidFund.myApply")
public Result pageData(PageForm pageForm, @Param(required = false,value = "year") Integer year) {
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(applyDate)", "=", year);
if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionIllAdmin")){
cnd.and("userId","=",ShiroUtil.getUserId());
}
Pagination pagination = medicalMutualAidFundService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
List<MedicalMutualAidFund> list = pagination.getList();
for (MedicalMutualAidFund medicalMutualAidFund : list) {
medicalMutualAidFund.setSchoolHospitalConfirmSelfPaymentAmount(null);
}
return Result.success(pagination);
}
@At
@RequiresPermissions("medicalMutualAidFund.myApply")
@SLog(type = "medicalMutualAidFund", tag = "互助金申请删除", msg = "互助金申请删除")
public Result delete(@Param("id") String id) {
dao.clear(MedicalMutualAidFund.class, Cnd.where("id", "=", id));
return Result.success();
}
}
@@ -0,0 +1,226 @@
package io.v.nutz.zhgh.medicalMutualAidFund.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.web.commons.slog.annotation.SLog;
import io.v.nutz.zhgh.medicalMutualAidFund.constant.MedicalMutualAidFundAuditStateConstant;
import io.v.nutz.zhgh.medicalMutualAidFund.handler.MedicalMutualAidFundToDoHandler;
import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.upload.TempFile;
import org.nutz.mvc.upload.UploadAdaptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 导入校医院核定金额
*
* @author jug
* @date 2024/01/17
*/
@IocBean
@At("/platform/medicalMutualAidFund/schoolHospitalAudit")
@Slf4j
@Ok("json:full")
public class MedicalMutualAidFundSchoolHospitalAuditController {
@Inject
private Dao dao;
@Inject(value = "MedicalMutualAidFund")
private ViService medicalMutualAidFundService;
@At("")
@Ok("beetl:/platform/medicalMutualAidFund/schoolHospitalAudit.html")
@RequiresPermissions("medicalMutualAidFund.schoolHospitalAudit")
public void index(HttpServletRequest request) {
}
@At
@RequiresPermissions("medicalMutualAidFund.schoolHospitalAudit")
public Result pageData(PageForm pageForm, Integer isAudit, @Param(required = false, value = "year") Integer year, @Param(required = false, value = "unionId") String unionId, @Param(required = false, value = "unitId") String unitId) {
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(applyDate)", "=", year);
cnd.andEX("unionId", "=", unionId);
cnd.andEX("unitId", "=", unitId);
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("userName", pageForm.getSearchKeyword());
seg.orLike("loginName", pageForm.getSearchKeyword());
cnd.and(seg);
}
switch (isAudit) {
case 0 -> cnd.and("stateId", ">=", MedicalMutualAidFundAuditStateConstant.SCHOOL_HOSPITAL_IMPORT.getCode());
case 1 -> cnd.and("stateId", ">", MedicalMutualAidFundAuditStateConstant.SCHOOL_HOSPITAL_IMPORT.getCode());
case -1 -> cnd.and("stateId", "=", MedicalMutualAidFundAuditStateConstant.SCHOOL_HOSPITAL_IMPORT.getCode());
}
Pagination pagination = medicalMutualAidFundService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
return Result.success(pagination);
}
@At
@Ok("void")
@RequiresPermissions("medicalMutualAidFund.schoolHospitalAudit")
public void exportToHospital(Integer year, HttpServletResponse response) {
Cnd cnd = Cnd.NEW();
cnd.and("YEAR(applyDate)", "=", year);
List<MedicalMutualAidFund> list = medicalMutualAidFundService.query(cnd);
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("序号", "index"));
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
exportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
exportEntities.add(new ExcelExportEntity("疾病", "diseaseCategory", 20));
exportEntities.add(new ExcelExportEntity("个人现金支付金额", "selfPaymentAmount", 20));
exportEntities.add(new ExcelExportEntity("病种", "diseaseType", 20));
exportEntities.add(new ExcelExportEntity("校医院核定个人现金支付金额", "schoolHospitalConfirmSelfPaymentAmount", 20));
exportEntities.add(new ExcelExportEntity("备注", "note", 20));
exportEntities.add(new ExcelExportEntity("联系方式", "mobile", 20));
for (int i = 0; i < list.size(); i++) {
list.get(i).setIndex((i + 1L));
}
try {
ViTool.excelResponse(response, "互助金申请汇总表.xls");
ExportParams exportParams = new ExportParams();
exportParams.setTitle(year + "年在职医疗互助金申请汇总表");
try (Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list)) {
workbook.write(response.getOutputStream());
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
@At
@RequiresPermissions("medicalMutualAidFund.schoolHospitalAudit")
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
public Result importHospital(@Param("file") TempFile tempFile) {
int thisYear = DateUtil.thisYear();
List<MedicalMutualAidFund> list = medicalMutualAidFundService.query(Cnd.where("YEAR(applyDate)", "=", thisYear));
List<String> loginNames = list.stream().map(v -> v.getLoginName()).collect(Collectors.toList());
ImportParams importParams = new ImportParams();
importParams.setTitleRows(1);
List<MedicalMutualAidFund> medicalMutualAidFunds = ExcelImportUtil.importExcel(tempFile.getFile(), MedicalMutualAidFund.class, importParams);
int successCount = 0;
int errorCount = 0;
for (MedicalMutualAidFund medicalMutualAidFund : medicalMutualAidFunds) {
String loginName = medicalMutualAidFund.getLoginName();
if (!loginNames.contains(loginName)) {
medicalMutualAidFund.setErrMsg("工号不存在");
errorCount++;
continue;
}
BigDecimal schoolHospitalConfirmSelfPaymentAmount = medicalMutualAidFund.getSchoolHospitalConfirmSelfPaymentAmount();
if (schoolHospitalConfirmSelfPaymentAmount == null) {
medicalMutualAidFund.setErrMsg("请填写校医院核定个人现金支付金额");
errorCount++;
continue;
}
String diseaseType = medicalMutualAidFund.getDiseaseType();
if (StrUtil.isBlank(diseaseType)) {
medicalMutualAidFund.setErrMsg("请填写病种");
errorCount++;
continue;
}
Integer stateId = medicalMutualAidFund.getStateId();
if (stateId != MedicalMutualAidFundAuditStateConstant.SCHOOL_HOSPITAL_IMPORT.getCode()) {
medicalMutualAidFund.setErrMsg("不是待校医院审核的记录");
errorCount++;
continue;
}
dao.update(MedicalMutualAidFund.class, Chain.make("schoolHospitalConfirmSelfPaymentAmount", schoolHospitalConfirmSelfPaymentAmount).add("diseaseType", diseaseType).add("stateId", MedicalMutualAidFundAuditStateConstant.FUND_AID_GROUP_IMPORT.getCode()), Cnd.where("loginName", "=", loginName).and("YEAR(applyDate)", "=", thisYear));
successCount++;
String id = list.stream().filter(v -> v.getLoginName().equals(loginName)).findFirst().map(MedicalMutualAidFund::getId).orElse(null);
MedicalMutualAidFundToDoHandler.COMPLETE_SCHOOL_HOSPITAL_TASK.exec(new MedicalMutualAidFund().setId(id));
//发起互助金小组核对任务
MedicalMutualAidFundToDoHandler.CREATE_SCHOOL_TASK.exec(new MedicalMutualAidFund().setId(id));
}
NutMap nutMap = NutMap.NEW();
nutMap.put("totalCount", medicalMutualAidFunds.size());
nutMap.put("successCount", successCount);
nutMap.put("errorCount", errorCount);
nutMap.put("errorList", medicalMutualAidFunds.stream().map(v -> new NutMap() {{
put("姓名", v.getUserName());
put("工号", v.getLoginName());
put("疾病", v.getDiseaseCategory());
put("申请金额", v.getSelfPaymentAmount());
put("校医院核定个人现金支付金额", v.getSchoolHospitalConfirmSelfPaymentAmount());
put("病种", v.getDiseaseType());
put("备注", v.getNote());
put("联系方式", v.getMobile());
put("错误信息", v.getErrMsg());
}}).collect(Collectors.toList()));
return Result.success(nutMap);
}
@At
@RequiresPermissions("medicalMutualAidFund.schoolHospitalAudit")
@SLog(type = "medicalMutualAidFund", tag = "校医院核对金额", msg = "校医院核对金额")
@Aop(TransAop.READ_COMMITTED)
public Result pass(Audit audit, String id, Double schoolHospitalConfirmSelfPaymentAmount, String diseaseType) {
dao.insert(audit);
dao.update(MedicalMutualAidFund.class, Chain.make("stateId", MedicalMutualAidFundAuditStateConstant.FUND_AID_GROUP_IMPORT.getCode()).add("schoolHospitalConfirmSelfPaymentAmount", BigDecimal.valueOf(schoolHospitalConfirmSelfPaymentAmount).setScale(2)).add("diseaseType", diseaseType).add("schoolHospitalConfirmSelfPaymentAmountAuditId", audit.getId()), Cnd.where("id", "=", id));
//完成待办
MedicalMutualAidFundToDoHandler.COMPLETE_UNION_TASK.exec(new MedicalMutualAidFund().setId(id));
//发起互助金小组
MedicalMutualAidFundToDoHandler.CREATE_SCHOOL_TASK.exec(new MedicalMutualAidFund().setId(id));
return Result.success();
}
@At
@RequiresPermissions("medicalMutualAidFund.schoolHospitalAudit")
@SLog(type = "medicalMutualAidFund", tag = "校医院编辑核对金额", msg = "校医院编辑核对金额")
@Aop(TransAop.READ_COMMITTED)
public Result modify(String id, Double schoolHospitalConfirmSelfPaymentAmount, String diseaseType) {
dao.update(MedicalMutualAidFund.class, Chain.make("schoolHospitalConfirmSelfPaymentAmount", BigDecimal.valueOf(schoolHospitalConfirmSelfPaymentAmount).setScale(2)).add("diseaseType", diseaseType), Cnd.where("id", "=", id));
return Result.success();
}
}
@@ -0,0 +1,262 @@
package io.v.nutz.zhgh.medicalMutualAidFund.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.web.commons.slog.annotation.SLog;
import io.v.nutz.zhgh.medicalMutualAidFund.constant.MedicalMutualAidFundAuditStateConstant;
import io.v.nutz.zhgh.medicalMutualAidFund.handler.MedicalMutualAidFundToDoHandler;
import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.upload.TempFile;
import org.nutz.mvc.upload.UploadAdaptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 校工会审核
*
* @author jug
* @date 2024/01/17
*/
@IocBean
@At("/platform/medicalMutualAidFund/schoolUnionAudit")
@Slf4j
@Ok("json:full")
public class MedicalMutualAidFundSchoolUnionAuditController {
private static final BigDecimal lowerBound = new BigDecimal("5000");
private static final BigDecimal middleBound = new BigDecimal("30000");
private static final BigDecimal upperBound = new BigDecimal("70000");
private static final BigDecimal maxSubsidyAmount = new BigDecimal("30000");
@Inject
private Dao dao;
@Inject(value = "MedicalMutualAidFund")
private ViService medicalMutualAidFundService;
@At("")
@Ok("beetl:/platform/medicalMutualAidFund/schoolUnionAudit.html")
@RequiresPermissions("medicalMutualAidFund.schoolUnionAudit")
public void index(HttpServletRequest request) {
}
@At
@RequiresPermissions("medicalMutualAidFund.schoolUnionAudit")
public Result pageData(PageForm pageForm, @Param(required = false, value = "year") Integer year, Integer isAudit) {
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(applyDate)", "=", year);
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("userName", pageForm.getSearchKeyword());
seg.orLike("loginName", pageForm.getSearchKeyword());
cnd.and(seg);
}
switch (isAudit) {
case 0 -> cnd.and("stateId", ">=", MedicalMutualAidFundAuditStateConstant.FUND_AID_GROUP_IMPORT.getCode());
case 1 -> cnd.and("stateId", ">", MedicalMutualAidFundAuditStateConstant.FUND_AID_GROUP_IMPORT.getCode());
case -1 -> cnd.and("stateId", "=", MedicalMutualAidFundAuditStateConstant.FUND_AID_GROUP_IMPORT.getCode());
}
Pagination pagination = medicalMutualAidFundService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
return Result.success(pagination);
}
@At
@Ok("void")
@RequiresPermissions("medicalMutualAidFund.schoolUnionAudit")
public void exportSummary(Integer year, HttpServletResponse response) {
Cnd cnd = Cnd.NEW();
cnd.and("YEAR(applyDate)", "=", year);
List<MedicalMutualAidFund> list = medicalMutualAidFundService.query(cnd);
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("序号", "index"));
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
exportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
exportEntities.add(new ExcelExportEntity("疾病", "diseaseCategory", 20));
exportEntities.add(new ExcelExportEntity("个人现金支付金额", "selfPaymentAmount", 20));
exportEntities.add(new ExcelExportEntity("病种", "diseaseType", 20));
exportEntities.add(new ExcelExportEntity("校医院核定个人现金支付金额", "schoolHospitalConfirmSelfPaymentAmount", 20));
exportEntities.add(new ExcelExportEntity("互助金小组核定个人现金支付金额", "schoolConfirmSelfPaymentAmount", 20));
exportEntities.add(new ExcelExportEntity("备注", "note", 20));
exportEntities.add(new ExcelExportEntity("联系方式", "mobile", 20));
for (int i = 0; i < list.size(); i++) {
list.get(i).setIndex((i + 1L));
}
try {
ViTool.excelResponse(response, "互助金申请汇总表.xls");
ExportParams exportParams = new ExportParams();
exportParams.setTitle(year + "年在职医疗互助金申请汇总表");
try (Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list)) {
workbook.write(response.getOutputStream());
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
@At
@RequiresPermissions("medicalMutualAidFund.schoolUnionAudit")
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
public Result importAidFund(@Param("file") TempFile tempFile) {
int thisYear = DateUtil.thisYear();
List<MedicalMutualAidFund> list = medicalMutualAidFundService.query(Cnd.where("YEAR(applyDate)", "=", thisYear));
List<String> loginNames = list.stream().map(v -> v.getLoginName()).collect(Collectors.toList());
ImportParams importParams = new ImportParams();
importParams.setTitleRows(1);
List<MedicalMutualAidFund> medicalMutualAidFunds = ExcelImportUtil.importExcel(tempFile.getFile(), MedicalMutualAidFund.class, importParams);
int successCount = 0;
int errorCount = 0;
for (MedicalMutualAidFund medicalMutualAidFund : medicalMutualAidFunds) {
String loginName = medicalMutualAidFund.getLoginName();
if (!loginNames.contains(loginName)) {
medicalMutualAidFund.setErrMsg("工号不存在");
errorCount++;
continue;
}
BigDecimal schoolConfirmSelfPaymentAmount = medicalMutualAidFund.getSchoolConfirmSelfPaymentAmount();
if (schoolConfirmSelfPaymentAmount == null) {
medicalMutualAidFund.setErrMsg("请填写互助金小组核定个人现金支付金额");
errorCount++;
continue;
}
String diseaseType = medicalMutualAidFund.getDiseaseType();
if (StrUtil.isBlank(diseaseType)) {
medicalMutualAidFund.setErrMsg("请填写病种");
errorCount++;
continue;
}
Integer stateId = medicalMutualAidFund.getStateId();
if (stateId != MedicalMutualAidFundAuditStateConstant.FUND_AID_GROUP_IMPORT.getCode()) {
medicalMutualAidFund.setErrMsg("不是待互助金小组审核的记录");
errorCount++;
continue;
}
// BigDecimal subsidyAmount = BigDecimal.ZERO;
//
// if (schoolConfirmSelfPaymentAmount.compareTo(lowerBound) > 0) {
// if (schoolConfirmSelfPaymentAmount.compareTo(middleBound) <= 0) {
// subsidyAmount = subsidyAmount.add((schoolConfirmSelfPaymentAmount.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
// } else if (schoolConfirmSelfPaymentAmount.compareTo(upperBound) <= 0) {
// subsidyAmount = subsidyAmount.add((middleBound.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
// subsidyAmount = subsidyAmount.add((schoolConfirmSelfPaymentAmount.subtract(middleBound)).multiply(new BigDecimal("0.3")));
// } else {
// subsidyAmount = subsidyAmount.add((middleBound.subtract(lowerBound)).multiply(new BigDecimal("0.2")));
// subsidyAmount = subsidyAmount.add((upperBound.subtract(middleBound)).multiply(new BigDecimal("0.3")));
// subsidyAmount = subsidyAmount.add((schoolConfirmSelfPaymentAmount.subtract(upperBound)).multiply(new BigDecimal("0.35")));
// }
// }
//
// subsidyAmount = subsidyAmount.min(maxSubsidyAmount);
// // 向上取整至十位计
// subsidyAmount = subsidyAmount.setScale(-1, BigDecimal.ROUND_CEILING);
dao.update(MedicalMutualAidFund.class,
Chain.make("schoolConfirmSelfPaymentAmount", schoolConfirmSelfPaymentAmount)
// .add("finalSubsidyMoney", subsidyAmount)
// .add("diseaseType", diseaseType)
.add("stateId", MedicalMutualAidFundAuditStateConstant.PASS.getCode()),
Cnd.where("loginName", "=", loginName)
.and("YEAR(applyDate)", "=", thisYear));
successCount++;
//直接完成流程
String id = list.stream().filter(v -> v.getLoginName().equals(loginName)).findFirst().map(MedicalMutualAidFund::getId).orElse(null);
MedicalMutualAidFundToDoHandler.COMPLETE_PROCESS.exec(new MedicalMutualAidFund().setId(id));
}
NutMap nutMap = NutMap.NEW();
nutMap.put("totalCount", medicalMutualAidFunds.size());
nutMap.put("successCount", successCount);
nutMap.put("errorCount", errorCount);
nutMap.put("errorList", medicalMutualAidFunds.stream().map(v -> new NutMap() {{
put("姓名", v.getUserName());
put("工号", v.getLoginName());
put("疾病", v.getDiseaseCategory());
put("申请金额", v.getSelfPaymentAmount());
put("互助金小组核定个人现金支付金额", v.getSchoolConfirmSelfPaymentAmount());
put("病种", v.getDiseaseType());
put("备注", v.getNote());
put("联系方式", v.getMobile());
put("错误信息", v.getErrMsg());
}}).collect(Collectors.toList()));
return Result.success(nutMap);
}
@At
@RequiresPermissions("medicalMutualAidFund.schoolUnionAudit")
@SLog(type = "medicalMutualAidFund", tag = "互助金小组核对金额", msg = "互助金小组核对金额")
@Aop(TransAop.READ_COMMITTED)
public Result pass(Audit audit, String id, Double schoolConfirmSelfPaymentAmount) {
dao.insert(audit);
dao.update(MedicalMutualAidFund.class,
Chain.make("stateId", MedicalMutualAidFundAuditStateConstant.PASS.getCode())
.add("schoolConfirmSelfPaymentAmount", BigDecimal.valueOf(schoolConfirmSelfPaymentAmount).setScale(2))
.add("schoolConfirmSelfPaymentAmountAuditId", audit.getId()),
Cnd.where("id", "=", id));
//完成待办
MedicalMutualAidFundToDoHandler.COMPLETE_SCHOOL_TASK.exec(new MedicalMutualAidFund().setId(id));
//完成流程
MedicalMutualAidFundToDoHandler.COMPLETE_PROCESS.exec(new MedicalMutualAidFund().setId(id));
return Result.success();
}
@At
@RequiresPermissions("medicalMutualAidFund.schoolUnionAudit")
@SLog(type = "medicalMutualAidFund", tag = "互助金小组编辑核对金额", msg = "互助金小组编辑核对金额")
@Aop(TransAop.READ_COMMITTED)
public Result modify(String id, Double schoolConfirmSelfPaymentAmount) {
dao.update(MedicalMutualAidFund.class,
Chain.make("schoolConfirmSelfPaymentAmount", BigDecimal.valueOf(schoolConfirmSelfPaymentAmount).setScale(2)),
Cnd.where("id", "=", id));
return Result.success();
}
}
@@ -0,0 +1,226 @@
package io.v.nutz.zhgh.medicalMutualAidFund.handler;
import io.v.nutz.base.utils.Roles;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.utils.ViResource;
import io.v.nutz.sys.services.SysLocalProcessService;
import io.v.nutz.sys.services.impl.SysLocalProcessServiceImpl;
import io.v.nutz.web.commons.base.Globals;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.medicalMutualAidFund.constant.MedicalMutualAidFundAuditStateConstant;
import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund;
import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf;
import lombok.Getter;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import java.util.List;
@Getter
public enum MedicalMutualAidFundToDoHandler {
/**
* 流程开始
*/
START_PROCESS() {
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
localProcessService.startProcess(
"【医疗互助】" + mutualAidFund.getUserName(),
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
"",
mutualAidFund.getUserId(),
Globals.AppDomain + "/platform/medicalMutualAidFund/myApply",
Globals.AppDomain + "/platform/medicalMutualAidFund/myApply"
);
}
},
/**
* 重新修改申请
*/
CREATE_APPLY_RE_MODIFY_TASK() {
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
Sql sql = Sqls.fetchString(Sqls.create("select loginname from medical_mutual_aid_fund where id = @id").setParam("id", mutualAidFund.getId()).toString());
dao.execute(sql);
String loginName = sql.getString();
String desc = MedicalMutualAidFundAuditStateConstant.BRANCH_UNION_REJECT.getDesc();
localProcessService.createTask(
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
"apply_re_modify",
desc,
ShiroUtil.getUserId(),
List.of(loginName),
"/platform/medicalMutualAidFund/myApply",
"/platform/medicalMutualAidFund/myApply",
"/platform/medicalMutualAidFund/myApply",
"/platform/medicalMutualAidFund/myApply"
);
localProcessService.updateProcessNodeName("medical_mutual_aid_fund@" + mutualAidFund.getId(), desc);
}
},
/**
* 修改完成
*/
COMPLETE_APPLY_RE_MODIFY_TASK() {
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
localProcessService.completeTask(
"apply_re_modify",
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
ShiroUtil.getUserId(),
""
);
}
},
/**
* 创建分工会任务
*/
CREATE_UNION_TASK() {
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
Sql sqlStr = Sqls.create("""
SELECT
u.loginname
FROM
sys_user_role sur
LEFT JOIN `user` u ON u.id = sur.userid
WHERE
sur.roleId = @roleId and u.unionid = @unionId
GROUP BY
sur.userId
""")
.setParam("roleId", Roles.UNION_MANGER)
.setParam("unionId", mutualAidFund.getUnionId());
Sql sql = Sqls.queryString(sqlStr.toString());
dao.execute(sql);
List<String> loginNames = sql.getList(String.class);
localProcessService.createTask(
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
"branchUnionAuditId",
"分工会审核",
ShiroUtil.getUserId(),
loginNames,
"/platform/medicalMutualAidFund/branchUnionAudit",
"/platform/medicalMutualAidFund/branchUnionAudit",
"/platform/medicalMutualAidFund/branchUnionAudit",
"/platform/medicalMutualAidFund/branchUnionAudit"
);
localProcessService.updateProcessNodeName("medical_mutual_aid_fund@" + mutualAidFund.getId(), "分工会审核");
}
},
/**
* 分工会完成
*/
COMPLETE_UNION_TASK() {
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
localProcessService.completeTask(
"branchUnionAuditId",
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
ShiroUtil.getUserId(),
""
);
}
},
/**
* 校医院核对
*/
CREATE_SCHOOL_HOSPITAL_TASK() {
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
localProcessService.createTask(
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
"branchUnionAuditId",
"校医院核对",
ShiroUtil.getUserId(),
List.of(),
"/platform/medicalMutualAidFund/branchUnionAudit",
"/platform/medicalMutualAidFund/branchUnionAudit",
"/platform/medicalMutualAidFund/branchUnionAudit",
"/platform/medicalMutualAidFund/branchUnionAudit"
);
localProcessService.updateProcessNodeName("medical_mutual_aid_fund@" + mutualAidFund.getId(), "校医院核对");
}
},
/**
* 校医院核对完成
*/
COMPLETE_SCHOOL_HOSPITAL_TASK() {
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
localProcessService.completeTask(
"branchUnionAuditId",
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
ShiroUtil.getUserId(),
""
);
}
},
/**
* 互助金小组核对
*/
CREATE_SCHOOL_TASK(){
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
localProcessService.createTask(
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
"schoolUnionAuditId",
"医疗互助金小组核对",
ShiroUtil.getUserId(),
List.of(),
"/platform/medicalMutualAidFund/schoolUnionAudit",
"/platform/medicalMutualAidFund/schoolUnionAudit",
"/platform/medicalMutualAidFund/schoolUnionAudit",
"/platform/medicalMutualAidFund/schoolUnionAudit"
);
localProcessService.updateProcessNodeName("medical_mutual_aid_fund@" + mutualAidFund.getId(), "医疗互助金小组核对");
}
},
/**
* 互助金小组核对完成
*/
COMPLETE_SCHOOL_TASK(){
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
localProcessService.completeTask(
"schoolUnionAuditId",
"medical_mutual_aid_fund@" + mutualAidFund.getId(),
ShiroUtil.getUserId(),
""
);
}
},
/**
* 流程完成
*/
COMPLETE_PROCESS() {
@Override
public void exec(MedicalMutualAidFund mutualAidFund) {
localProcessService.completeProcess("medical_mutual_aid_fund@" + mutualAidFund.getId());
}
};
public abstract void exec(MedicalMutualAidFund mutualAidFund);
public Dao dao = ViResource.dao;
public SysLocalProcessService localProcessService = ViResource.ioc.get(SysLocalProcessServiceImpl.class);
}
@@ -0,0 +1,215 @@
package io.v.nutz.zhgh.medicalMutualAidFund.model;
import cn.afterturn.easypoi.excel.annotation.Excel;
import io.v.nutz.base.model.BaseModel;
import io.v.nutz.base.model.Audit;
import io.v.nutz.sys.models.Sys_file;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Table
@Data
@Accessors(chain = true)
public class MedicalMutualAidFund extends BaseModel {
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@PrevInsert(uu32 = true)
private String id;
@Column
@ColDefine(type = ColType.VARCHAR, width = 32)
@Comment("申请人ID")
private String userId;
@Column
@ColDefine(type = ColType.VARCHAR, width = 20)
@Comment("申请人姓名")
@Excel(name = "姓名", width = 20)
private String userName;
@Column
@ColDefine(type = ColType.VARCHAR, width = 20)
@Comment("申请人工号")
@Excel(name = "工号", width = 20)
private String loginName;
@Column
@ColDefine(type = ColType.VARCHAR, width = 1)
@Comment("申请人性别")
private String sex;
@Column
@ColDefine(type = ColType.DATE)
@Comment("申请人生日")
private Date birthday;
@Column
@ColDefine(type = ColType.VARCHAR)
@Comment("申请人家庭住址")
private String homeAddress;
@Column
@ColDefine(type = ColType.VARCHAR)
@Comment("申请人手机号")
@Excel(name = "联系方式", width = 20)
private String mobile;
@Column
@ColDefine(type = ColType.VARCHAR)
@Comment("单位Id")
private String unitId;
@Column
@ColDefine(type = ColType.VARCHAR)
@Comment("单位")
private String unitName;
@Column
@ColDefine(type = ColType.VARCHAR)
@Comment("分工会Id")
private String unionId;
@Column
@ColDefine(type = ColType.VARCHAR)
@Comment("分工会")
private String unionName;
@Column
@ColDefine(type = ColType.VARCHAR)
@Comment("疾病类别")
@Excel(name = "疾病", width = 20)
private String diseaseCategory;
@Column
@Comment("医疗总金额")
@ColDefine(customType = "decimal")
private BigDecimal totalMedicalAmount;
@Column
@ColDefine(customType = "decimal", width = 10, precision = 2)
@Comment("个人现金支付金额")
@Excel(name = "个人现金支付金额", width = 20)
private BigDecimal selfPaymentAmount;
@Column
@ColDefine(type = ColType.INT)
@Comment("几张单据")
private Integer documentNum;
@Column
@ColDefine(type = ColType.INT)
@Comment("几张处方")
private Integer prescriptionNum;
@Column
@ColDefine(type = ColType.INT)
@Comment("几本病历")
private Integer medicalRecordNum;
@Column
@ColDefine(type = ColType.MYSQL_JSON)
@Comment("家庭收入")
private List<FamilyIncome> familyIncome;
@Column
@ColDefine(type = ColType.VARCHAR, width = 255)
@Comment("申请补助原因")
private String applyReason;
@Column
@ColDefine(type = ColType.MYSQL_JSON)
@Comment("申请材料")
private List<Sys_file> files;
@Column
@ColDefine(type = ColType.DATETIME)
@Comment("申请时间")
private Date applyDate;
@Column
@ColDefine(type = ColType.VARCHAR, width = 32)
@Comment("分工会、离退休审核Id")
private String branchUnionAuditId;
@Column
@Comment("审核状态")
private Integer stateId;
@Excel(name = "校医院核定个人现金支付金额", width = 20)
@Column
@Comment("校医院核定个人现金支付金额")
@ColDefine(customType = "decimal", precision = 2)
private BigDecimal schoolHospitalConfirmSelfPaymentAmount;
@Column
@ColDefine(type = ColType.VARCHAR, width = 32)
@Comment("校医院审核Id")
private String schoolHospitalConfirmSelfPaymentAmountAuditId;
@Excel(name = "互助金小组核定个人现金支付金额", width = 20)
@Column
@Comment("互助金小组核定个人现金支付金额")
@ColDefine(customType = "decimal", width = 10, precision = 2)
private BigDecimal schoolConfirmSelfPaymentAmount;
@Column
@ColDefine(type = ColType.VARCHAR, width = 32)
@Comment("互助金小组审核Id")
private String schoolConfirmSelfPaymentAmountAuditId;
@Excel(name = "最终补助金额", width = 20)
@Column
@Comment("最终补助金额")
@ColDefine(customType = "decimal")
private BigDecimal finalSubsidyMoney;
@Excel(name = "备注", width = 20)
@Column
@Comment("备注")
@ColDefine(type = ColType.VARCHAR, width = 255)
private String note;
@Excel(name = "预测补助金额", width = 20)
@Column
@Comment("预测补助金额")
@ColDefine(customType = "decimal")
private String predictedSubsidyMoney;
@Excel(name = "病种", width = 20)
@Column
@Comment("病种")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String diseaseType;
@Data
public static class FamilyIncome {
private String userName;
private String age;
private String relation;
private String workUnit;
private String annualIncome;
}
@One(field = "branchUnionAuditId", key = "id")
private Audit branchUnionAudit;
@One(field = "schoolHospitalConfirmSelfPaymentAmountAuditId", key = "id")
private Audit schoolHospitalConfirmSelfPaymentAmountAudit;
@One(field = "schoolConfirmSelfPaymentAmountAuditId", key = "id")
private Audit schoolConfirmSelfPaymentAmountAudit;
private Long index;
private String errMsg;
}