diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartyMemberPayRecordDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartyMemberPayRecordDTO.java index 39c52821e5..82ae32717d 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartyMemberPayRecordDTO.java +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartyMemberPayRecordDTO.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Date; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.math.BigDecimal; /** @@ -25,31 +26,37 @@ public class IcPartyMemberPayRecordDTO implements Serializable { /** * 客户Id (customer.id) */ + @NotBlank(message = "客户Id不能为空") private String customerId; /** * 党员ID */ + @NotBlank(message = "党员ID不能为空") private String partyMemberId; /** * 缴费日期 */ + @NotBlank(message = "缴费日期不能为空") private String payDate; /** * 缴费金额 */ + @NotBlank(message = "缴费金额不能为空") private BigDecimal money; /** * 缴费开始时间 */ + @NotBlank(message = "缴费开始时间不能为空") private String startDate; /** * 缴费结束时间 */ + @NotBlank(message = "缴费结束时间不能为空") private String endDate; /** diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberPayRecordController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberPayRecordController.java index ab2b416169..f3b91d27dd 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberPayRecordController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberPayRecordController.java @@ -1,7 +1,9 @@ package com.epmet.modules.partymember.controller; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -35,7 +37,8 @@ public class IcPartyMemberPayRecordController { @RequestMapping("page") public Result> page(@RequestParam Map params){ - PageData page = icPartyMemberPayRecordService.page(params); +// PageData page = icPartyMemberPayRecordService.page(params); + PageData page = icPartyMemberPayRecordService.getPhrasePage(params); return new Result>().ok(page); } @@ -47,20 +50,20 @@ public class IcPartyMemberPayRecordController { @NoRepeatSubmit @PostMapping("save") - public Result save(@RequestBody IcPartyMemberPayRecordDTO dto){ + public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcPartyMemberPayRecordDTO dto){ + dto.setCustomerId(tokenDto.getCustomerId()); //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); - icPartyMemberPayRecordService.save(dto); - return new Result(); + return icPartyMemberPayRecordService.save(dto); } @NoRepeatSubmit @PostMapping("update") - public Result update(@RequestBody IcPartyMemberPayRecordDTO dto){ + public Result update(@LoginUser TokenDto tokenDto, @RequestBody IcPartyMemberPayRecordDTO dto){ + dto.setCustomerId(tokenDto.getCustomerId()); //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); - icPartyMemberPayRecordService.update(dto); - return new Result(); + return icPartyMemberPayRecordService.update(dto); } @PostMapping("delete") diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberPayRecordDetailController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberPayRecordDetailController.java index 18f08ffec9..c534ae9359 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberPayRecordDetailController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberPayRecordDetailController.java @@ -1,7 +1,9 @@ package com.epmet.modules.partymember.controller; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -37,7 +39,8 @@ public class IcPartyMemberPayRecordDetailController { private IcPartyMemberPayRecordDetailService icPartyMemberPayRecordDetailService; @RequestMapping("page") - public Result> page(@RequestParam Map params){ + public Result> page(@LoginUser TokenDto tokenDto, @RequestParam Map params){ + params.put("customerId",tokenDto.getCustomerId()); // PageData page = icPartyMemberPayRecordDetailService.page(params); PageData page = icPartyMemberPayRecordDetailService.getPhrasePage(params); return new Result>().ok(page); diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberPayRecordDao.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberPayRecordDao.java index 88c8c7bef5..4e1ab1d607 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberPayRecordDao.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberPayRecordDao.java @@ -2,8 +2,12 @@ package com.epmet.modules.partymember.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.modules.partymember.entity.IcPartyMemberPayRecordEntity; +import com.epmet.resi.partymember.dto.partymember.IcPartyMemberPayRecordDTO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; +import java.util.Map; + /** * 党员缴费记录表 * @@ -13,4 +17,6 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface IcPartyMemberPayRecordDao extends BaseDao { + List selectListInfo(Map params); + } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberPayRecordDetailDao.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberPayRecordDetailDao.java index 792ac1829f..3922fc9718 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberPayRecordDetailDao.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberPayRecordDetailDao.java @@ -5,6 +5,7 @@ import com.epmet.modules.partymember.entity.IcPartyMemberPayRecordDetailEntity; import com.epmet.resi.partymember.dto.partymember.IcPartyMemberPayRecordDetailDTO; import com.epmet.resi.partymember.dto.partymember.form.IcPartyMemberPayRecordDetailFormDTO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -20,4 +21,10 @@ public interface IcPartyMemberPayRecordDetailDao extends BaseDao selectListInfo(Map params); + List getpayedList(@Param("monthList") List monthList, + @Param("partyMemberId") String partyMemberId, + @Param("recordId") String recordId); + + void deletePayDetailByRecordId(@Param("recordId") String recordId); + } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberPayRecordService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberPayRecordService.java index ad0d691c7c..b5ec5fa0f0 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberPayRecordService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberPayRecordService.java @@ -2,8 +2,10 @@ package com.epmet.modules.partymember.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; import com.epmet.modules.partymember.entity.IcPartyMemberPayRecordEntity; import com.epmet.resi.partymember.dto.partymember.IcPartyMemberPayRecordDTO; +import com.epmet.resi.partymember.dto.partymember.IcPartyMemberPayRecordDetailDTO; import java.util.List; import java.util.Map; @@ -26,6 +28,13 @@ public interface IcPartyMemberPayRecordService extends BaseService page(Map params); + /** + * 分页条件查询 + * @param params + * @return + */ + PageData getPhrasePage(Map params); + /** * 默认查询 * @@ -54,7 +63,7 @@ public interface IcPartyMemberPayRecordService extends BaseService page(Map params) { IPage page = baseDao.selectPage( @@ -41,6 +54,23 @@ public class IcPartyMemberPayRecordServiceImpl extends BaseServiceImpl getPhrasePage(Map params) { + String partyMemberId = params.get("partyMemberId") == null ? "" : params.get("partyMemberId").toString(); + if(StringUtils.isBlank(partyMemberId)){ + throw new RenException("党员ID不能为空"); + } + IPage page = getPage(params); + List list = baseDao.selectListInfo(params); + return new PageData<>(list, page.getTotal()); + } + + @Override public List list(Map params) { List entityList = baseDao.selectList(getWrapper(params)); @@ -65,16 +95,50 @@ public class IcPartyMemberPayRecordServiceImpl extends BaseServiceImpl monthList = getMonthList(dto.getStartDate(),dto.getEndDate()); + + // 校验是否有月份已缴费 + List payedList = icPartyMemberPayRecordDetailDao.getpayedList(monthList,dto.getPartyMemberId(),""); + if(payedList.size() > 0){ + return new Result().error("存在已缴费月份,请重新录入"); + } + + // 保存党员缴费记录表信息 IcPartyMemberPayRecordEntity entity = ConvertUtils.sourceToTarget(dto, IcPartyMemberPayRecordEntity.class); insert(entity); + + // 保存党员缴费记录明细 + saveDetailInfo(monthList,entity); + + return new Result(); + } @Override @Transactional(rollbackFor = Exception.class) - public void update(IcPartyMemberPayRecordDTO dto) { + public Result update(IcPartyMemberPayRecordDTO dto) { + // 根据起始时间转月份列表 + List monthList = getMonthList(dto.getStartDate(),dto.getEndDate()); + + // 校验本次修改是否有月份已缴费(除该主键下的月份) + List payedList = icPartyMemberPayRecordDetailDao.getpayedList(monthList,dto.getPartyMemberId(),dto.getId()); + if(payedList.size() > 0){ + return new Result().error("存在已缴费月份,请重新录入"); + } + + // 更新党员缴费记录表信息 IcPartyMemberPayRecordEntity entity = ConvertUtils.sourceToTarget(dto, IcPartyMemberPayRecordEntity.class); updateById(entity); + + // 清空该记录表主键下的党员缴费记录明细 + icPartyMemberPayRecordDetailDao.deletePayDetailByRecordId(dto.getId()); + + // 保存党员缴费记录明细 + saveDetailInfo(monthList,entity); + + return new Result(); } @Override @@ -82,6 +146,67 @@ public class IcPartyMemberPayRecordServiceImpl extends BaseServiceImpl getMonthList(String startTime, String endTime){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + // 声明保存日期集合 + List list = new ArrayList(); + try { + // 转化成日期类型 + Date startDate = sdf.parse(startTime); + Date endDate = sdf.parse(endTime); + + //用Calendar 进行日期比较判断 + Calendar calendar = Calendar.getInstance(); + while (startDate.getTime()<=endDate.getTime()){ + // 把日期添加到集合 + list.add(sdf.format(startDate)); + // 设置日期 + calendar.setTime(startDate); + //把日期增加一天 + calendar.add(Calendar.MONTH, 1); + // 获取增加后的日期 + startDate=calendar.getTime(); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return list; + + } + + public void saveDetailInfo(List monthList,IcPartyMemberPayRecordEntity entity){ + // 组装党员缴费记录明细实体 + BigDecimal money = entity.getMoney(); + // 求本次缴费的月份平均缴费金额 + BigDecimal moneyDivide = money.divide(new BigDecimal(monthList.size()),2,BigDecimal.ROUND_HALF_UP); + List detailList = new ArrayList(); + for(int i = 0 ; i < monthList.size() ; i++){ + IcPartyMemberPayRecordDetailEntity detailEntity = new IcPartyMemberPayRecordDetailEntity(); + detailEntity.setCustomerId(entity.getCustomerId()); + detailEntity.setRecordId(entity.getId()); + detailEntity.setMoney(moneyDivide); + detailEntity.setPartyMemberId(entity.getPartyMemberId()); + String year = monthList.get(i).substring(0,4); + String month = monthList.get(i).substring(5,7); + detailEntity.setYear(year); + detailEntity.setMonth(month); + detailList.add(detailEntity); + } + + // 保存党员缴费记录明细表信息 + icPartyMemberPayRecordDetailService.insertBatch(detailList); } } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberPayRecordDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberPayRecordDao.xml index 7f5edbba30..7863205208 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberPayRecordDao.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberPayRecordDao.xml @@ -19,5 +19,13 @@ + + diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberPayRecordDetailDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberPayRecordDetailDao.xml index d88b4a9ae0..492d00ef1d 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberPayRecordDetailDao.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberPayRecordDetailDao.xml @@ -33,6 +33,7 @@ left join ic_party_org org on org.ID = pm.SSZB and org.DEL_FLAG = 0 where prd.DEL_FLAG = 0 and pm.DEL_FLAG = 0 + and prd.CUSTOMER_ID = #{customerId} and pm.NAME like concat('%',#{name},'%') @@ -58,6 +59,27 @@ group by prd.PARTY_MEMBER_ID order by pm.SSZB,pm.CREATED_TIME desc + + + + update ic_party_member_pay_record_detail set DEL_FLAG = 1 + where RECORD_ID = #{recordId} +