15143018065 3 هفته پیش
والد
کامیت
30df1fdf9a

+ 128 - 0
ruoyi-modules/mz-gljt/src/main/java/com/ruoyi/gljt/controller/GljtPlzjController.java

@@ -0,0 +1,128 @@
+package com.ruoyi.gljt.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.gljt.domain.GljtJfxxZjbf;
+import com.ruoyi.gljt.domain.GljtPlzj;
+import com.ruoyi.gljt.service.IGljtPlzjService;
+import com.ruoyi.system.validate.group.AddGroup;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 高龄津贴批量追加信息Controller
+ *
+ * @author sun
+ * @date 2025-03-25
+ */
+@RestController
+@RequestMapping("/plzj")
+public class GljtPlzjController extends BaseController
+{
+    @Autowired
+    private IGljtPlzjService gljtPlzjService;
+
+    /**
+     * 查询高龄津贴批量追加信息列表
+     */
+//    @RequiresPermissions("gljt:plzj:list")
+    @GetMapping("/list")
+    public TableDataInfo list(GljtPlzj gljtPlzj)
+    {
+        startPage();
+        List<GljtPlzj> list = gljtPlzjService.selectGljtPlzjList(gljtPlzj);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出高龄津贴批量追加信息列表
+     */
+//    @RequiresPermissions("gljt:plzj:export")
+    @Log(title = "高龄津贴批量追加信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, GljtPlzj gljtPlzj)
+    {
+        List<GljtPlzj> list = gljtPlzjService.selectGljtPlzjList(gljtPlzj);
+        ExcelUtil<GljtPlzj> util = new ExcelUtil<GljtPlzj>(GljtPlzj.class);
+        util.exportExcel(response, list, "高龄津贴批量追加信息数据");
+    }
+
+    /**
+     * 获取高龄津贴批量追加信息详细信息
+     */
+//    @RequiresPermissions("gljt:plzj:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(gljtPlzjService.selectGljtPlzjById(id));
+    }
+
+    /**
+     * 新增高龄津贴批量追加信息
+     */
+//    @RequiresPermissions("gljt:plzj:add")
+    @Log(title = "高龄津贴批量追加信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated({AddGroup.class}) @RequestBody GljtPlzj gljtPlzj)
+    {
+        return toAjax(gljtPlzjService.insertGljtPlzj(gljtPlzj),gljtPlzj.getId());
+    }
+
+    /**
+     * 修改高龄津贴批量追加信息
+     */
+//    @RequiresPermissions("gljt:plzj:edit")
+    @Log(title = "高龄津贴批量追加信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@Validated @RequestBody GljtPlzj gljtPlzj)
+    {
+        return toAjax(gljtPlzjService.updateGljtPlzj(gljtPlzj));
+    }
+
+    /**
+     * 删除高龄津贴批量追加信息
+     */
+//    @RequiresPermissions("gljt:plzj:remove")
+    @Log(title = "高龄津贴批量追加信息", businessType = BusinessType.DELETE)
+	@GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(gljtPlzjService.deleteGljtPlzjByIds(ids));
+    }
+
+    @GetMapping("/zjbfList")
+    public TableDataInfo zjbfList(GljtJfxxZjbf gljtJfxxZjbf) {
+        startPage();
+        List<GljtJfxxZjbf> list = gljtPlzjService.getJfxxZjbfList(gljtJfxxZjbf);
+        return getDataTable(list);
+    }
+
+    @GetMapping("/jfxxList")
+    public AjaxResult jfxxList(GljtPlzj gljtPlzj) {
+        return AjaxResult.success(gljtPlzjService.getJfxxList(gljtPlzj));
+    }
+
+    @PostMapping("/addJfxx")
+    public AjaxResult addJfxx(@RequestBody GljtPlzj gljtPlzj) {
+        return AjaxResult.success(gljtPlzjService.addJfxx(gljtPlzj));
+    }
+
+    @PostMapping("/deleteJfxx")
+    public AjaxResult deleteJfxx(@RequestBody GljtPlzj gljtPlzj) {
+        return AjaxResult.success(gljtPlzjService.deleteJfxx(gljtPlzj));
+    }
+
+    @PostMapping("/getPcTj")
+    public AjaxResult getPcTj(@RequestBody GljtPlzj gljtPlzj)
+    {
+        return AjaxResult.success(gljtPlzjService.getPcTj(gljtPlzj));
+    }
+}

+ 156 - 0
ruoyi-modules/mz-gljt/src/main/java/com/ruoyi/gljt/domain/GljtPlzj.java

@@ -0,0 +1,156 @@
+package com.ruoyi.gljt.domain;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.ruoyi.system.validate.NumberV;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.Size;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 高龄津贴批量追加信息对象 gljt_plzj
+ *
+ * @author sun
+ * @date 2025-03-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("gljt_plzj")
+@ApiModel("高龄津贴批量追加信息")
+public class GljtPlzj extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键标识 */
+    @Excel(name = "主键标识")
+    @TableId(value = "id",type = IdType.ASSIGN_UUID)
+    @ApiModelProperty(value = "主键标识")
+    private String id;
+
+    /** 行政区划 */
+    @Excel(name = "行政区划")
+    @ApiModelProperty(value = "行政区划", required = true)
+    private String xzqh;
+
+    /** 批次名称 */
+    @Excel(name = "批次名称")
+    @ApiModelProperty(value = "批次名称")
+    @Size(max = 100, message = "{批次名称}")
+    private String pcmc;
+
+    /** 当发月份 */
+    @Excel(name = "当发月份")
+    @ApiModelProperty(value = "当发月份")
+    @Size(max = 8, message = "{当发月份}")
+    private String dfyf;
+
+    /** 计发开始月份 */
+    @Excel(name = "计发开始月份")
+    @ApiModelProperty(value = "计发开始月份")
+    @Size(max = 8, message = "{计发开始月份}")
+    private String startyf;
+
+    /** 计发结束月份 */
+    @Excel(name = "计发结束月份")
+    @ApiModelProperty(value = "计发结束月份")
+    @Size(max = 8, message = "{计发结束月份}")
+    private String endyf;
+
+    /** 补贴标准(GL013) */
+    @Excel(name = "补贴标准", dictType = "GL013")
+    @ApiModelProperty(value = "补贴标准(GL013)")
+    private String btbz;
+
+    /** 验活状态(GL010) */
+    @Excel(name = "验活状态", dictType = "GL010")
+    @ApiModelProperty(value = "验活状态(GL010)")
+    private String jkzk;
+
+    /** 老人状态(GL003) */
+    @Excel(name = "老人状态", dictType = "GL003")
+    @ApiModelProperty(value = "老人状态(GL003)")
+    private String lrzt;
+
+    /** 发放人数 */
+    @Excel(name = "发放人数")
+    @ApiModelProperty(value = "发放人数")
+    @NumberV(message = "{发放人数}")
+    private String zjrs;
+
+    /** 发放金额 */
+    @Excel(name = "发放金额")
+    @ApiModelProperty(value = "发放金额")
+    @Range(min=0,max=10000000000L,message = "{发放金额}")
+    @Digits(integer = 10,fraction = 2,message = "{发放金额}")
+    private String zjje;
+
+    /** 追加原因 */
+    @Excel(name = "追加原因")
+    @ApiModelProperty(value = "追加原因")
+    @Size(max = 100, message = "{追加原因}")
+    private String zjyy;
+
+    /** 追加原因 */
+    @Excel(name = "追加人")
+    @ApiModelProperty(value = "追加人")
+    @Size(max = 32, message = "{追加人}")
+    private String zjr;
+
+    /** 发放人姓名 */
+    @Excel(name = "追加人姓名")
+    @ApiModelProperty(value = "追加人姓名")
+    @Size(max = 32, message = "{追加人姓名}")
+    private String zjrxm;
+
+    /** 发放单位 */
+    @Excel(name = "追加单位")
+    @ApiModelProperty(value = "追加单位")
+    @Size(max = 32, message = "{追加单位}")
+    private String zjdw;
+
+    /** 发放时间 */
+    @Excel(name = "追加时间")
+    @ApiModelProperty(value = "追加时间")
+    @Size(max = 20, message = "{追加时间}")
+    private String zjsj;
+
+    /** 数据状态(GL012) */
+    @Excel(name = "数据状态", dictType = "GL012")
+    @ApiModelProperty(value = "数据状态(GL012)", required = true)
+    @Size(max = 2, message = "{数据状态}")
+    private String status;
+
+    private String jestr;
+
+    @TableField(exist = false)
+    private String xzqhName;
+
+    @TableField(exist = false)
+    private String xzqhCode;
+
+    @TableField(exist = false)
+    private String[] jfIdList;
+
+    @TableField(exist = false)
+    private JSONArray jfxxList;
+
+    @TableField(exist = false)
+    private List<Map<String, String>> xzqhList;
+
+    @TableField(exist = false)
+    private JSONArray jeList;
+}

+ 3 - 0
ruoyi-modules/mz-gljt/src/main/java/com/ruoyi/gljt/mapper/GljtJfxxMapper.java

@@ -2,6 +2,7 @@ package com.ruoyi.gljt.mapper;
 
 import com.ruoyi.common.datascope.utils.BaseMapperPlus;
 import com.ruoyi.gljt.domain.GljtJfxx;
+import com.ruoyi.gljt.domain.GljtJfxxZjbf;
 import com.ruoyi.gljt.domain.GljtSqLr;
 
 import java.util.List;
@@ -17,6 +18,8 @@ public interface GljtJfxxMapper extends BaseMapperPlus<GljtJfxx> {
 
     public void batchInsert(List<GljtJfxx> jfxxList);
 
+    public void batchInsertZjbf(List<GljtJfxxZjbf> jfxxList);
+
     public List<Map<String, Object>> selectVJfxx(GljtSqLr gljtSqLr);
 
 }

+ 14 - 0
ruoyi-modules/mz-gljt/src/main/java/com/ruoyi/gljt/mapper/GljtPlzjMapper.java

@@ -0,0 +1,14 @@
+package com.ruoyi.gljt.mapper;
+
+import com.ruoyi.common.datascope.utils.BaseMapperPlus;
+import com.ruoyi.gljt.domain.GljtPlzj;
+
+/**
+ * 高龄津贴批量追加信息Mapper接口
+ *
+ * @author sun
+ * @date 2025-03-25
+ */
+public interface GljtPlzjMapper extends BaseMapperPlus<GljtPlzj> {
+
+}

+ 67 - 0
ruoyi-modules/mz-gljt/src/main/java/com/ruoyi/gljt/service/IGljtPlzjService.java

@@ -0,0 +1,67 @@
+package com.ruoyi.gljt.service;
+
+import com.ruoyi.gljt.domain.GljtJfxx;
+import com.ruoyi.gljt.domain.GljtJfxxZjbf;
+import com.ruoyi.gljt.domain.GljtPlzj;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 高龄津贴批量追加信息Service接口
+ *
+ * @author sun
+ * @date 2025-03-25
+ */
+public interface IGljtPlzjService
+{
+    /**
+     * 查询高龄津贴批量追加信息
+     *
+     * @param id 高龄津贴批量追加信息主键
+     * @return 高龄津贴批量追加信息
+     */
+    public GljtPlzj selectGljtPlzjById(String id);
+
+    /**
+     * 查询高龄津贴批量追加信息列表
+     *
+     * @param gljtPlzj 高龄津贴批量追加信息
+     * @return 高龄津贴批量追加信息集合
+     */
+    public List<GljtPlzj> selectGljtPlzjList(GljtPlzj gljtPlzj);
+
+    /**
+     * 新增高龄津贴批量追加信息
+     *
+     * @param gljtPlzj 高龄津贴批量追加信息
+     * @return 结果
+     */
+    public int insertGljtPlzj(GljtPlzj gljtPlzj);
+
+    /**
+     * 修改高龄津贴批量追加信息
+     *
+     * @param gljtPlzj 高龄津贴批量追加信息
+     * @return 结果
+     */
+    public int updateGljtPlzj(GljtPlzj gljtPlzj);
+
+    /**
+     * 批量删除高龄津贴批量追加信息
+     *
+     * @param ids 需要删除的高龄津贴批量追加信息主键集合
+     * @return 结果
+     */
+    public int deleteGljtPlzjByIds(String[] ids);
+
+    int addJfxx(GljtPlzj gljtPlzj);
+
+    int deleteJfxx(GljtPlzj gljtPlzj);
+
+    List<GljtJfxx> getJfxxList(GljtPlzj gljtPlzj);
+
+    List<GljtJfxxZjbf> getJfxxZjbfList(GljtJfxxZjbf gljtJfxxZjbf);
+
+    public List<Map<String, Object>> getPcTj(GljtPlzj gljtPlzj);
+}

+ 386 - 0
ruoyi-modules/mz-gljt/src/main/java/com/ruoyi/gljt/service/impl/GljtPlzjServiceImpl.java

@@ -0,0 +1,386 @@
+package com.ruoyi.gljt.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.common.security.utils.EncryptionUtils;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.common.security.utils.SysDeptJlUtils;
+import com.ruoyi.gljt.domain.GljtJfxx;
+import com.ruoyi.gljt.domain.GljtJfxxZjbf;
+import com.ruoyi.gljt.domain.GljtPlzj;
+import com.ruoyi.gljt.mapper.GljtJfxxMapper;
+import com.ruoyi.gljt.mapper.GljtJfxxZjbfMapper;
+import com.ruoyi.gljt.mapper.GljtPlzjMapper;
+import com.ruoyi.gljt.service.IGljtPlzjService;
+import com.ruoyi.system.domain.SysDeptJl;
+import com.ruoyi.system.mapper.SysDeptJlMapper;
+import com.ruoyi.system.utils.SubCodeUtil;
+import io.seata.common.util.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * 高龄津贴批量追加信息Service业务层处理
+ *
+ * @author sun
+ * @date 2025-03-25
+ */
+@Service
+public class GljtPlzjServiceImpl implements IGljtPlzjService
+{
+    @Autowired
+    private GljtPlzjMapper gljtPlzjMapper;
+
+    @Autowired
+    private GljtJfxxZjbfMapper gljtJfxxZjbfMapper;
+
+    @Autowired
+    private SysDeptJlMapper sysDeptJlMapper;
+
+    @Autowired
+    private GljtJfxxMapper gljtJfxxMapper;
+
+    /**
+     * 查询高龄津贴批量追加信息
+     *
+     * @param id 高龄津贴批量追加信息主键
+     * @return 高龄津贴批量追加信息
+     */
+    @Override
+    public GljtPlzj selectGljtPlzjById(String id)
+    {
+        GljtPlzj res = gljtPlzjMapper.selectById(id);
+        if (ObjectUtils.isNotEmpty(res)) {
+            List<Map<String, String>> xzqhList = new ArrayList<>();
+            if (res.getXzqh().contains(",")) {
+                List<String> xzqh = Stream.of(res.getXzqh().split(",")).collect(Collectors.toList());
+                xzqh.forEach(x -> {
+                    Map<String, String> qh = new LinkedHashMap<>();
+                    qh.put("xzqh", x);
+                    qh.put("xzqhName", SysDeptJlUtils.getDeptCache(x));
+                    qh.put("xzqhCode", sysDeptJlMapper.getXzqhCodes(x));
+                    xzqhList.add(qh);
+                });
+            } else {
+                Map<String, String> qh = new LinkedHashMap<>();
+                qh.put("xzqh", res.getXzqh());
+                qh.put("xzqhName", SysDeptJlUtils.getDeptCache(res.getXzqh()));
+                qh.put("xzqhCode", sysDeptJlMapper.getXzqhCodes(res.getXzqh()));
+                xzqhList.add(qh);
+            }
+            res.setXzqhList(xzqhList);
+        }
+        return res;
+    }
+
+    /**
+     * 查询高龄津贴批量追加信息列表
+     *
+     * @param gljtPlzj 高龄津贴批量追加信息
+     * @return 高龄津贴批量追加信息
+     */
+    @Override
+    public List<GljtPlzj> selectGljtPlzjList(GljtPlzj gljtPlzj)
+    {
+        String filter = StringUtils.isEmpty(gljtPlzj.getXzqh()) ? SecurityUtils.getAreaCode() : gljtPlzj.getXzqh();
+        gljtPlzj.setXzqh(null);
+        List<GljtPlzj> res = gljtPlzjMapper.selectList(new LambdaQueryWrapper<>(gljtPlzj)
+                .likeRight(GljtPlzj::getXzqh, SubCodeUtil.code2Short(filter))
+                .orderByDesc(GljtPlzj::getCreateTimeStr));
+        for (GljtPlzj r: res) {
+            List<Map<String, String>> xzqhList = new ArrayList<>();
+            if (r.getXzqh().contains(",")) {
+                List<String> xzqh = Stream.of(r.getXzqh().split(",")).collect(Collectors.toList());
+                xzqh.forEach(x -> {
+                    Map<String, String> qh = new LinkedHashMap<>();
+                    qh.put("xzqh", x);
+                    qh.put("xzqhName", SysDeptJlUtils.getDeptCache(x));
+                    qh.put("xzqhCode", sysDeptJlMapper.getXzqhCodes(x));
+                    xzqhList.add(qh);
+                });
+            } else {
+                Map<String, String> qh = new LinkedHashMap<>();
+                qh.put("xzqh", r.getXzqh());
+                qh.put("xzqhName", SysDeptJlUtils.getDeptCache(r.getXzqh()));
+                qh.put("xzqhCode", sysDeptJlMapper.getXzqhCodes(r.getXzqh()));
+                xzqhList.add(qh);
+            }
+            r.setXzqhList(xzqhList);
+        }
+        return res;
+    }
+
+    /**
+     * 新增高龄津贴批量追加信息
+     *
+     * @param gljtPlzj 高龄津贴批量追加信息
+     * @return 结果
+     */
+    @Override
+    public int insertGljtPlzj(GljtPlzj gljtPlzj)
+    {
+        if (StringUtils.isEmpty(gljtPlzj.getZjsj())) gljtPlzj.setZjsj(DateUtils.dateTimeNow());
+        if (StringUtils.isEmpty(gljtPlzj.getZjr())) gljtPlzj.setZjr(SecurityUtils.getUsername());
+        if (StringUtils.isEmpty(gljtPlzj.getZjrxm())) gljtPlzj.setZjrxm(SecurityUtils.getNickName());
+        if (StringUtils.isEmpty(gljtPlzj.getZjdw())) gljtPlzj.setZjdw(SecurityUtils.getUserUnitName());
+        int res = gljtPlzjMapper.insert(gljtPlzj);
+        checkInZj(gljtPlzj);
+        return res;
+    }
+
+    /**
+     * 修改高龄津贴批量追加信息
+     *
+     * @param gljtPlzj 高龄津贴批量追加信息
+     * @return 结果
+     */
+    @Override
+    public int updateGljtPlzj(GljtPlzj gljtPlzj)
+    {
+        if (StringUtils.equals(gljtPlzj.getStatus(), "1")) {
+            // 已确认
+            asyncIn(gljtPlzj);
+        } else {
+            // 草稿编辑
+            gljtJfxxZjbfMapper.delete(new LambdaQueryWrapper<GljtJfxxZjbf>().eq(GljtJfxxZjbf::getPcId, gljtPlzj.getId()));
+            checkInZj(gljtPlzj);
+        }
+        return gljtPlzjMapper.updateById(gljtPlzj);
+    }
+
+    /**
+     * 批量删除高龄津贴批量追加信息
+     *
+     * @param ids 需要删除的高龄津贴批量追加信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGljtPlzjByIds(String[] ids)
+    {
+        List<String> idList = Stream.of(ids).collect(Collectors.toList());
+        idList.forEach(i -> gljtJfxxZjbfMapper.delete(new LambdaQueryWrapper<GljtJfxxZjbf>().eq(GljtJfxxZjbf::getPcId, i)));
+        return gljtPlzjMapper.deleteBatchIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public int addJfxx(GljtPlzj gljtPlzj) {
+        if (StringUtils.isEmpty(gljtPlzj.getId())) throw new ServiceException("发放批次主键不能为空");
+        GljtPlzj old = gljtPlzjMapper.selectById(gljtPlzj.getId());
+        if (ObjectUtils.isEmpty(old)) throw new ServiceException("未查询到该批次");
+        List<GljtJfxxZjbf> jfxxList = com.alibaba.fastjson.JSONArray.parseArray(gljtPlzj.getJfxxList().toJSONString(),
+                GljtJfxxZjbf.class);
+        if (CollectionUtils.isEmpty(gljtPlzj.getJfxxList())) throw new ServiceException("添加的计发信息不能为空");
+        List<GljtJfxx> jfje = com.alibaba.fastjson.JSONArray.parseArray(old.getJestr(),
+                GljtJfxx.class);
+        List<GljtJfxxZjbf> inList = new ArrayList<>();
+        for (GljtJfxxZjbf jfxx: jfxxList) {
+            String je = jfje.stream().filter(j -> StringUtils.equals(j.getFfyf(), jfxx.getFfyf())).findFirst().orElse(new GljtJfxx()).getFfje();
+            if (StringUtils.isEmpty(je)) je = "0";
+            jfxx.setId(IdUtils.simpleUUID());
+            jfxx.setFfje(je);
+            jfxx.setFflx("3");
+            jfxx.setPcId(gljtPlzj.getId());
+            jfxx.setStatus("0");
+            inList.add(jfxx);
+        }
+        gljtJfxxMapper.batchInsertZjbf(inList);
+        List<GljtJfxxZjbf> zjbfList = gljtJfxxZjbfMapper.selectList(new LambdaQueryWrapper<GljtJfxxZjbf>()
+                .eq(GljtJfxxZjbf::getPcId, gljtPlzj.getId()).select(GljtJfxxZjbf::getLrId, GljtJfxxZjbf::getFfje));
+        List<String> lrIdList = zjbfList.stream().map(GljtJfxxZjbf::getLrId).distinct().collect(Collectors.toList());
+        BigDecimal all = BigDecimal.ZERO;
+        for (GljtJfxxZjbf zjbf: zjbfList) {
+            all = all.add(new BigDecimal(zjbf.getFfje()));
+        }
+        gljtPlzj.setZjrs(String.valueOf(lrIdList.size()));
+        gljtPlzj.setZjje(all.toString());
+        return gljtPlzjMapper.updateById(gljtPlzj);
+    }
+
+    @Override
+    public int deleteJfxx(GljtPlzj gljtPlzj) {
+        if (StringUtils.isEmpty(gljtPlzj.getJfIdList())) throw new ServiceException("删除的计发信息主键不能为空");
+        if (StringUtils.isEmpty(gljtPlzj.getId())) throw new ServiceException("发放批次主键不能为空");
+        GljtPlzj old = gljtPlzjMapper.selectById(gljtPlzj.getId());
+        if (ObjectUtils.isEmpty(old)) throw new ServiceException("未查询到该批次");
+        List<String> deleteList = Stream.of(gljtPlzj.getJfIdList()).collect(Collectors.toList());
+        LambdaQueryWrapper<GljtJfxxZjbf> ldw = new LambdaQueryWrapper<GljtJfxxZjbf>()
+            .in(GljtJfxxZjbf::getId, deleteList);
+        gljtJfxxZjbfMapper.delete(ldw);
+        List<GljtJfxxZjbf> zjbfList = gljtJfxxZjbfMapper.selectList(new LambdaQueryWrapper<GljtJfxxZjbf>()
+                .eq(GljtJfxxZjbf::getPcId, gljtPlzj.getId()).select(GljtJfxxZjbf::getLrId, GljtJfxxZjbf::getFfje));
+        List<String> lrIdList = zjbfList.stream().map(GljtJfxxZjbf::getLrId).distinct().collect(Collectors.toList());
+        BigDecimal all = BigDecimal.ZERO;
+        for (GljtJfxxZjbf zjbf: zjbfList) {
+            all = all.add(new BigDecimal(zjbf.getFfje()));
+        }
+        gljtPlzj.setZjrs(String.valueOf(lrIdList.size()));
+        gljtPlzj.setZjje(all.toString());
+        return gljtPlzjMapper.updateById(gljtPlzj);
+    }
+
+    private void asyncIn(GljtPlzj gljtPlzj) {
+        GljtPlzj old = gljtPlzjMapper.selectById(gljtPlzj.getId());
+        List<GljtJfxxZjbf> zjbfList = gljtJfxxZjbfMapper.selectList(new LambdaQueryWrapper<GljtJfxxZjbf>().eq(GljtJfxxZjbf::getPcId, gljtPlzj.getId()));
+        if (CollectionUtils.isNotEmpty(zjbfList)) {
+            List<GljtJfxx> inList = new ArrayList<>();
+            zjbfList.forEach(z -> {
+                EncryptionUtils.decryptForPlaintext(z);
+                GljtJfxx in = new GljtJfxx();
+                BeanUtil.copyProperties(z, in, new CopyOptions().ignoreNullValue());
+                in.setId(IdUtils.simpleUUID());
+                in.setPcId(null);
+                in.setDfyf(old.getDfyf());
+                in.setJfms("追加补发");
+                inList.add(in);
+            });
+            gljtJfxxMapper.batchInsert(inList);
+        }
+    }
+
+    private void checkInZj(GljtPlzj gljtPlzj) {
+        List<GljtJfxx> jfxxList = getJfxxList(gljtPlzj);
+        List<String> lrIdList = jfxxList.stream().map(GljtJfxx::getLrId).distinct().collect(Collectors.toList());
+        BigDecimal all = BigDecimal.ZERO;
+        List<GljtJfxxZjbf> inList = new ArrayList<>();
+        String jestr = gljtPlzj.getJeList().toJSONString();
+        gljtPlzj.setJestr(jestr);
+        List<GljtJfxx> jfje = com.alibaba.fastjson.JSONArray.parseArray(jestr, GljtJfxx.class);
+        if (CollectionUtils.isNotEmpty(jfxxList)) {
+            for (GljtJfxx jfxx: jfxxList) {
+                String je = jfje.stream().filter(j -> StringUtils.equals(j.getFfyf(), jfxx.getFfyf())).findFirst().orElse(new GljtJfxx()).getFfje();
+                if (StringUtils.isEmpty(je)) je = "0";
+                GljtJfxxZjbf in = new GljtJfxxZjbf();
+                all = all.add(new BigDecimal(je));
+                BeanUtil.copyProperties(jfxx, in, new CopyOptions().ignoreNullValue());
+                in.setId(IdUtils.simpleUUID());
+                in.setFfje(je);
+                in.setFflx("3");
+                in.setPcId(gljtPlzj.getId());
+                in.setStatus("0");
+                inList.add(in);
+            }
+            gljtJfxxMapper.batchInsertZjbf(inList);
+        }
+        gljtPlzj.setZjrs(String.valueOf(lrIdList.size()));
+        gljtPlzj.setZjje(all.toString());
+        gljtPlzjMapper.updateById(gljtPlzj);
+    }
+
+    @Override
+    public List<GljtJfxx> getJfxxList(GljtPlzj gljtPlzj) {
+        String filter = StringUtils.isEmpty(gljtPlzj.getXzqh()) ? SecurityUtils.getAreaCode() : gljtPlzj.getXzqh();
+        // 当发/补发,已发放
+        LambdaQueryWrapper<GljtJfxx> baseLqw = new LambdaQueryWrapper<GljtJfxx>()
+                .in(GljtJfxx::getFflx, Arrays.asList("0", "1")).eq(GljtJfxx::getStatus, "1");
+        // 行政区划(如某街道)
+        if (filter.contains(",")) {
+            List<String> xzqh = Stream.of(gljtPlzj.getXzqh().split(",")).collect(Collectors.toList());
+            baseLqw.and(l -> {
+                for (String f: xzqh) {
+                    l.or(x -> x.likeRight(GljtJfxx::getXzqh, SubCodeUtil.code2Short(f)));
+                }
+            });
+        } else {
+            baseLqw.likeRight(GljtJfxx::getXzqh, SubCodeUtil.code2Short(filter));
+        }
+        // 开始月份(大于等于)
+        if (StringUtils.isNotEmpty(gljtPlzj.getStartyf())) baseLqw.ge(GljtJfxx::getDfyf, gljtPlzj.getStartyf());
+        // 结束月份(小于等于)
+        if (StringUtils.isNotEmpty(gljtPlzj.getEndyf())) baseLqw.le(GljtJfxx::getDfyf, gljtPlzj.getEndyf());
+        // 补贴标准(多选)
+        if (StringUtils.isNotEmpty(gljtPlzj.getBtbz())) {
+            List<String> btbzList = new ArrayList<>();
+            if (gljtPlzj.getBtbz().contains(",")) {
+                btbzList = Stream.of(gljtPlzj.getBtbz().split(",")).collect(Collectors.toList());
+            } else {
+                btbzList.add(gljtPlzj.getBtbz());
+            }
+            baseLqw.in(GljtJfxx::getBtbz, btbzList);
+        }
+        // 验活
+        if (StringUtils.equals(gljtPlzj.getJkzk(), "1")) baseLqw.eq(GljtJfxx::getJkzk, "0");
+        // 正常/暂停
+        if (StringUtils.equals(gljtPlzj.getLrzt(), "0")) baseLqw.eq(GljtJfxx::getLrzt, "1");
+        List<GljtJfxx> res = gljtJfxxMapper.selectList(baseLqw);
+        if (StringUtils.isNotEmpty(gljtPlzj.getId())) {
+            List<GljtJfxxZjbf> zjbfList = gljtJfxxZjbfMapper.selectList(new LambdaQueryWrapper<GljtJfxxZjbf>()
+                    .select(GljtJfxxZjbf::getFfyf, GljtJfxxZjbf::getLrId).eq(GljtJfxxZjbf::getPcId, gljtPlzj.getId()));
+            for (GljtJfxxZjbf zjbf: zjbfList) {
+                res.removeIf(r -> StringUtils.equals(zjbf.getLrId(), r.getLrId()) && StringUtils.equals(zjbf.getFfyf(), r.getFfyf()));
+            }
+        }
+        res.forEach(EncryptionUtils::decryptForPlaintext);
+        return res;
+    }
+
+    @Override
+    public List<GljtJfxxZjbf> getJfxxZjbfList(GljtJfxxZjbf gljtJfxxZjbf) {
+        if (StringUtils.isEmpty(gljtJfxxZjbf.getPcId())) {
+            gljtJfxxZjbf.setPcId("0");
+        }
+        EncryptionUtils.encryptionForPlaintext(gljtJfxxZjbf);
+        List<GljtJfxxZjbf> res = gljtJfxxZjbfMapper.selectList(new LambdaQueryWrapper<>(gljtJfxxZjbf).orderByDesc(GljtJfxxZjbf::getCreateTimeStr));
+        res.forEach(r -> {
+            EncryptionUtils.decryptForPlaintext(r);
+            r.setXzqhName(SysDeptJlUtils.getDeptCache(r.getXzqh()));
+            r.setXzqhCode(sysDeptJlMapper.getXzqhCodes(r.getXzqh()));
+        });
+        return res;
+    }
+
+    @Override
+    public List<Map<String, Object>> getPcTj(GljtPlzj gljtPlzj) {
+        List<Map<String, Object>> res = new ArrayList<>();
+        if (StringUtils.isEmpty(gljtPlzj.getId())) throw new ServiceException("批次不能为空");
+        GljtPlzj pc = gljtPlzjMapper.selectById(gljtPlzj.getId());
+        if (ObjectUtils.isEmpty(pc)) throw new ServiceException("批次未查询到,请刷新后再次操作");
+        List<GljtJfxxZjbf> jfxxList = gljtJfxxZjbfMapper.selectList(new LambdaQueryWrapper<GljtJfxxZjbf>()
+                .select(GljtJfxxZjbf::getXzqh, GljtJfxxZjbf::getFfyf, GljtJfxxZjbf::getFfje)
+                .eq(GljtJfxxZjbf::getPcId, gljtPlzj.getId()));
+        if (CollectionUtils.isNotEmpty(jfxxList)) {
+            List<String> xzqhList = new ArrayList<>();
+            if (pc.getXzqh().contains(",")) {
+                xzqhList.addAll(Stream.of(pc.getXzqh().split(",")).collect(Collectors.toList()));
+            } else {
+                xzqhList.add(pc.getXzqh());
+            }
+            BigDecimal allsum = BigDecimal.ZERO;
+            long zrssum = 0;
+            for (String xzqh: xzqhList) {
+                SysDeptJl deptJl = sysDeptJlMapper.selectSysDeptJlByCode(xzqh);
+                if (ObjectUtils.isNotEmpty(deptJl)) {
+                    Map<String, Object> in = new LinkedHashMap<>();
+                    String xzqhName = deptJl.getName();
+                    String subCode = SubCodeUtil.code2Short(xzqh);
+                    List<GljtJfxxZjbf> jdjfList = jfxxList.stream().filter(j -> j.getXzqh().contains(subCode)).collect(Collectors.toList());
+                    BigDecimal all = jdjfList.stream().map(d -> new BigDecimal(d.getFfje()))
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    allsum = allsum.add(all);
+                    long zrs = jdjfList.size();
+                    zrssum += zrs;
+                    in.put("jdmc", xzqhName);
+                    in.put("zrs", zrs);
+                    in.put("zje", all.toString());
+                    res.add(in);
+                }
+            }
+            Map<String, Object> sum = new LinkedHashMap<>();
+            sum.put("jdmc", "总计");
+            sum.put("zrs", zrssum);
+            sum.put("zje", allsum.toString());
+            res.add(sum);
+        }
+        return res;
+    }
+}

+ 21 - 1
ruoyi-modules/mz-gljt/src/main/java/com/ruoyi/gljt/service/impl/GljtSqTfServiceImpl.java

@@ -13,6 +13,7 @@ import com.ruoyi.common.security.utils.EncryptionUtils;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.common.security.utils.SysDeptJlUtils;
 import com.ruoyi.gljt.domain.GljtJfxx;
+import com.ruoyi.gljt.domain.GljtQxpz;
 import com.ruoyi.gljt.domain.GljtSqLr;
 import com.ruoyi.gljt.domain.GljtSqTf;
 import com.ruoyi.gljt.mapper.GljtJfxxMapper;
@@ -126,10 +127,29 @@ public class GljtSqTfServiceImpl implements IGljtSqTfService
 
     @Override
     public List<String> tfList(GljtSqTf gljtSqTf) {
-        return gljtJfxxMapper.selectList(new LambdaQueryWrapper<GljtJfxx>().select(GljtJfxx::getFfyf)
+        List<String> res = gljtJfxxMapper.selectList(new LambdaQueryWrapper<GljtJfxx>().select(GljtJfxx::getFfyf)
                 .eq(GljtJfxx::getSqrZjhm, SecurityUtils.sm4encrypt_ECB(EncryptionUtils.key, gljtSqTf.getSqrZjhm()))
                 .eq(GljtJfxx::getStatus, "0").ne(GljtJfxx::getFflx, "2").ne(GljtJfxx::getLrzt, "2")
                 .orderByDesc(GljtJfxx::getFfyf)).stream().map(GljtJfxx::getFfyf).collect(Collectors.toList());
+        GljtQxpz pz = gljtSqUtils.getQxpz();
+        // 新增当发月份,计发描述
+        if (StringUtils.isEmpty(pz.getKz1())) {
+            if (!res.contains(DateUtils.dateTime().substring(0, 6))) {
+                res.add(0, DateUtils.dateTime().substring(0, 6));
+            }
+        } else {
+            String date = DateUtils.dateTimeNow().substring(6, 8);
+            if (Integer.parseInt(date) > Integer.parseInt(pz.getKz1())) {
+                // 下月
+                res.add(0, DateUtils.getNextMonth());
+            } else {
+                // 本月
+                if (!res.contains(DateUtils.dateTime().substring(0, 6))) {
+                    res.add(0, DateUtils.dateTime().substring(0, 6));
+                }
+            }
+        }
+        return res;
     }
 
     @Override

+ 7 - 0
ruoyi-modules/mz-gljt/src/main/resources/mapper/gljt/GljtJfxxMapper.xml

@@ -56,6 +56,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </insert>
 
+    <insert id="batchInsertZjbf">
+        insert into gljt_jfxx_zjbf( id, lr_id, pc_id, xzqh, sqr_xm, sqr_zjhm, khyh, yhzh, khmc, ffyf, ffje, ms, btbz, jkzk, lrzt, fflx, status, kz1, kz2, kz3, kz4, kz5, kz6, kz7, kz8, kz9 ) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            ( #{item.id}, #{item.lrId}, #{item.pcId}, #{item.xzqh}, #{item.sqrXm}, #{item.sqrZjhm}, #{item.khyh}, #{item.yhzh}, #{item.khmc}, #{item.ffyf}, #{item.ffje}, #{item.ms}, #{item.btbz}, #{item.jkzk}, #{item.lrzt}, #{item.fflx}, #{item.status}, #{item.kz1}, #{item.kz2}, #{item.kz3}, #{item.kz4}, #{item.kz5}, #{item.kz6}, #{item.kz7}, #{item.kz8}, #{item.kz9} )
+        </foreach>
+    </insert>
+
     <select id="selectVJfxx" parameterType="GljtSqLr" resultType="java.util.HashMap">
         select sqr_zjhm, ffje from v_gljt_lrtk
         <where>

+ 43 - 0
ruoyi-modules/mz-gljt/src/main/resources/mapper/gljt/GljtPlzjMapper.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.gljt.mapper.GljtPlzjMapper">
+    
+    <resultMap type="GljtPlzj" id="GljtPlzjResult">
+        <result property="id"    column="id"    />
+        <result property="xzqh"    column="xzqh"    />
+        <result property="pcmc"    column="pcmc"    />
+        <result property="dfyf"    column="dfyf"    />
+        <result property="startyf"    column="startyf"    />
+        <result property="endyf"    column="endyf"    />
+        <result property="btbz"    column="btbz"    />
+        <result property="jkzk"    column="jkzk"    />
+        <result property="lrzt"    column="lrzt"    />
+        <result property="zjrs"    column="zjrs"    />
+        <result property="zjje"    column="zjje"    />
+        <result property="zjyy"    column="zjyy"    />
+        <result property="zjr"    column="zjr"    />
+        <result property="zjrxm"    column="zjrxm"    />
+        <result property="zjdw"    column="zjdw"    />
+        <result property="zjsj"    column="zjsj"    />
+        <result property="status"    column="status"    />
+        <result property="createTimeStr"    column="create_time_str"    />
+        <result property="createUserId"    column="create_user_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createAreaCode"    column="create_area_code"    />
+        <result property="createUserType"    column="create_user_type"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="createTounit"    column="create_tounit"    />
+        <result property="createBmjsc"    column="create_bmjsc"    />
+        <result property="createQhjsc"    column="create_qhjsc"    />
+        <result property="createUnitName"    column="create_unit_name"    />
+        <result property="updateTimeStr"    column="update_time_str"    />
+        <result property="updateUserId"    column="update_user_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateUnit"    column="update_unit"    />
+        <result property="updateUnitName"    column="update_unit_name"    />
+        <result property="state"    column="state"    />
+    </resultMap>
+
+</mapper>

+ 44 - 0
ruoyi-ui-gljt/src/api/gljt/plzj.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询高龄津贴批量追加信息列表
+export function listPlzj(query) {
+  return request({
+    url: '/gljt/plzj/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询高龄津贴批量追加信息详细
+export function getPlzj(id) {
+  return request({
+    url: '/gljt/plzj/' + id,
+    method: 'get'
+  })
+}
+
+// 新增高龄津贴批量追加信息
+export function addPlzj(data) {
+  return request({
+    url: '/gljt/plzj',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改高龄津贴批量追加信息
+export function updatePlzj(data) {
+  return request({
+    url: '/gljt/plzj/edit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除高龄津贴批量追加信息
+export function delPlzj(id) {
+  return request({
+    url: '/gljt/plzj/remove/' + id,
+    method: 'get'
+  })
+}

+ 531 - 0
ruoyi-ui-gljt/src/views/gljt/plzj/index.vue

@@ -0,0 +1,531 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="批次名称" prop="pcmc">
+        <el-input
+          v-model="queryParams.pcmc"
+          placeholder="请输入批次名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="当发月份" prop="dfyf">
+        <el-input
+          v-model="queryParams.dfyf"
+          placeholder="请输入当发月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="计发开始月份" prop="startyf">
+        <el-input
+          v-model="queryParams.startyf"
+          placeholder="请输入计发开始月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="计发结束月份" prop="endyf">
+        <el-input
+          v-model="queryParams.endyf"
+          placeholder="请输入计发结束月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="补贴标准" prop="btbz">
+        <el-select v-model="queryParams.btbz" placeholder="请选择补贴标准" clearable>
+          <el-option
+            v-for="dict in dict.type.GL013"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="验活状态" prop="jkzk">
+        <el-select v-model="queryParams.jkzk" placeholder="请选择验活状态" clearable>
+          <el-option
+            v-for="dict in dict.type.GL010"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="老人状态" prop="lrzt">
+        <el-select v-model="queryParams.lrzt" placeholder="请选择老人状态" clearable>
+          <el-option
+            v-for="dict in dict.type.GL003"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="发放人数" prop="zjrs">
+        <number placeholder="发放人数" v-model.sync="queryParams.zjrs" :min="0" :max="100" />
+      </el-form-item>
+      <el-form-item label="发放金额" prop="zjje">
+        <number placeholder="发放金额" v-model.sync="queryParams.zjje" :min="0" :max="100" />
+      </el-form-item>
+      <el-form-item label="追加原因" prop="zjyy">
+        <el-input
+          v-model="queryParams.zjyy"
+          placeholder="请输入追加原因"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="追加原因" prop="zjr">
+        <el-input
+          v-model="queryParams.zjr"
+          placeholder="请输入追加原因"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="发放人姓名" prop="zjrxm">
+        <el-input
+          v-model="queryParams.zjrxm"
+          placeholder="请输入发放人姓名"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="发放单位" prop="zjdw">
+        <el-input
+          v-model="queryParams.zjdw"
+          placeholder="请输入发放单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="发放时间" prop="zjsj">
+          <el-date-picker clearable
+            v-model="queryParams.zjsj"
+            type="datetime"
+            value-format="yyyyMMddHHmmss"
+            placeholder="请选择发放时间">
+          </el-date-picker>
+      </el-form-item>
+      <el-form-item label="创建人行政区划编码" prop="createAreaCode">
+        <el-input
+          v-model="queryParams.createAreaCode"
+          placeholder="请输入创建人行政区划编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['gljt:plzj:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['gljt:plzj:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="plzjList" >
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{(queryParams.pageNum-1)*queryParams.pageSize + scope.$index + 1}}
+        </template>
+      </el-table-column>
+      <el-table-column label="行政区划" align="center" prop="xzqh" />
+      <el-table-column label="批次名称" align="center" prop="pcmc" />
+      <el-table-column label="当发月份" align="center" prop="dfyf" />
+      <el-table-column label="计发开始月份" align="center" prop="startyf" />
+      <el-table-column label="计发结束月份" align="center" prop="endyf" />
+      <el-table-column label="补贴标准" align="center" prop="btbz">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.GL013" :value="scope.row.btbz"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="验活状态" align="center" prop="jkzk">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.GL010" :value="scope.row.jkzk"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="老人状态" align="center" prop="lrzt">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.GL003" :value="scope.row.lrzt"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="发放人数" align="center" prop="zjrs" />
+      <el-table-column label="发放金额" align="center" prop="zjje" />
+      <el-table-column label="追加原因" align="center" prop="zjyy" />
+      <el-table-column label="追加原因" align="center" prop="zjr" />
+      <el-table-column label="发放人姓名" align="center" prop="zjrxm" />
+      <el-table-column label="发放单位" align="center" prop="zjdw" />
+      <el-table-column label="发放时间" align="center" prop="zjsj" width="180">
+        <template slot-scope="scope">
+            <span>{{ special(scope.row.zjsj,'time') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="数据状态" align="center" prop="status" />
+      <el-table-column label="创建人行政区划编码" align="center" prop="createAreaCode" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['gljt:plzj:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row,scope.$index)"
+            v-hasPermi="['gljt:plzj:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改高龄津贴批量追加信息对话框 -->
+    <el-dialog v-dialog-drag :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+
+        <el-form-item label="行政区划" prop="xzqh">
+          <el-input v-model="form.xzqh" type="textarea" maxlength="500" show-word-limit placeholder="请输入行政区划" />
+        </el-form-item>
+
+        <el-form-item label="批次名称" prop="pcmc">
+          <el-input v-model="form.pcmc" placeholder="请输入批次名称" />
+        </el-form-item>
+
+        <el-form-item label="当发月份" prop="dfyf">
+          <el-input v-model="form.dfyf" placeholder="请输入当发月份" />
+        </el-form-item>
+
+        <el-form-item label="计发开始月份" prop="startyf">
+          <el-input v-model="form.startyf" placeholder="请输入计发开始月份" />
+        </el-form-item>
+
+        <el-form-item label="计发结束月份" prop="endyf">
+          <el-input v-model="form.endyf" placeholder="请输入计发结束月份" />
+        </el-form-item>
+
+        <el-form-item label="补贴标准" prop="btbz">
+          <el-select v-model="form.btbz" placeholder="请选择补贴标准">
+            <el-option
+              v-for="dict in dict.type.GL013"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="验活状态" prop="jkzk">
+          <el-select v-model="form.jkzk" placeholder="请选择验活状态">
+            <el-option
+              v-for="dict in dict.type.GL010"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="老人状态" prop="lrzt">
+          <el-select v-model="form.lrzt" placeholder="请选择老人状态">
+            <el-option
+              v-for="dict in dict.type.GL003"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="发放人数" prop="zjrs">
+          <number placeholder="发放人数" v-model.sync="form.zjrs" :min="0" :max="100" />
+        </el-form-item>
+
+        <el-form-item label="发放金额" prop="zjje">
+          <number placeholder="发放金额" v-model.sync="form.zjje" :min="0" :max="10000000000" :precision="2"/>
+        </el-form-item>
+
+        <el-form-item label="追加原因" prop="zjyy">
+          <el-input v-model="form.zjyy" placeholder="请输入追加原因" />
+        </el-form-item>
+
+        <el-form-item label="追加原因" prop="zjr">
+          <el-input v-model="form.zjr" placeholder="请输入追加原因" />
+        </el-form-item>
+
+        <el-form-item label="发放人姓名" prop="zjrxm">
+          <el-input v-model="form.zjrxm" placeholder="请输入发放人姓名" />
+        </el-form-item>
+
+        <el-form-item label="发放单位" prop="zjdw">
+          <el-input v-model="form.zjdw" placeholder="请输入发放单位" />
+        </el-form-item>
+
+        <el-form-item label="发放时间" prop="zjsj">
+          <el-date-picker clearable
+            v-model="form.zjsj"
+            type="datetime"
+            value-format="yyyyMMddHHmmss"
+            placeholder="请选择发放时间">
+          </el-date-picker>
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" :loading="submitFormLoading">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import {addPlzj, delPlzj, getPlzj, listPlzj, updatePlzj} from "@/api/gljt/plzj";
+  import {chineseOne, idCard, Regular} from '@/utils/regular'
+
+  export default {
+  name: "Plzj",
+  dicts: ['GL003', 'GL013', 'GL010'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      submitFormLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 高龄津贴批量追加信息表格数据
+      plzjList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        xzqh: [
+          { required: true, message: "行政区划不能为空", trigger: "blur" },
+        ],
+        pcmc: [
+          { max: 100, message: '批次名称不能超过100个字符', trigger: 'blur'},
+        ],
+        dfyf: [
+          { max: 8, message: '当发月份不能超过8个字符', trigger: 'blur'},
+        ],
+        startyf: [
+          { max: 8, message: '计发开始月份不能超过8个字符', trigger: 'blur'},
+        ],
+        endyf: [
+          { max: 8, message: '计发结束月份不能超过8个字符', trigger: 'blur'},
+        ],
+        zjyy: [
+          { max: 100, message: '追加原因不能超过100个字符', trigger: 'blur'},
+        ],
+        zjr: [
+          { max: 32, message: '追加原因不能超过32个字符', trigger: 'blur'},
+        ],
+        zjrxm: [
+          { max: 32, message: '发放人姓名不能超过32个字符', trigger: 'blur'},
+          { validator: chineseOne, trigger: 'blur' },
+        ],
+        zjdw: [
+          { max: 32, message: '发放单位不能超过32个字符', trigger: 'blur'},
+        ],
+        status: [
+          { required: true, message: "数据状态不能为空", trigger: "blur" },
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询高龄津贴批量追加信息列表 */
+    getList() {
+      this.loading = true;
+      listPlzj(this.queryParams).then(response => {
+        this.plzjList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading =false;
+      this.form = {
+        id: null,
+        xzqh: null,
+        pcmc: null,
+        dfyf: null,
+        startyf: null,
+        endyf: null,
+        btbz: null,
+        jkzk: null,
+        lrzt: null,
+        zjrs: null,
+        zjje: null,
+        zjyy: null,
+        zjr: null,
+        zjrxm: null,
+        zjdw: null,
+        zjsj: null,
+        status: "0",
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加高龄津贴批量追加信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getPlzj(id).then(response => {
+        this.form = response.data;
+        /****** sks 需要改动的地方 start ******/
+        // this.copyForm=this.deepCopy(response.data)
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改高龄津贴批量追加信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.submitFormLoading = true;
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            // let formData=this.comparisonObject(this.form,this.copyForm);
+            // if(formData) {
+              updatePlzj(this.form).then(response => {
+                this.$modal.msgSuccess("修改成功");
+                this.open = false;
+                // this.plzjList=this.dataReplacement(this.plzjList,this.form.id,formData);
+                this.getList();
+              }).finally(()=>this.submitFormLoading =false);
+            // }else{
+            //   this.$modal.msgSuccess("修改成功");
+            //   this.open = false;
+            //   this.submitFormLoading = false;
+            // }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addPlzj(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+              /****** sks 需要改动的地方 start ******/
+              // if (this.queryParams.pageSize===this.plzjList.length)
+              // {
+              //   this.plzjList.pop();
+              // }
+              // this.plzjList.unshift({...this.form,id:response.data});
+              // this.total++;
+              /****** sks 需要改动的地方 end ******/
+            }).finally(()=>this.submitFormLoading =false);
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row,index) {
+      const ids = row.id || this.ids;
+      const xh = (this.queryParams.pageNum-1)*this.queryParams.pageSize + index + 1;
+      this.$modal.confirm('确认删除' + this.changeDelData(row,'id','ID值',xh) + '的记录?').then(function() {
+        return delPlzj(ids);
+      }).then(() => {
+        this.getList();
+        /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+        // this.plzjList.splice(index,1);
+        // if(this.plzjList.length===0)
+        // {
+        //   this.getList();
+        // }else {
+        //   this.total--;
+        // }
+        this.$modal.msgSuccess("删除成功");
+        /****** sks 需要改动的地方 end ******/
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('gljt/plzj/export', {
+        ...this.queryParams
+      }, `plzj_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>