Browse Source

20221121_sun修正项目申报&&补贴管理前端

15143018065 2 years ago
parent
commit
efae74fc84

+ 2 - 1
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/AdvancedStatus.java

@@ -2,7 +2,8 @@ package com.ruoyi.system.api.enums;
 
 public enum AdvancedStatus {
     SQ("0", "待社区审核"), JD("1", "待街道审核"), MZ("2", "待区民政审核"),
-    MONTH("3", "按月发放"), HALTED("4", "停发"), FPASS("5", "不通过");
+    MONTH("3", "按月发放"), HALTED("4", "停发"), FPASS("5", "不通过"),
+    TFJD("6", "停发待街道审核"), TFMZ("7", "停发待区民政审核"),;
 
     private final String code;
     private final String info;

+ 31 - 0
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java

@@ -218,6 +218,37 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return age < 0 ? 0 : age;
     }
 
+    public static int getCurrentAgeByIdNo(String identity) {
+        if (StringUtils.isEmpty(identity)) {
+            return 0;
+        }
+        if (identity.length() < 18) {
+            return 0;
+        }
+        Date birthday = DateUtils.dateTime(YYYYMMDD, identity.substring(6,14));
+
+        // 当前时间
+        Calendar curr = Calendar.getInstance();
+        // 生日
+        Calendar born = Calendar.getInstance();
+        born.setTime(birthday);
+        // 年龄 = 当前年 - 出生年
+        int age = curr.get(Calendar.YEAR) - born.get(Calendar.YEAR);
+        if (age <= 0) {
+            return 0;
+        }
+        // 如果当前月份小于出生月份: age-1
+        // 如果当前月份等于出生月份, 且当前日小于出生日: age-1
+        int currMonth = curr.get(Calendar.MONTH);
+        int currDay = curr.get(Calendar.DAY_OF_MONTH);
+        int bornMonth = born.get(Calendar.MONTH);
+        int bornDay = born.get(Calendar.DAY_OF_MONTH);
+        if ((currMonth < bornMonth) || (currMonth == bornMonth && currDay <= bornDay)) {
+            age--;
+        }
+        return Math.max(age, 0);
+    }
+
     /**
      * 获取startDate日期后month月的日期
      * @param startDate 开始日期

+ 66 - 0
ruoyi-modules/mz-business-btgl/src/main/java/com/ruoyi/business/domain/ZwywBtglGlbt.java

@@ -125,6 +125,13 @@ public class ZwywBtglGlbt extends BaseEntity
     @DictV(type = "C0032",message = "{代办人与申请人关系}")
     private String gx;
 
+    /** 发放月份 */
+    @Excel(name = "发放月份")
+    @ApiModelProperty(value = "发放月份", required = true)
+    @NotBlank(message = "{发放月份}",groups = AddGroup.class)
+    @Size(min = 1, max = 8, message = "{发放月份}")
+    private String ffyf;
+
     /** 是否补发(CZ035) */
     @Excel(name = "是否补发", dictType = "CZ035")
     @ApiModelProperty(value = "是否补发(CZ035)", required = true)
@@ -264,6 +271,61 @@ public class ZwywBtglGlbt extends BaseEntity
 
     private String tfyy;
 
+    /** 社区(村)审核结果(CZ002) */
+    @Excel(name = "停发社区(村)审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "停发社区(村)审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{停发社区(村)审核结果}")
+    private String tfsqShjg;
+
+    /** 社区(村)审核意见 */
+    @Excel(name = "停发社区(村)审核意见")
+    @ApiModelProperty(value = "停发社区(村)审核意见")
+    @Size(max = 200, message = "{停发社区(村)审核意见}")
+    private String tfsqShyj;
+
+    /** 社区(村)审核时间 */
+    @Excel(name = "停发社区(村)审核时间")
+    @ApiModelProperty(value = "停发社区(村)审核时间")
+    private String tfsqShsj;
+
+    /** 街道(乡镇)审核结果(CZ002) */
+    @Excel(name = "停发街道(乡镇)审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "停发街道(乡镇)审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{停发街道(乡镇)审核结果}")
+    private String tfjdShjg;
+
+    /** 街道(乡镇)审核意见 */
+    @Excel(name = "停发街道(乡镇)审核意见")
+    @ApiModelProperty(value = "停发街道(乡镇)审核意见")
+    @Size(max = 200, message = "{停发街道(乡镇)审核意见}")
+    private String tfjdShyj;
+
+    /** 街道(乡镇)审核时间 */
+    @Excel(name = "停发街道(乡镇)审核时间")
+    @ApiModelProperty(value = "停发街道(乡镇)审核时间")
+    @Size(max = 8, message = "{停发街道(乡镇)审核时间}")
+    private String tfjdShsj;
+
+    /** 区民政局审核结果(CZ002) */
+    @Excel(name = "停发区民政局审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "停发区民政局审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{停发区民政局审核结果}")
+    private String tfmzShjg;
+
+    /** 区民政局审核意见 */
+    @Excel(name = "停发区民政局审核意见")
+    @ApiModelProperty(value = "停发区民政局审核意见")
+    @Size(max = 200, message = "{停发区民政局审核意见}")
+
+    private String tfmzShyj;
+
+    /** 区民政局审核时间 */
+    @Excel(name = "停发区民政局审核时间")
+    @ApiModelProperty(value = "停发区民政局审核时间")
+    @Size(max = 8, message = "{停发区民政局审核时间}")
+
+    private String tfmzShsj;
+
     /** 申请状态(XZ111) */
 //    @Excel(name = "申请状态", dictType = "XZ111")
     @ApiModelProperty(value = "申请状态(XZ111)")
@@ -273,6 +335,10 @@ public class ZwywBtglGlbt extends BaseEntity
     @Size(max = 500, message = "{附件}")
     private String fj;
 
+    @ApiModelProperty(value = "停发附件")
+    @Size(max = 500, message = "{停发附件}")
+    private String tffj;
+
     @TableField(exist = false)
     private String age;
 

+ 0 - 5
ruoyi-modules/mz-business-btgl/src/main/java/com/ruoyi/business/mapper/ZwywBtglGlbtxmMapper.java

@@ -1,8 +1,6 @@
 package com.ruoyi.business.mapper;
 
 import com.ruoyi.business.domain.ZwywBtglGlbtxm;
-import com.ruoyi.common.datascope.handler.DataColumn;
-import com.ruoyi.common.datascope.handler.DataPermission;
 import com.ruoyi.common.datascope.utils.BaseMapperPlus;
 
 /**
@@ -11,9 +9,6 @@ import com.ruoyi.common.datascope.utils.BaseMapperPlus;
  * @author sun
  * @date 2022-11-18
  */
-@DataPermission({
-        @DataColumn(key = "deptName", value = "create_unit")
-})
 public interface ZwywBtglGlbtxmMapper extends BaseMapperPlus<ZwywBtglGlbtxm> {
 
 }

+ 6 - 0
ruoyi-modules/mz-business-btgl/src/main/java/com/ruoyi/business/service/IZwywBtglGlbtService.java

@@ -28,8 +28,12 @@ public interface IZwywBtglGlbtService
      */
     public List<ZwywBtglGlbt> selectZwywBtglGlbtList(ZwywBtglGlbt zwywBtglGlbt);
 
+    public List<ZwywBtglGlbt> selectZwywBtglGlbtListByStatus(ZwywBtglGlbt zwywBtglGlbt);
+
     public List<ZwywBtglGlbt> selectPortalBtglGlbtList(ZwywBtglGlbt zwywBtglGlbt);
 
+    public List<ZwywBtglGlbt> selectPortalBtglGlbtListByStatus(ZwywBtglGlbt zwywBtglGlbt);
+
     /**
      * 新增补贴管理高龄补贴信息
      *
@@ -59,4 +63,6 @@ public interface IZwywBtglGlbtService
     public String importZwywBtglGlbt(List<ZwywBtglGlbt> glbtList);
 
     public void checkGlbtJob();
+
+    public String getBfje(ZwywBtglGlbt zwywBtglGlbt);
 }

+ 96 - 7
ruoyi-modules/mz-business-btgl/src/main/java/com/ruoyi/business/service/impl/ZwywBtglGlbtServiceImpl.java

@@ -111,17 +111,43 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
                 }
             }
             if (StringUtils.equals(r.getCreateUnit(), SecurityUtils.getUserUnitId())
-                && StringUtils.equals(r.getStatus(), AdvancedStatus.MONTH.getCode())) {
+                && StringUtils.equals(r.getStatus(), AdvancedStatus.MONTH.getCode())
+                    && StringUtils.equals(r.getLevel(), DeptLevelStatus.SQ.getInfo())) {
+                r.setTfFlg(ExamineStatus.SNO.getCode());
+            }
+            if (StringUtils.equals(r.getStatus(), AdvancedStatus.TFJD.getCode())
+                    && StringUtils.equals(r.getLevel(), DeptLevelStatus.JD.getInfo())) {
+                r.setTfFlg(ExamineStatus.SNO.getCode());
+            }
+            if (StringUtils.equals(r.getStatus(), AdvancedStatus.TFMZ.getCode())
+                    && StringUtils.equals(r.getLevel(), DeptLevelStatus.QX.getInfo())) {
                 r.setTfFlg(ExamineStatus.SNO.getCode());
             }
         });
         return res;
     }
 
+    @Override
+    public List<ZwywBtglGlbt> selectZwywBtglGlbtListByStatus(ZwywBtglGlbt zwywBtglGlbt)
+    {
+        EncryptionUtils.encryption(zwywBtglGlbt);
+        List<String> status = new ArrayList<>();
+        status.add(AdvancedStatus.SQ.getCode());
+        status.add(AdvancedStatus.JD.getCode());
+        status.add(AdvancedStatus.MZ.getCode());
+        status.add(AdvancedStatus.MONTH.getCode());
+        status.add(AdvancedStatus.TFJD.getCode());
+        status.add(AdvancedStatus.TFMZ.getCode());
+        return zwywBtglGlbtMapper.selectList(new LambdaQueryWrapper<ZwywBtglGlbt>()
+                .eq(ZwywBtglGlbt::getSqrZjhm, zwywBtglGlbt.getSqrZjhm())
+                .in(ZwywBtglGlbt::getStatus, status));
+    }
+
     @Override
     public List<ZwywBtglGlbt> selectPortalBtglGlbtList(ZwywBtglGlbt zwywBtglGlbt)
     {
         EncryptionUtils.encryption(zwywBtglGlbt);
+        zwywBtglGlbt.setStatus(null);
         List<ZwywBtglGlbt> res = zwywBtglGlbtMapper.selectPortalBtglGlbtList(zwywBtglGlbt);
         res.forEach(r -> {
             r.setXzqhNames(sysDeptJlMapper.getXzqhNames(r.getXzqh()));
@@ -130,6 +156,14 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
         return res;
     }
 
+    @Override
+    public List<ZwywBtglGlbt> selectPortalBtglGlbtListByStatus(ZwywBtglGlbt zwywBtglGlbt)
+    {
+        EncryptionUtils.encryption(zwywBtglGlbt);
+        zwywBtglGlbt.setStatus(DataStatus.NORMAL.getCode());
+        return zwywBtglGlbtMapper.selectPortalBtglGlbtList(zwywBtglGlbt);
+    }
+
     private void setDeptLevelInfo(ZwywBtglGlbt zwywBtglGlbt) {
         List<String> deptLevel = Arrays.stream(SecurityUtils.getLoginUser().getSysUser().getDept().getAncestors()
                 .split(",")).collect(Collectors.toList());
@@ -151,6 +185,9 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
     @Override
     public int insertZwywBtglGlbt(ZwywBtglGlbt zwywBtglGlbt)
     {
+        if (DateUtils.getCurrentAgeByIdNo(zwywBtglGlbt.getSqrZjhm()) < 80) {
+            throw new ServiceException("申请人年龄不满80");
+        }
         if (StringUtils.equals(zwywBtglGlbt.getSqShjg(), ExamineStatus.YES.getCode())) {
             zwywBtglGlbt.setStatus(AdvancedStatus.JD.getCode());
         } else if (StringUtils.equals(zwywBtglGlbt.getSqShjg(), ExamineStatus.NO.getCode())) {
@@ -164,6 +201,9 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
     @Override
     public int insertPortalBtglGlbt(ZwywBtglGlbt zwywBtglGlbt)
     {
+        if (DateUtils.getCurrentAgeByIdNo(zwywBtglGlbt.getSqrZjhm()) < 80) {
+            throw new ServiceException("申请人年龄不满80");
+        }
         LoginUser user = userService.getUserInfo("admin", SecurityConstants.INNER).getData();
         SecurityContextHolder.set(SecurityConstants.LOGIN_USER, user);
         zwywBtglGlbt.setStatus(AdvancedStatus.SQ.getCode());
@@ -198,8 +238,24 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
             } else {
                 zwywBtglGlbt.setStatus(AdvancedStatus.FPASS.getCode());
             }
-        } else if (StringUtils.isNotEmpty(zwywBtglGlbt.getTfdbrXm())) {
-            zwywBtglGlbt.setStatus(AdvancedStatus.HALTED.getCode());
+        } else if (StringUtils.isNotEmpty(zwywBtglGlbt.getTfsqShjg())) {
+            if (StringUtils.equals(zwywBtglGlbt.getTfsqShjg(), ExamineStatus.YES.getCode())) {
+                zwywBtglGlbt.setStatus(AdvancedStatus.TFJD.getCode());
+            } else {
+                zwywBtglGlbt.setStatus(AdvancedStatus.MONTH.getCode());
+            }
+        } else if (StringUtils.isNotEmpty(zwywBtglGlbt.getTfjdShjg())) {
+            if (StringUtils.equals(zwywBtglGlbt.getTfjdShjg(), ExamineStatus.YES.getCode())) {
+                zwywBtglGlbt.setStatus(AdvancedStatus.TFMZ.getCode());
+            } else {
+                zwywBtglGlbt.setStatus(AdvancedStatus.MONTH.getCode());
+            }
+        } else if (StringUtils.isNotEmpty(zwywBtglGlbt.getTfmzShjg())) {
+            if (StringUtils.equals(zwywBtglGlbt.getTfmzShjg(), ExamineStatus.YES.getCode())) {
+                zwywBtglGlbt.setStatus(AdvancedStatus.HALTED.getCode());
+            } else {
+                zwywBtglGlbt.setStatus(AdvancedStatus.MONTH.getCode());
+            }
         }
         return zwywBtglGlbtMapper.updateById(zwywBtglGlbt);
     }
@@ -264,7 +320,8 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
         List<SysDept> deptList = sysDeptJlMapper.selectSysDeptJl().stream().filter(d -> Arrays.stream(d.getAncestors()
                 .split(",")).count() < 3).collect(Collectors.toList());
         LambdaQueryWrapper<ZwywBtglGlbt> lqw = new LambdaQueryWrapper<ZwywBtglGlbt>()
-                .eq(ZwywBtglGlbt::getStatus, AdvancedStatus.MONTH.getCode());
+                .eq(ZwywBtglGlbt::getStatus, AdvancedStatus.MONTH.getCode())
+                .le(ZwywBtglGlbt::getFfyf, DateUtils.dateTime().substring(0, 6));
         List<ZwywBtglGlbt> glbtList = zwywBtglGlbtMapper.selectList(lqw);
         for (SysDept dept: deptList) {
             String deptLocate = unitHandler(dept.getLocationCode());
@@ -280,7 +337,7 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
             ZwywBtglGlbtxm xm = zwywBtglGlbtxmMapper.selectOne(xmLqw);
             if (ObjectUtils.isNotEmpty(xm)) {
                 // 社区分组
-                Map<String, List<ZwywBtglGlbt>> deptGlbtGroupList = glbtList.stream()
+                Map<String, List<ZwywBtglGlbt>> deptGlbtGroupList = deptGlbtList.stream()
                         .collect(Collectors.groupingBy(ZwywBtglGlbt::getXzqh));
                 deptGlbtGroupList.forEach((xzqh, v) -> {
                     List<ZwywBtglGlbtmx> mxList = new ArrayList<>();
@@ -297,7 +354,7 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
                             ffje = new BigDecimal(xm.getBtzjH());
                         }
                         // 判断是否第一个月发放
-                        if (StringUtils.equals(d.getMzShsj().substring(0, 6), DateUtils.dateTime().substring(0, 6))) {
+                        if (StringUtils.equals(d.getFfyf(), DateUtils.dateTime().substring(0, 6))) {
                             if (StringUtils.equals(d.getIsBf(), WhetherStatus.YES.getCode())) {
                                 if (StringUtils.isNotEmpty(d.getBfys())) {
                                     bfje = ffje.multiply(new BigDecimal(d.getBfys()));
@@ -316,7 +373,7 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
                     ZwywBtglGlbtqd qd = new ZwywBtglGlbtqd();
                     qd.setFfyf(DateUtils.dateTime().substring(0, 6));
                     qd.setFfdq(xzqh);
-                    qd.setZrs(String.valueOf(deptGlbtList.size()));
+                    qd.setZrs(String.valueOf(mxList.size()));
                     qd.setZje(String.valueOf(sum));
                     qd.setCreateUnit(String.valueOf(dept.getDeptId()));
                     ZwywBtglGlbtqd glbtqd = zwywBtglGlbtqdMapper.selectOne(new LambdaQueryWrapper<ZwywBtglGlbtqd>()
@@ -358,4 +415,36 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
         Map<String,String> map = SubCodeUtil.getSubCode(unit);
         return map.get("code");
     }
+
+    @Override
+    public String getBfje(ZwywBtglGlbt zwywBtglGlbt) {
+        if (StringUtils.isEmpty(zwywBtglGlbt.getSqrZjhm())) {
+            return null;
+        }
+        int age = DateUtils.getCurrentAgeByIdNo(zwywBtglGlbt.getSqrZjhm());
+        List<String> deptLevel = Arrays.stream(SecurityUtils.getLoginUser().getSysUser().getDept().getAncestors()
+                .split(",")).collect(Collectors.toList());
+        BigDecimal bfje = BigDecimal.ZERO;
+        for (String deptId: deptLevel) {
+            LambdaQueryWrapper<ZwywBtglGlbtxm> xmLqw = new LambdaQueryWrapper<ZwywBtglGlbtxm>()
+                    .eq(ZwywBtglGlbtxm::getXmzt, GlbtXmztStatus.QY.getCode())
+                    .eq(ZwywBtglGlbtxm::getCreateUnit, deptId)
+                    .le(ZwywBtglGlbtxm::getQyrq, DateUtils.dateTime())
+                    .and(wq -> wq.ge(ZwywBtglGlbtxm::getTyrq, DateUtils.dateTime())
+                            .or().isNull(ZwywBtglGlbtxm::getTyrq));
+            ZwywBtglGlbtxm xm = zwywBtglGlbtxmMapper.selectOne(xmLqw);
+            if (ObjectUtils.isNotEmpty(xm)) {
+                BigDecimal ffje = BigDecimal.ZERO;
+                if (80 <= age && age <= 89) {
+                    ffje = new BigDecimal(xm.getBtzjE());
+                } else if (90 <= age && age <= 99) {
+                    ffje = new BigDecimal(xm.getBtzjN());
+                } else if (age >= 100) {
+                    ffje = new BigDecimal(xm.getBtzjH());
+                }
+                bfje = bfje.add(ffje.multiply(new BigDecimal(zwywBtglGlbt.getBfys())));
+            }
+        }
+        return bfje.toString();
+    }
 }

+ 12 - 1
ruoyi-modules/mz-business-btgl/src/main/resources/mapper/business/ZwywBtglGlbtMapper.xml

@@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="ZwywBtglGlbt" id="ZwywBtglGlbtResult">
         <result property="id"    column="id"    />
         <result property="xzqh"    column="xzqh"    />
+        <result property="ffyf"    column="ffyf"    />
         <result property="sqrXm"    column="sqr_xm"    />
         <result property="xb"    column="xb"    />
         <result property="csrq"    column="csrq"    />
@@ -40,6 +41,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="yhzh"    column="yhzh"    />
         <result property="khmc"    column="khmc"    />
         <result property="fj"    column="fj"    />
+        <result property="tffj"    column="tffj"    />
+        <result property="tfsqShjg"    column="tfsq_shjg"    />
+        <result property="tfsqShyj"    column="tfsq_shyj"    />
+        <result property="tfsqShsj"    column="tfsq_shsj"    />
+        <result property="tfjdShjg"    column="tfjd_shjg"    />
+        <result property="tfjdShyj"    column="tfjd_shyj"    />
+        <result property="tfjdShsj"    column="tfjd_shsj"    />
+        <result property="tfmzShjg"    column="tfmz_shjg"    />
+        <result property="tfmzShyj"    column="tfmz_shyj"    />
+        <result property="tfmzShsj"    column="tfmz_shsj"    />
         <result property="createTimeStr"    column="create_time_str"    />
         <result property="createUserId"    column="create_user_id"    />
         <result property="createBy"    column="create_by"    />
@@ -57,8 +68,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectPortalBtglGlbtList" parameterType="ZwywBtglGlbt" resultMap="ZwywBtglGlbtResult">
         select * from zwyw_btgl_glbt
         <where>
-            <if test="sqrXm != null  and sqrXm != ''"> and sqr_xm = #{sqrXm}</if>
             <if test="sqrZjhm != null  and sqrZjhm != ''"> and sqr_zjhm = #{sqrZjhm}</if>
+            <if test="status != null  and status != ''"> and status in ('0', '1', '2', '3', '6', '7')</if>
         </where>
     </select>
 

+ 7 - 2
ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywBtglGlbtController.java

@@ -80,8 +80,8 @@ public class ZwywBtglGlbtController extends BaseController
     {
         ZwywBtglGlbt glbt = new ZwywBtglGlbt();
         BeanUtil.copyProperties(zwywBtglGlbt, glbt, new CopyOptions().ignoreNullValue());
-        if (CollectionUtils.isNotEmpty(zwywBtglGlbtService.selectZwywBtglGlbtList(glbt))) {
-            return AjaxResult.error("已经存在该姓名及身份证号的申请");
+        if (CollectionUtils.isNotEmpty(zwywBtglGlbtService.selectZwywBtglGlbtListByStatus(glbt))) {
+            return AjaxResult.error("已经存在该身份证号的申请");
         }
         return toAjax(zwywBtglGlbtService.insertZwywBtglGlbt(zwywBtglGlbt),zwywBtglGlbt.getId());
     }
@@ -129,4 +129,9 @@ public class ZwywBtglGlbtController extends BaseController
     public void checkGlbtJob() {
         zwywBtglGlbtService.checkGlbtJob();
     }
+
+    @PostMapping("/getBfje")
+    public AjaxResult getBfje(@RequestBody ZwywBtglGlbt zwywBtglGlbt) {
+        return AjaxResult.success(zwywBtglGlbtService.getBfje(zwywBtglGlbt));
+    }
 }

+ 2 - 2
ruoyi-modules/mz-portal/src/main/java/com/ruoyi/portal/controller/PortalGlbtController.java

@@ -64,8 +64,8 @@ public class PortalGlbtController extends BaseController
     {
         ZwywBtglGlbt glbt = new ZwywBtglGlbt();
         BeanUtil.copyProperties(zwywBtglGlbt, glbt, new CopyOptions().ignoreNullValue());
-        if (CollectionUtils.isNotEmpty(zwywBtglGlbtService.selectPortalBtglGlbtList(glbt))) {
-            return AjaxResult.error("已经存在该姓名及身份证号的申请");
+        if (CollectionUtils.isNotEmpty(zwywBtglGlbtService.selectPortalBtglGlbtListByStatus(glbt))) {
+            return AjaxResult.error("已经存在该身份证号的申请");
         }
         return toAjax(zwywBtglGlbtService.insertPortalBtglGlbt(zwywBtglGlbt),zwywBtglGlbt.getId());
     }

+ 9 - 0
ruoyi-ui/src/api/business/btgl/glbt.js

@@ -42,3 +42,12 @@ export function delGlbt(id) {
     method: 'delete'
   })
 }
+
+// 取得补发金额
+export function getBfje(data) {
+  return request({
+    url: '/business/glbt/getBfje',
+    method: 'post',
+    data: data
+  })
+}

+ 2 - 0
ruoyi-ui/src/utils/regular.js

@@ -37,6 +37,8 @@ export const chineseOne = (rule, value, callback) => {
     } else {
       reg.test(value) ? callback() : callback(new Error('至少包含一个汉字'));
     }
+  } else {
+    callback()
   }
 }
 export const idCard = (rule, value, callback) => {

+ 275 - 17
ruoyi-ui/src/views/business/btgl/glbt/index.vue

@@ -67,7 +67,9 @@
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
         <template slot-scope="scope">
           <el-button v-if="scope.row.tfFlg == '1'" size="mini" type="text" icon="el-icon-edit"
-            @click="handleUpdate(scope.row)" v-hasPermi="['business:glbt:edit']">停发</el-button>
+            @click="handleUpdateTf(scope.row)" v-hasPermi="['business:glbt:edit']">停发</el-button>
+          <!-- <el-button v-if="scope.row.editFlg == '1'" size="mini" type="text" icon="el-icon-edit"
+            @click="handleUpdate(scope.row)" v-hasPermi="['business:glbt:edit']">修改</el-button> -->
           <el-button v-if="scope.row.editFlg == '1'" size="mini" type="text" icon="el-icon-edit"
             @click="handleUpdate(scope.row)" v-hasPermi="['business:glbt:edit']">审核</el-button>
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleXq(scope.row)"
@@ -128,9 +130,9 @@
             <tr v-if="form.isBf == '1'">
               <td>补发月数</td>
               <td>{{ form.bfys }}</td>
-              <!-- <td>补发金额(省)</td>
+              <td>补发金额</td>
               <td>{{ form.bfje }}</td>
-              <td>补发金额(市)</td>
+              <!-- <td>补发金额(市)</td>
               <td>{{ form.bfjeCity }}</td> -->
             </tr>
             <tr>
@@ -142,6 +144,8 @@
             <tr>
               <td>开户名称</td>
               <td>{{ form.khmc }}</td>
+              <td>开始发放月份</td>
+              <td>{{ form.ffyf }}</td>
               <td>附件</td>
               <td>
                 <file-upload v-model="form.fj" :isFile="false"></file-upload>
@@ -186,9 +190,9 @@
           <h3>停发信息</h3>
           <table>
             <tr>
-              <td>代办人姓名</td>
+              <td>停发代办人姓名</td>
               <td>{{ form.tfdbrXm }}</td>
-              <td>代办人联系电话</td>
+              <td>停发代办人联系电话</td>
               <td>{{ form.tfbdrLxdh }}</td>
             </tr>
             <tr>
@@ -197,6 +201,42 @@
               <td>停发原因</td>
               <td>{{ form.tfyy }}</td>
             </tr>
+            <tr v-if="form.tfsqShjg">
+              <td>社区停发审核结果</td>
+              <td>{{ translateDict('CZ002', form.tfsqShjg) }}</td>
+              <td>社区停发审核意见</td>
+              <td>{{ form.tfsqShyj }}</td>
+            </tr>
+            <tr v-if="form.tfsqShjg">
+              <td>社区停发审核时间</td>
+              <td>{{ special(form.tfsqShsj) }}</td>
+            </tr>
+            <tr v-if="form.tfjdShjg">
+              <td>街道停发审核结果</td>
+              <td>{{ translateDict('CZ002', form.tfjdShjg) }}</td>
+              <td>街道停发审核意见</td>
+              <td>{{ form.tfjdShyj }}</td>
+            </tr>
+            <tr v-if="form.tfjdShjg">
+              <td>街道停发审核时间</td>
+              <td>{{ special(form.tfjdShsj) }}</td>
+            </tr>
+            <tr v-if="form.tfmzShjg">
+              <td>区民政局停发审核结果</td>
+              <td>{{ translateDict('CZ002', form.tfmzShjg) }}</td>
+              <td>区民政局停发审核意见</td>
+              <td>{{ form.tfmzShyj }}</td>
+            </tr>
+            <tr v-if="form.tfmzShjg">
+              <td>区民政局停发审核时间</td>
+              <td>{{ special(form.tfmzShsj) }}</td>
+            </tr>
+            <tr>
+            <td>停发相关材料</td>
+              <td>
+                <file-upload v-model="form.tffj" :isFile="false"></file-upload>
+              </td>
+            </tr>
           </table>
         </el-tab-pane>
       </el-tabs>
@@ -210,7 +250,7 @@
       <el-scrollbar wrapClass="scrollbar-wrap">
         <el-form ref="form" :model="form" :rules="rules" label-width="155px">
           <h3>申请信息</h3>
-          <table class="table" v-if="shFlg || tfFlg">
+          <table class="table" v-if="(shFlg && form.level != 'sq') || tfFlg">
             <tr>
               <td>行政区划</td>
               <td>{{ form.xzqhNames }}</td>
@@ -253,9 +293,9 @@
             <tr v-if="form.isBf == '1'">
               <td>补发月数</td>
               <td>{{ form.bfys }}</td>
-              <!-- <td>补发金额</td>
+              <td>补发金额</td>
               <td>{{ form.bfje }}</td>
-              <td>补发金额(市)</td>
+              <!-- <td>补发金额(市)</td>
               <td>{{ form.bfjeCity }}</td> -->
             </tr>
             <tr>
@@ -267,6 +307,8 @@
             <tr>
               <td>开户名称</td>
               <td>{{ form.khmc }}</td>
+              <td>开始发放月份</td>
+              <td>{{ form.ffyf }}</td>
               <td>附件</td>
               <td>
                 <file-upload v-model="form.fj" :isFile="false"></file-upload>
@@ -274,7 +316,7 @@
             </tr>
           </table>
 
-          <div v-if="!shFlg && !tfFlg">
+          <div v-if="(!shFlg || form.level == 'sq') && !tfFlg">
             <div class="flexBox">
               <el-form-item label="行政区划" prop="xzqh" class="formWidth2">
                 <RegionCascaderSelect v-model="form.xzqh" style="width: 100%" valueProp="code" :isDataRoot="true">
@@ -284,6 +326,11 @@
               <el-form-item label="申请人姓名" prop="sqrXm" class="formWidth2">
                 <el-input v-model="form.sqrXm" placeholder="请输入申请人姓名" />
               </el-form-item>
+
+              <el-form-item label="开始发放月份" prop="ffyf" class="formWidth2">
+                <el-date-picker clearable v-model="form.ffyf" type="month" value-format="yyyyMM" placeholder="请输入开始发放月份">
+                </el-date-picker>
+              </el-form-item>
             </div>
             <div class="flexBox">
               <el-form-item label="性别" prop="xb" class="formWidth2">
@@ -342,14 +389,15 @@
             </div>
             <div class="flexBox" v-if="form.isBf == '1'">
               <el-form-item label="补发月数" prop="bfys" class="formWidth2">
-                <number placeholder="补发月数" v-model.sync="form.bfys" :min="0" :max="10000" />
+                <el-input-number v-model="form.bfys" controls-position="right" :min="0" :max="10000" @change="changeBfys()"/>
+                <!-- <number placeholder="补发月数" v-model.sync="form.bfys" :min="0" :max="10000" @input="changeBfys()"/> -->
               </el-form-item>
 
-              <!-- <el-form-item label="补发金额(省)" prop="bfje" class="formWidth2">
-                <number placeholder="补发金额(省)" v-model.sync="form.bfje" :min="0" :max="10000000000" :precision="2" />
+              <el-form-item label="补发金额" prop="bfje" class="formWidth2" >
+                <number placeholder="补发金额" v-model.sync="form.bfje" :min="0" :max="10000000000" :precision="2" :disabled="true"/>
               </el-form-item>
 
-              <el-form-item label="补发金额(市)" prop="bfjeCity" class="formWidth2">
+              <!-- <el-form-item label="补发金额(市)" prop="bfjeCity" class="formWidth2">
                 <number placeholder="补发金额(市)" v-model.sync="form.bfjeCity" :min="0" :max="10000000000" :precision="2" />
               </el-form-item> -->
             </div>
@@ -478,12 +526,64 @@
           </div>
           <div v-if="tfFlg && form.id">
             <h3>停发信息</h3>
+            <table v-if="tfXq.tfsqShjg">
+            <tr>
+              <td>停发代办人姓名</td>
+              <td>{{ tfXq.tfdbrXm }}</td>
+              <td>停发代办人联系电话</td>
+              <td>{{ tfXq.tfbdrLxdh }}</td>
+            </tr>
+            <tr>
+              <td>停发时间</td>
+              <td>{{ special(tfXq.tfsj) }}</td>
+              <td>停发原因</td>
+              <td>{{ tfXq.tfyy }}</td>
+            </tr>
+            <tr v-if="tfXq.tfsqShjg">
+              <td>社区停发审核结果</td>
+              <td>{{ translateDict('CZ002', tfXq.tfsqShjg) }}</td>
+              <td>社区停发审核意见</td>
+              <td>{{ tfXq.tfsqShyj }}</td>
+            </tr>
+            <tr v-if="tfXq.tfsqShjg">
+              <td>社区停发审核时间</td>
+              <td>{{ special(tfXq.tfsqShsj) }}</td>
+            </tr>
+            <tr v-if="tfXq.tfjdShjg">
+              <td>街道停发审核结果</td>
+              <td>{{ translateDict('CZ002', tfXq.tfjdShjg) }}</td>
+              <td>街道停发审核意见</td>
+              <td>{{ tfXq.tfjdShyj }}</td>
+            </tr>
+            <tr v-if="tfXq.tfjdShjg">
+              <td>街道停发审核时间</td>
+              <td>{{ special(tfXq.tfjdShsj) }}</td>
+            </tr>
+            <tr v-if="tfXq.tfmzShjg">
+              <td>区民政局停发审核结果</td>
+              <td>{{ translateDict('CZ002', tfXq.tfmzShjg) }}</td>
+              <td>区民政局停发审核意见</td>
+              <td>{{ tfXq.tfmzShyj }}</td>
+            </tr>
+            <tr v-if="tfXq.tfmzShjg">
+              <td>区民政局停发审核时间</td>
+              <td>{{ special(tfXq.tfmzShsj) }}</td>
+            </tr>
+            <tr>
+            <td>停发相关材料</td>
+              <td>
+                <file-upload v-model="tfXq.tffj" :isFile="false"></file-upload>
+              </td>
+            </tr>
+          </table>
+          <br />
+          <div v-if="!tfXq.tfsqShjg">
             <div class="flexBox">
-              <el-form-item label="代办人姓名" prop="tfdbrXm" class="formWidth2">
+              <el-form-item label="停发代办人姓名" prop="tfdbrXm" class="formWidth2">
                 <el-input v-model="form.tfdbrXm" placeholder="请输入停发代办人姓名" />
               </el-form-item>
 
-              <el-form-item label="代办人联系电话" prop="tfbdrLxdh" class="formWidth2">
+              <el-form-item label="停发代办人联系电话" prop="tfbdrLxdh" class="formWidth2">
                 <el-input v-model="form.tfbdrLxdh" placeholder="请输入停发代办人联系电话" />
               </el-form-item>
             </div>
@@ -497,7 +597,82 @@
                 <el-input v-model="form.tfyy" type="textarea" maxlength="100" show-word-limit placeholder="请输入停发原因" />
               </el-form-item>
             </div>
+
+            
+            <div v-if="form.level == 'sq'">
+            <div class="flexBox">
+              <el-form-item label="社区停发审核结果" prop="tfsqShjg" class="formWidth2">
+                <el-select v-model="form.tfsqShjg" placeholder="请选择社区(村)停发审核结果">
+                  <el-option v-for="dict in dict.type.CZ002" :key="dict.value" :label="dict.label" :value="dict.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+
+              <el-form-item label="社区停发审核意见" prop="tfsqShyj" class="formWidth2">
+                <el-input v-model="form.tfsqShyj" type="textarea" maxlength="200" show-word-limit
+                  placeholder="请输入社区(村)停发审核意见" />
+              </el-form-item>
+            </div>
+            <div class="flexBox">
+              <el-form-item label="社区停发审核时间" prop="tfsqShsj" class="formWidth2">
+                <el-date-picker clearable v-model="form.tfsqShsj" type="date" value-format="yyyyMMdd"
+                  placeholder="请选择社区(村)停发审核时间">
+                </el-date-picker>
+              </el-form-item>
+            </div>
+          </div>
+
+          <div class="flexBox">
+          <el-form-item label="停发相关材料">
+                <file-upload v-model="form.tffj" />
+              </el-form-item>
+            </div>
+          </div>
+          <div v-if="form.level == 'jd'">
+            <div class="flexBox">
+              <el-form-item label="街道停发审核结果" prop="tfjdShjg" class="formWidth2">
+                <el-select v-model="form.tfjdShjg" placeholder="请选择街道(乡镇)停发审核结果">
+                  <el-option v-for="dict in dict.type.CZ002" :key="dict.value" :label="dict.label" :value="dict.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+
+              <el-form-item label="街道停发审核意见" prop="tfjdShyj" class="formWidth2">
+                <el-input v-model="form.tfjdShyj" type="textarea" maxlength="200" show-word-limit
+                  placeholder="请输入街道(乡镇)停发审核意见" />
+              </el-form-item>
+            </div>
+            <div class="flexBox">
+              <el-form-item label="街道停发审核时间" prop="tfjdShsj" class="formWidth2">
+                <el-date-picker clearable v-model="form.tfjdShsj" type="date" value-format="yyyyMMdd"
+                  placeholder="请选择街道(乡镇)停发审核时间">
+                </el-date-picker>
+              </el-form-item>
+            </div>
           </div>
+          <div v-if="form.level == 'qx'">
+            <div class="flexBox">
+              <el-form-item label="区民政局停发审核结果" prop="tfmzShjg" class="formWidth2">
+                <el-select v-model="form.tfmzShjg" placeholder="请选择区民政局停发审核结果">
+                  <el-option v-for="dict in dict.type.CZ002" :key="dict.value" :label="dict.label" :value="dict.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+
+              <el-form-item label="区民政局停发审核意见" prop="tfmzShyj" class="formWidth2">
+                <el-input v-model="form.tfmzShyj" type="textarea" maxlength="200" show-word-limit
+                  placeholder="请输入区民政局停发审核意见" />
+              </el-form-item>
+            </div>
+            <div class="flexBox">
+              <el-form-item label="区民政局停发审核时间" prop="tfmzShsj" class="formWidth2">
+                <el-date-picker clearable v-model="form.tfmzShsj" type="date" value-format="yyyyMMdd"
+                  placeholder="请选择区民政局停发审核时间">
+                </el-date-picker>
+              </el-form-item>
+            </div>
+            </div>
+        </div>
         </el-form>
       </el-scrollbar>
       <div slot="footer" class="dialog-footer">
@@ -534,6 +709,7 @@ import {
   getGlbt,
   listGlbt,
   updateGlbt,
+  getBfje,
 } from "@/api/business/btgl/glbt";
 import { chineseOne, idCard, Regular } from "@/utils/regular";
 import { decryptData_ECB, decryptRowData_ECB } from "@/api/tool/sm4";
@@ -601,6 +777,7 @@ export default {
       },
       // 表单参数
       form: {},
+      tfXq: {},
       // 表单校验
       rules: {
         xzqh: [
@@ -615,6 +792,9 @@ export default {
         csrq: [
           { required: true, message: "出生日期不能为空", trigger: "blur" },
         ],
+        ffyf: [
+          { required: true, message: "开始发放月份不能为空", trigger: "blur" },
+        ],
         jzdz: [
           { required: true, message: "居住地址不能为空", trigger: "blur" },
           { max: 100, message: "居住地址不能超过100个字符", trigger: "blur" },
@@ -668,6 +848,17 @@ export default {
         mzShjg: [{ required: true, message: "审核结果不能为空", trigger: "blur" }],
         mzShyj: [{ required: true, message: "审核意见不能为空", trigger: "blur" }],
         mzShsj: [{ required: true, message: "审核时间不能为空", trigger: "blur" }],
+        
+        tfsqShjg: [{ required: true, message: "审核结果不能为空", trigger: "blur" }],
+        tfsqShyj: [{ required: true, message: "审核意见不能为空", trigger: "blur" }],
+        tfsqShsj: [{ required: true, message: "审核时间不能为空", trigger: "blur" }],
+        tfjdShjg: [{ required: true, message: "审核结果不能为空", trigger: "blur" }],
+        tfjdShyj: [{ required: true, message: "审核意见不能为空", trigger: "blur" }],
+        tfjdShsj: [{ required: true, message: "审核时间不能为空", trigger: "blur" }],
+        tfmzShjg: [{ required: true, message: "审核结果不能为空", trigger: "blur" }],
+        tfmzShyj: [{ required: true, message: "审核意见不能为空", trigger: "blur" }],
+        tfmzShsj: [{ required: true, message: "审核时间不能为空", trigger: "blur" }],
+
         tfdbrXm: [
           { required: true, message: "停发代办人姓名不能为空", trigger: "blur" },
           {
@@ -810,7 +1001,59 @@ export default {
         this.copyForm = this.deepCopy(copyData);
         /****** sks 需要改动的地方 end ******/
         this.open = true;
-        this.title = "高龄补贴信息";
+        this.title = "高龄津贴信息";
+      });
+    },
+    handleUpdateTf(row) {
+      this.reset();
+      if (row.level == 'jd') {
+        this.jdFlg = true;
+      } else if (row.level == 'qx') {
+        this.mzFlg = true;
+      }
+      this.tfFlg = true;
+      this.shFlg = false;
+      this.jdFlg = false;
+      this.mzFlg = false;
+      const id = row.id || this.ids;
+      getGlbt(id).then((response) => {
+        if (response.data.level == 'sq') {
+          response.data.tfsqShjg = null;
+          response.data.tfsqShyj = null;
+          response.data.tfsqShsj = null;
+          response.data.tfjdShjg = null;
+          response.data.tfjdShyj = null;
+          response.data.tfjdShsj = null;
+          response.data.tfmzShjg = null;
+          response.data.tfmzShyj = null;
+          response.data.tfmzShsj = null;
+        }
+        if (response.data.level == 'jd') {
+          response.data.tfjdShjg = null;
+          response.data.tfjdShyj = null;
+          response.data.tfjdShsj = null;
+          response.data.tfmzShjg = null;
+          response.data.tfmzShyj = null;
+          response.data.tfmzShsj = null;
+        }
+        if (response.data.level == 'qx') {
+          response.data.tfmzShjg = null;
+          response.data.tfmzShyj = null;
+          response.data.tfmzShsj = null;
+        }
+        this.tfXq = this.deepCopy(decryptData_ECB(response.data, ["sqrXm", "jzdz", "sqrLxdh", "sqrZjhm", "dbrXm", "dbrZjhm", "dbrLxdh", "tfdbrXm", "tfbdrLxdh", "khmc", "yhzh"], [1, 4, 3, 2, 1, 2, 3, 1, 3, 1, 5]));
+        
+        this.form = decryptData_ECB(response.data, ["sqrXm", "jzdz", "sqrLxdh", "sqrZjhm", "dbrXm", "dbrZjhm", "dbrLxdh", "tfdbrXm", "tfbdrLxdh", "khmc", "yhzh"], [1, 4, 3, 2, 1, 2, 3, 1, 3, 1, 5]);
+        this.form.xzqh = JSON.stringify(this.form.xzqh.split(','))
+        let copyData = {
+          ...this.form,
+          xzqh: this.form.xzqh ? JSON.parse(this.form.xzqh)[JSON.parse(this.form.xzqh).length - 1] : ''
+        }
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(copyData);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "高龄津贴信息";
       });
     },
     handleXq(row) {
@@ -862,7 +1105,7 @@ export default {
             }
             /****** sks 需要改动的地方 end ******/
           } else {
-            addGlbt({ ...this.form, xzqh: xzqh })
+            addGlbt({ ...this.form, xzqh: xzqh, bfje: this.form.bfje })
               .then((response) => {
                 this.$modal.msgSuccess("新增成功");
                 this.open = false;
@@ -897,6 +1140,21 @@ export default {
       this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
       this.getList();
     },
+    changeBfys() {
+      if (this.form.bfys && this.form.sqrZjhm) {
+        const param = {
+          bfys: this.form.bfys,
+          sqrZjhm: this.form.sqrZjhm,
+        }
+        getBfje(param).then((res) => {
+          if (res) {
+            if (res.code == 200) {
+              this.form.bfje = res.msg;
+          }
+          }
+        });
+    }
+    },
     // 提交上传文件
     submitFileForm() {
       this.$refs.upload.submit();