diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveCollectController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveCollectController.java index 1dbdff0..e4426fe 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveCollectController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveCollectController.java @@ -12,8 +12,6 @@ import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.base.utils.CommonDownloadUtil; import com.budwk.app.flow.engine.FlowEngine; -import com.budwk.app.sys.models.Sys_dict; -import com.budwk.app.zhgh.dayofficework.unionReimburse.vo.UnionReimburseCollectExcelVO; import com.budwk.app.zhgh.staffbenefit.maternityLeave.service.MaternityLeaveService; import com.budwk.app.zhgh.staffbenefit.maternityLeave.vo.MaternityLeaveCollectExcelVO; import io.swagger.annotations.Api; diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveFamilyPlanningOfficeAuditController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveFamilyPlanningOfficeAuditController.java new file mode 100644 index 0000000..4885be4 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveFamilyPlanningOfficeAuditController.java @@ -0,0 +1,174 @@ +package com.budwk.app.zhgh.staffbenefit.maternityLeave.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.sys.models.Sys_home_activity; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.activity.culture.models.ActivityTissue; +import com.budwk.app.zhgh.staffbenefit.maternityLeave.models.MaternityLeave; +import com.budwk.app.zhgh.staffbenefit.maternityLeave.service.MaternityLeaveService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +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.json.Json; +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 java.util.Date; +import java.util.List; + +/** + * @author zhf + * @date 2025/11/8 10:21 + * @description 计生办审批 + */ +@IocBean +@At("/platform/maternityLeave/familyPlanningOffice") +@Api("计生办审批") +@Ok("json:full") +@Slf4j +public class MaternityLeaveFamilyPlanningOfficeAuditController { + + + @Inject + private MaternityLeaveService maternityLeaveService; + + @Inject + private FlowCommonService flowCommonService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/maternityLeave/familyPlanningOffice/index.html") + @SaCheckPermission("maternityLeave.familyPlanningOffice") + public void index() { + } + + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/maternityLeave/familyPlanningOffice/index.html") + @SaCheckPermission("h5.maternityLeave.familyPlanningOffice") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"maternityLeave.familyPlanningOffice", "h5.maternityLeave.familyPlanningOffice"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, + boolean approval, + Integer year, + String unionId, + String unitId, + String searchKeyword, + String sex) { + Sql sql = Sqls.create(""" + SELECT + info.*, + ins.id AS instanceId, + ins.businessNo, + ins.state instanceState, + ins.variable instanceVariable, + ins.processDefineId instanceProcessDefineId, + t.id taskId, + t.taskName AS taskKey, + t.displayName taskName, + t.taskType, + t.performType taskPerformType, + t.taskState, + t.finishTime, + t.taskParentId, + t.variable taskVariable, + IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName, + IF(rt.id IS NOT NULL, 1, 0) AS canRevoke + FROM + wf_process_task t + LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId + LEFT JOIN maternity_leave info ON info.id = ins.businessNo + LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id + LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 + LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("t.taskName", "=", "d3b59e32-2f30-499b-b015-c485b330ddcb"); + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + + if (approval) { + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); + } else { + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + } + // 年度查询条件 + cnd.andEX("year(info.applyTime)", "=", year); + + // 工会、单位名称查询条件 + cnd.andEX("info.unionId", "=", unionId); + cnd.andEX("info.unitId", "=", unitId); + + // 性别查询条件 + cnd.andEX("info.sex", "=", sex); + + // 姓名和工号查询条件 + if (StrUtil.isNotBlank(searchKeyword)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.orLike("info.userName", "%" + searchKeyword + "%"); + seg.orLike("info.loginName", "%" + searchKeyword + "%"); + cnd.and(seg); + } + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("info.applyTime"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + cnd.groupBy("t.id"); + cnd.desc("t.createdAt"); + sql.setCondition(cnd); + Pagination pagination = maternityLeaveService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + + @At + @SLog(tag = "生育休假", msg = "计生办审核了一条记录") + @ApiOperation("计生办测算天数") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"maternityLeave.familyPlanningOffice", "h5.maternityLeave.familyPlanningOffice"}, mode = SaMode.OR) + public Result doReview(@Param("data") String param, String id) { + Dict args = Json.fromJson(Dict.class, param); + MaternityLeave maternityLeave = maternityLeaveService.dao().fetch(MaternityLeave.class, id); + maternityLeave.setStartTime(DateUtil.parse(args.getStr("startTime"))); + maternityLeave.setEndTime(DateUtil.parse(args.getStr("endTime"))); + maternityLeave.setWithLeave(args.getStr("withLeave")); + maternityLeave.setWinterLeave(args.getStr("winterLeave")); + maternityLeave.setSummerLeave(args.getStr("summerLeave")); + maternityLeave.setParentalLeave(args.getStr("parentalLeave")); + maternityLeave.setMaternityLeave(args.getStr("maternityLeave")); + maternityLeave.setExtendLeave(args.getStr("extendLeave")); + maternityLeave.setBirthsLeave(args.getStr("birthsLeave")); + maternityLeave.setDifficultLeave(args.getStr("difficultLeave")); + maternityLeave.setLeaveDays(args.getStr("leaveDays")); + + maternityLeaveService.update(maternityLeave); + + flowCommonService.executeTask(args); + + return Result.success(); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveMineController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveMineController.java index c62d770..012de9c 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveMineController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/controller/MaternityLeaveMineController.java @@ -5,7 +5,6 @@ import cn.dev33.satoken.annotation.SaMode; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; @@ -17,11 +16,8 @@ import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.vo.ProcessTaskVO; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.web.commons.base.Globals; -import com.budwk.app.zhgh.activity.declarereimbursement.vo.ActivityBudgetVO; import com.budwk.app.zhgh.staffbenefit.maternityLeave.service.MaternityLeaveService; import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -45,8 +41,6 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; -import static cn.dev33.satoken.SaManager.config; - /** * @author : hongqiwei * @description : diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/models/MaternityLeave.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/models/MaternityLeave.java index 4befb2b..6f06e52 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/models/MaternityLeave.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/maternityLeave/models/MaternityLeave.java @@ -1,6 +1,5 @@ package com.budwk.app.zhgh.staffbenefit.maternityLeave.models; -import com.aspose.slides.internal.og.all; import com.budwk.app.base.model.BaseModel; import lombok.Data; import lombok.EqualsAndHashCode; @@ -174,6 +173,21 @@ public class MaternityLeave extends BaseModel implements Serializable { @Comment("填写时间") private Date applyTime; + @Column + @ColDefine(type = ColType.BOOLEAN) + @Comment("是否难产") + private Boolean isDystocia; + + @Column + @ColDefine(type = ColType.BOOLEAN) + @Comment("是否三胎") + private Boolean isThreeChildren; + + @Column + @ColDefine(type = ColType.BOOLEAN) + @Comment("是否多胞胎") + private Boolean isMultipleBirths; + } diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/apply/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/apply/index.html index c9420d0..061c944 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/apply/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/apply/index.html @@ -12,9 +12,10 @@ layout("/layouts/platform.html"){ {{formData.userName}} {{formData.sex}} {{formData.nation}} - {{formatDate(formData.birthday)}} - {{formData.unitName}} - {{formData.mobile}} + {{$moment(formData.birthday).format('YYYY-MM-DD')}} + + {{formData.unitName}} + {{formData.mobile}} @@ -23,7 +24,7 @@ layout("/layouts/platform.html"){ - + @@ -31,12 +32,13 @@ layout("/layouts/platform.html"){ - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{formData.leaveDays}} - - - - - - - - - - - - - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + 保存 @@ -168,137 +195,27 @@ layout("/layouts/platform.html"){ taskId: GetQueryString("taskId"), formData: {}, formRules: { - loverName: [{ required: true, message: '请输入爱人姓名', trigger: 'blur' }], - loverSex: [{ required: true, message: '请选择爱人性别', trigger: 'change' }], - loverNation: [{ required: true, message: '请选择爱人民族', trigger: 'change' }], - loverBirthday: [{ required: true, message: '请选择爱人出生年月', trigger: 'change' }], - loverUnitName: [{ required: true, message: '请输入爱人工作单位', trigger: 'blur' }], - startTime: [{ required: true, message: '请选择休假开始时间', trigger: 'change' }], - endTime: [{ required: true, message: '请选择休假结束时间', trigger: 'change' }, - {validator: (rule, value, callback) => { - if (this.formData.startTime && value) { - const startDate = new Date(this.formData.startTime); - const endDate = new Date(value); - if (endDate < startDate) { - callback(new Error('休假结束时间不能早于开始时间')); - } else { - callback(); - } - } else { - callback(); - } - }, - trigger: 'change' - } - ], - childrenBirthday: [{ required: true, message: '请选择子女出生日期', trigger: 'change' }] - } - , + loverName: [{required: true, message: '请输入爱人姓名', trigger: 'blur'}], + loverSex: [{required: true, message: '请选择爱人性别', trigger: 'change'}], + loverNation: [{required: true, message: '请选择爱人民族', trigger: 'change'}], + loverBirthday: [{required: true, message: '请选择爱人出生年月', trigger: 'change'}], + loverUnitName: [{required: true, message: '请输入爱人工作单位', trigger: 'blur'}], + + childrenBirthday: [{required: true, message: '请选择子女出生日期', trigger: 'change'}], + isDystocia: [{required: true, message: '请选择是否难产', trigger: 'change'}], + isThreeChildren: [{required: true, message: '请选择是否三胎', trigger: 'change'}], + isMultipleBirths: [{required: true, message: '请选择是否多胞胎', trigger: 'change'}], + }, } }, computed: { - // 计算合计天数 - totalLeaveDays() { - const fields = [ - 'withLeave', 'parentalLeave', 'maternityLeave', - 'extendLeave', 'birthsLeave', 'difficultLeave', - 'winterLeave', 'summerLeave' - ]; - let total = 0; - fields.forEach(field => { - const value = this.formData[field]; - if (value && !isNaN(value)) { - total += parseFloat(value); - } - }); - - return total; - }, - // 是否为男性 - isMale() { - return this.formData.sex === '男性' || this.formData.sex === '男'; - }, - // 是否为女性 - isFemale() { - return this.formData.sex === '女性' || this.formData.sex === '女'; - }, }, watch: { - totalLeaveDays(newVal) { - this.$set(this.formData, 'leaveDays', newVal); - // 当合计天数或开始时间变化时,自动计算结束时间 - this.calculateEndTime(); - }, - 'formData.startTime'() { - // 当开始时间变化时,自动计算结束时间 - this.calculateEndTime(); - }, - // 监听性别变化,设置默认值 - isMale(newVal) { - if (newVal) { - // 男性默认设置 - this.$set(this.formData, 'loverSex', '女'); - this.$set(this.formData, 'withLeave', 15); - this.$set(this.formData, 'parentalLeave', 10); - } - }, - isFemale(newVal) { - if (newVal) { - // 女性默认设置 - this.$set(this.formData, 'loverSex', '男'); - this.$set(this.formData, 'maternityLeave', 98); - this.$set(this.formData, 'extendLeave', 60); - } - } + }, methods: { - // 添加日期格式化方法 - formatDate(date) { - if (!date) return ''; - // 如果已经是 yyyy-MM-dd 格式,直接返回 - if (typeof date === 'string' && /^\d{4}-\d{2}-\d{2}/.test(date)) { - // 如果包含时间,只取日期部分 - if (date.length > 10) { - return date.substring(0, 10); - } - return date; - } - // 否则转换为 yyyy-MM-dd 格式 - try { - const d = new Date(date); - if (isNaN(d.getTime())) { - return date; - } - const year = d.getFullYear(); - const month = String(d.getMonth() + 1).padStart(2, '0'); - const day = String(d.getDate()).padStart(2, '0'); - return year + '-' + month + '-' + day; - } catch (e) { - return date; - } - }, - // 计算休假时间止 - calculateEndTime() { - // 如果是男性,则不自动计算结束时间 - if (this.isMale) { - return; - } - if (this.formData.startTime && this.formData.leaveDays) { - const startDate = new Date(this.formData.startTime); - if (!isNaN(startDate.getTime())) { - // 创建新的日期对象,避免修改原始日期 - const endDate = new Date(startDate); - // 添加天数(leaveDays - 1,因为包含开始日期) - endDate.setDate(endDate.getDate() + this.formData.leaveDays - 1); - // 格式化为 yyyy-MM-dd - const year = endDate.getFullYear(); - const month = String(endDate.getMonth() + 1).padStart(2, '0'); - const day = String(endDate.getDate()).padStart(2, '0'); - this.$set(this.formData, 'endTime', year + '-' + month + '-' + day); - } - } - }, + // 保存 onSave() { console.log(this.formData); @@ -381,7 +298,7 @@ layout("/layouts/platform.html"){ this.formData = data }) } else { - const {id, username, loginname, union, unit, sex, nation, birthday,mobile} = this.$store.state.user + const {id, username, loginname, union, unit, sex, nation, birthday, mobile} = this.$store.state.user this.formData = { userId: id, userName: username, @@ -393,10 +310,10 @@ layout("/layouts/platform.html"){ sex: sex, nation: nation, birthday: birthday, - mobile:mobile + mobile: mobile } // 根据性别设置默认值 - if (this.isMale) { + /*if (this.isMale) { // 男性默认设置 this.$set(this.formData, 'loverSex', '女'); this.$set(this.formData, 'withLeave', 15); @@ -412,7 +329,7 @@ layout("/layouts/platform.html"){ // 女性默认陪产假和育儿假为0 this.$set(this.formData, 'withLeave', 0); this.$set(this.formData, 'parentalLeave', 0); - } + }*/ } } }, @@ -423,7 +340,6 @@ layout("/layouts/platform.html"){ - diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/common/info.js b/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/common/info.js index ec1b189..a8803e8 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/common/info.js +++ b/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/common/info.js @@ -5,46 +5,33 @@ const maternityLeaveInfo = { 申请信息 点击查看流程图 - - + {{viewData.userName}} {{viewData.sex}} {{viewData.nation}} - {{formatDate(viewData.birthday)}} {{viewData.unitName}} + {{$moment(viewData.birthday).format('YYYY-MM-DD')}} + + {{viewData.unitName}} {{viewData.mobile}} {{viewData.loverName}} {{viewData.loverSex}} {{viewData.loverNation}} - {{formatDate(viewData.loverBirthday)}} {{viewData.loverUnitName}} + {{$moment(viewData.loverBirthday).format('YYYY-MM-DD')}} + + {{viewData.loverUnitName}} + {{$moment(viewData.childrenBirthday).format('YYYY-MM-DD')}} + + {{viewData.isDystocia?'是':'否'}} + + {{viewData.isThreeChildren?'是':'否'}} + + {{viewData.isMultipleBirths?'是':'否'}} + - + - - {{viewData.withLeave}} - - - {{viewData.parentalLeave}} - - - {{viewData.maternityLeave}} - - - {{viewData.extendLeave}} - - - {{viewData.birthsLeave}} - - - {{viewData.difficultLeave}} - - {{viewData.winterLeave}} - {{viewData.summerLeave}} - {{viewData.leaveDays}} - {{formatDate(viewData.startTime)}} - {{formatDate(viewData.endTime)}} - {{formatDate(viewData.childrenBirthday)}}