From 584ebbc5629b6f8703b3a94d90b4e8bb139ec821 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 10 Jul 2023 11:11:52 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/sys/constant/SalarySysConstant.java | 5 +++++ src/com/engine/salary/sys/entity/vo/AppSettingVO.java | 5 +++++ .../sys/service/impl/SalarySysConfServiceImpl.java | 9 +++++++++ .../engine/salary/web/SalarySystemConfigController.java | 1 + 4 files changed, 20 insertions(+) diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index 57f732169..adac41923 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -75,4 +75,9 @@ public class SalarySysConstant { * 删除薪资档案 */ public static final String SALARY_ARCHIVE_DELETE = "salaryArchiveDelete"; + + /** + * 工资单反馈 + */ + public static final String SALARY_SEND_FEEDBACK = "SALARY_SEND_FEEDBACK"; } diff --git a/src/com/engine/salary/sys/entity/vo/AppSettingVO.java b/src/com/engine/salary/sys/entity/vo/AppSettingVO.java index 6fc3e8026..a330ce08f 100644 --- a/src/com/engine/salary/sys/entity/vo/AppSettingVO.java +++ b/src/com/engine/salary/sys/entity/vo/AppSettingVO.java @@ -75,4 +75,9 @@ public class AppSettingVO { */ private String salaryArchiveDelete; + /** + * 工资单反馈 + */ + private String salarySendFeedback; + } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index 012f92c5d..8e25225bb 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -504,6 +504,15 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe appSettingVO.setSalaryArchiveDelete(salaryArchiveDeletePO.getConfValue()); } + + SalarySysConfPO salarySendFeedbackPO = salarySysConfMap.get(SALARY_SEND_FEEDBACK); + if (salarySendFeedbackPO == null ) { + // 是否开启工资单反馈,默认不开启 + appSettingVO.setSalarySendFeedback("0"); + } else { + appSettingVO.setSalarySendFeedback(salarySendFeedbackPO.getConfValue()); + } + //默认加密开启 if (StringUtils.isEmpty(appSettingVO.getIsOpenEncrypt())) { appSettingVO.setIsOpenEncrypt(OpenEnum.OPEN.getValue()); diff --git a/src/com/engine/salary/web/SalarySystemConfigController.java b/src/com/engine/salary/web/SalarySystemConfigController.java index 1f3e44cae..7ecc6f81e 100644 --- a/src/com/engine/salary/web/SalarySystemConfigController.java +++ b/src/com/engine/salary/web/SalarySystemConfigController.java @@ -63,6 +63,7 @@ public class SalarySystemConfigController { return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::operateTaxDeclarationFunction, TaxDeclarationFunctionEnum.parseByValue(param.getOperateTaxDeclaration())); } + /** * 获取系统配置 * From be895829c20dae75f9cb17e8985105015821d245 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 11 Jul 2023 15:29:13 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalarySendInfoListDTO.java | 6 ++ .../salaryBill/po/SalarySendInfoPO.java | 15 ++++ .../salarybill/BillConfimStatusEnum.java | 70 +++++++++++++++++++ .../enums/salarybill/BillReadStatusEnum.java | 70 +++++++++++++++++++ .../salarybill/SalarySendInfoMapper.xml | 14 +++- .../salary/service/SalaryBillService.java | 6 ++ .../impl/SalaryArchiveServiceImpl.java | 6 +- .../service/impl/SalaryBillServiceImpl.java | 13 ++++ .../service/impl/SalarySendServiceImpl.java | 41 ++++++++++- .../sys/service/SalarySysConfService.java | 6 ++ .../impl/SalarySysConfServiceImpl.java | 9 ++- .../salary/web/SalaryBillController.java | 24 +++++++ .../web/SalarySystemConfigController.java | 29 ++++++++ .../salary/wrapper/SalarySendWrapper.java | 9 ++- .../wrapper/SalarySystemConfigWrapper.java | 4 ++ 15 files changed, 312 insertions(+), 10 deletions(-) create mode 100644 src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java create mode 100644 src/com/engine/salary/enums/salarybill/BillReadStatusEnum.java diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java index 6f976855a..ed7626794 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java @@ -48,6 +48,12 @@ public class SalarySendInfoListDTO { @TableTitle(title = "发送状态", dataIndex = "sendStatus", key = "sendStatus") private String sendStatus; + @TableTitle(title = "查看状态", dataIndex = "billReadStatus", key = "billReadStatus") + private String billReadStatus; + + @TableTitle(title = "确认状态", dataIndex = "billConfirmStatus", key = "billConfirmStatus") + private String billConfirmStatus; + private String email; private Long salaryAcctRecordId; /** diff --git a/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java b/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java index 5efa58c05..b14d9cd6a 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java @@ -52,6 +52,21 @@ public class SalarySendInfoPO { */ private Integer sendStatus; + /** + * 查看状态。0:未查看、1:已查看 + */ + private Integer billReadStatus; + + /** + * 确认状态 0:未确认、1:已确认 + */ + private Integer billConfirmStatus; + + /** + * 操作发送工资单人员id + */ + private Long sendEmployeeId; + /** * 发送时间 */ diff --git a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java new file mode 100644 index 000000000..c9df6d20e --- /dev/null +++ b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java @@ -0,0 +1,70 @@ +package com.engine.salary.enums.salarybill; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Arrays; + +/** + * @ClassName BillReadStatusEnum + * @author Harryxzy + * @date 2023/7/10 17:13 + * @description 工资单确认 + */ +public enum BillConfimStatusEnum implements BaseEnum { + + UNCONFIRMED(0, "未确认", 93286), + CONFIRMED(1, "已确认", 93212); + + private int value; + + private String defaultLabel; + + private int labelId; + + BillConfimStatusEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static String getDefaultLabelByValue(Integer value) { + if (value == null) { + return ""; + } + BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values(); + for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + return enumAry[i].getDefaultLabel(); + } + } + return ""; + } + + public static String getNameByValue(Integer value) { + if (value == null) { + return ""; + } + BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values(); + for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + return enumAry[i].name(); + } + } + return ""; + } +} diff --git a/src/com/engine/salary/enums/salarybill/BillReadStatusEnum.java b/src/com/engine/salary/enums/salarybill/BillReadStatusEnum.java new file mode 100644 index 000000000..09fd47107 --- /dev/null +++ b/src/com/engine/salary/enums/salarybill/BillReadStatusEnum.java @@ -0,0 +1,70 @@ +package com.engine.salary.enums.salarybill; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Arrays; + +/** + * @ClassName BillReadStatusEnum + * @author Harryxzy + * @date 2023/7/10 17:13 + * @description 工资单查看 + */ +public enum BillReadStatusEnum implements BaseEnum { + + UNREAD(0, "未查看", 93286), + READED(1, "已查看", 93212); + + private int value; + + private String defaultLabel; + + private int labelId; + + BillReadStatusEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static String getDefaultLabelByValue(Integer value) { + if (value == null) { + return ""; + } + BillReadStatusEnum[] enumAry = BillReadStatusEnum.values(); + for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + return enumAry[i].getDefaultLabel(); + } + } + return ""; + } + + public static String getNameByValue(Integer value) { + if (value == null) { + return ""; + } + BillReadStatusEnum[] enumAry = BillReadStatusEnum.values(); + for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + return enumAry[i].name(); + } + } + return ""; + } +} diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index 0b96d4c22..0ef304bee 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -36,6 +36,9 @@ , t.delete_type , t.tenant_key , t.salary_acct_type + , t.bill_read_status + , t.bill_confirm_status + , t.send_employee_id update hrsa_salary_send_info @@ -168,6 +171,8 @@ t1.send_status, t1.employee_id, t1.salary_month, + t1.bill_read_status as billReadStatus, + t1.bill_confirm_status as billConfirmStatus, e.email @@ -709,9 +714,6 @@ salary_month=#{salaryMonth}, - - use_type=#{useType}, - salary_acct_record_id=#{salaryAcctRecordId}, @@ -745,6 +747,12 @@ tenant_key=#{tenantKey}, + + bill_read_status=#{billReadStatus}, + + + bill_confirm_status=#{billConfirmStatus}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/SalaryBillService.java b/src/com/engine/salary/service/SalaryBillService.java index 9a37671a0..23bd54597 100644 --- a/src/com/engine/salary/service/SalaryBillService.java +++ b/src/com/engine/salary/service/SalaryBillService.java @@ -30,6 +30,12 @@ public interface SalaryBillService { */ List> getSendInfoList(Long sendId, List ids); + /** + * 确认工资单 + * @param salaryInfoId + */ + void confirmSalaryBill(Long salaryInfoId); + /** * 工资单撤回 * diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index c92a45063..b6c786fc4 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -313,9 +313,9 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe throw new SalaryRunTimeException("薪资档案参数为空!"); } SalarySysConfPO canDelete = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_ARCHIVE_DELETE); -// if(Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(),"0") ){ -// throw new SalaryRunTimeException("不允许删除薪资档案,请先开启删除档案规则配置!"); -// } + if(Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(),"0") ){ + throw new SalaryRunTimeException("不允许删除薪资档案,请先开启删除档案规则配置!"); + } List salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().ids(salaryArchiveIds).build()); //查询当前登录人员管理的个税扣缴义务人 diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index 8700fb87f..97b3a6e28 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -24,6 +24,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salarybill.BillConfimStatusEnum; import com.engine.salary.enums.salarybill.MessageChannelEnum; import com.engine.salary.enums.salarybill.SalarySendStatusEnum; import com.engine.salary.enums.salarybill.SalaryTemplateWhetherEnum; @@ -42,6 +43,7 @@ import com.weaver.util.threadPool.entity.LocalRunnable; import lombok.extern.slf4j.Slf4j; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; @@ -426,6 +428,17 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService .buildDetailList(list, salaryAcctEmployees, salaryAcctResultValues); } + @Override + public void confirmSalaryBill(Long salaryInfoId) { + SalarySendInfoPO sendInfoPO = getSalarySendInfoMapper().getById(salaryInfoId); + if(ObjectUtils.isEmpty(sendInfoPO)){ + throw new SalaryRunTimeException("工资单不存在或已被删除!"); + } + sendInfoPO.setBillConfirmStatus(BillConfimStatusEnum.CONFIRMED.getValue()); + sendInfoPO.setUpdateTime(new Date()); + getSalarySendInfoMapper().updateIgnoreNull(sendInfoPO); + } + public List> getSendInfoList(Long sendId, List ids) { SalarySendPO salarySend = getSalarySendMapper().getById(sendId); diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 4c5645fdc..6d9c2d9e5 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1,7 +1,7 @@ package com.engine.salary.service.impl; -import com.alibaba.fastjson.JSON; import cn.hutool.core.lang.Validator; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.bean.MessageBean; @@ -37,6 +37,8 @@ import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum; +import com.engine.salary.enums.salarybill.BillConfimStatusEnum; +import com.engine.salary.enums.salarybill.BillReadStatusEnum; import com.engine.salary.enums.salarybill.SalarySendStatusEnum; import com.engine.salary.enums.salarybill.SalaryTemplateReplenishRuleEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; @@ -48,6 +50,8 @@ import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; import com.engine.salary.mapper.salarybill.SalarySendInfoMapper; import com.engine.salary.mapper.salarybill.SalarySendMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.constant.SalarySysConstant; +import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; @@ -63,12 +67,14 @@ import com.google.common.collect.Lists; import dm.jdbc.util.IdGenerator; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import weaver.common.MessageUtil; +import weaver.general.BaseBean; import weaver.hrm.User; import weaver.hrm.company.SubCompanyComInfo; import weaver.hrm.resource.ResourceComInfo; @@ -475,6 +481,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "当前账号无法查看此工资单")); } SalarySendInfoPO salarySendInfo = salarySendInfos.get(0); + // 更新查看状态 + if(salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0 ){ + salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); + salarySendInfo.setUpdateTime(new Date()); + getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); + } // List salarySends = new LambdaQueryChainWrapper<>(mapper) // .eq(SalarySendPO::getDeleteType, 0) // .eq(SalarySendPO::getTenantKey, currentTenantKey) @@ -598,6 +610,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService handleSalaryWatermark(salaryTemplate, salarySendInfo, currentEmployeeId); map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); + // 工资单发送人、是否已确认 + map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); + map.put("sendEmployeeId", salarySendInfo.getSalarySendId()); + BaseBean baseBean = new BaseBean(); + String workFlowId = baseBean.getPropValue("hrmSalary", "feedbackWorkflowId"); + map.put("feedbackWorkflowId",workFlowId); return map; } @@ -643,8 +661,27 @@ public class SalarySendServiceImpl extends Service implements SalarySendService queryParam.setOrderRule(orderRule); List page = salarySendInfoMapper.list(queryParam); - return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), + PageInfo pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), page, SalarySendInfoListDTO.class); + SalarySysConfPO needFeedBack = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK); + if(ObjectUtils.isNotEmpty(needFeedBack) && StringUtils.equals(needFeedBack.getConfValue(),"1")){ + // 默认为空时,未读未确认 + pageInfo.getList().stream().forEach(dto -> { + if(StringUtils.isBlank(((SalarySendInfoListDTO)dto).getBillReadStatus() )){ + ((SalarySendInfoListDTO) dto).setBillReadStatus(BillReadStatusEnum.UNREAD.getDefaultLabel()); + }else{ + ((SalarySendInfoListDTO) dto).setBillReadStatus( + BillReadStatusEnum.getDefaultLabelByValue( Integer.valueOf(((SalarySendInfoListDTO)dto).getBillReadStatus()) )); + } + if(StringUtils.isBlank(((SalarySendInfoListDTO)dto).getBillConfirmStatus() )){ + ((SalarySendInfoListDTO) dto).setBillConfirmStatus(BillConfimStatusEnum.UNCONFIRMED.getDefaultLabel()); + }else { + ((SalarySendInfoListDTO) dto).setBillConfirmStatus( + BillConfimStatusEnum.getDefaultLabelByValue( Integer.valueOf(((SalarySendInfoListDTO)dto).getBillConfirmStatus()) )); + } + }); + } + return pageInfo; } @Override diff --git a/src/com/engine/salary/sys/service/SalarySysConfService.java b/src/com/engine/salary/sys/service/SalarySysConfService.java index 5f0414164..2e62f7401 100644 --- a/src/com/engine/salary/sys/service/SalarySysConfService.java +++ b/src/com/engine/salary/sys/service/SalarySysConfService.java @@ -108,4 +108,10 @@ public interface SalarySysConfService { * @param setting */ void saveArchiveDelete(String setting); + + /** + * 保存工资单反馈 + * @param param + */ + void saveSalarySendFeedback(SalarySysConfPO param); } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index e6746462c..bf3a6afd4 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -421,7 +421,6 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (StringUtils.isBlank(param.getConfValue())) { throw new SalaryRunTimeException("无效规则!"); } - saveSettingByType(param.getConfValue(), WITHDRAW_TAX_DECLARATION, "个税申报撤回", "basic"); } @@ -433,6 +432,14 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe saveSettingByType(setting, SALARY_ARCHIVE_DELETE, "薪资、社保福利档案删除规则", "basic"); } + @Override + public void saveSalarySendFeedback(SalarySysConfPO param) { + if (StringUtils.isBlank(param.getConfValue())) { + throw new SalaryRunTimeException("无效规则!"); + } + saveSettingByType(param.getConfValue(), SALARY_SEND_FEEDBACK, "工资单反馈", "basic"); + } + /** * 保存或者修改应用设置 * diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 785d8aa88..080e982d7 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -545,6 +545,30 @@ public class SalaryBillController { } return new ResponseResult>(user).run(getSalarySendWrapper(user)::mySalaryBill, salaryInfoId); } + + /** + * 确认工资单 + * + * @param salaryInfoId + * @return + */ + @GET + @Path("/confirmSalaryBill") + @Produces(MediaType.APPLICATION_JSON) + public String confirmSalaryBill(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryInfoId") Long salaryInfoId) { + User user = null; + String recipient = request.getParameter("recipient"); + String em_auth_userid = request.getParameter("em_auth_userid"); + log.info("salary recipient: {} em_auth_userid: {}", recipient, em_auth_userid); + if (StringUtils.isNotBlank(recipient) && NumberUtils.isCreatable(recipient)) { + user = new User(Integer.parseInt(recipient)); + } else if (StringUtils.isNotBlank(em_auth_userid) && NumberUtils.isCreatable(em_auth_userid)) { + user = new User(Integer.parseInt(em_auth_userid)); + } else { + user = HrmUserVarify.getUser(request, response); + } + return new ResponseResult>(user).run(getSalarySendWrapper(user)::confirmSalaryBill, salaryInfoId); + } /******** 工资单发放 end ***********************************************************************************************/ /** diff --git a/src/com/engine/salary/web/SalarySystemConfigController.java b/src/com/engine/salary/web/SalarySystemConfigController.java index 4d070abac..9614ef61a 100644 --- a/src/com/engine/salary/web/SalarySystemConfigController.java +++ b/src/com/engine/salary/web/SalarySystemConfigController.java @@ -181,6 +181,13 @@ public class SalarySystemConfigController { return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::saveMatchEmployeeModeRule, param); } + /** + * 薪资核算人员匹配规则 + * @param request + * @param response + * @param param + * @return + */ @POST @Path("/saveSalaryAcctEmployeeRule") @Produces(MediaType.APPLICATION_JSON) @@ -189,6 +196,28 @@ public class SalarySystemConfigController { return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::saveSalaryAcctEmployeeRule, param.getRule()); } + /** + * 工资单反馈 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/saveSalarySendFeedback") + @Produces(MediaType.APPLICATION_JSON) + public String saveSalarySendFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySysConfPO param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::saveSalarySendFeedback, param); + } + + /** + * 撤回个税申报 + * @param request + * @param response + * @param param + * @return + */ @POST @Path("/saveWithDrawTaxDeclaration") @Produces(MediaType.APPLICATION_JSON) diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 1613de006..5fbf57805 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -1,5 +1,6 @@ package com.engine.salary.wrapper; +import cn.hutool.core.util.ObjectUtil; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.api.browser.bean.SearchConditionOption; @@ -327,7 +328,6 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy PageInfo pageInfo = getSalarySendService(user).salarySendInfoListPage(queryParam); - return pageInfo; } @@ -691,6 +691,13 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy return PayrollCheckTypeEnum.parseByValue(conf.getConfValue()); } + + public void confirmSalaryBill(Long salaryInfoId) { + if(ObjectUtil.isNull(salaryInfoId)){ + throw new SalaryRunTimeException("工资单id不能为空!"); + } + getSalaryBillService(user).confirmSalaryBill(salaryInfoId); + } } diff --git a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java index 16ec870b5..7e93e06bb 100644 --- a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java @@ -151,4 +151,8 @@ public class SalarySystemConfigWrapper extends Service { public void saveArchiveDelete(String setting) { getSalarySysConfService(user).saveArchiveDelete(setting); } + + public void saveSalarySendFeedback(SalarySysConfPO param) { + getSalarySysConfService(user).saveSalarySendFeedback(param); + } } From 5dc2dadd4642c2f628d573be983577a6424c5c67 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 11 Jul 2023 17:28:15 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/BillConfimStatusEnum.java | 17 ++--- .../salarybill/SalarySendInfoMapper.java | 6 ++ .../salarybill/SalarySendInfoMapper.xml | 19 ++++++ .../salary/service/SalarySendService.java | 13 ++++ .../service/impl/SalarySendServiceImpl.java | 47 ++++++++------ .../sys/constant/SalarySysConstant.java | 6 ++ .../timer/AutoConfirmSalaryBillCronJob.java | 63 +++++++++++++++++++ 7 files changed, 145 insertions(+), 26 deletions(-) create mode 100644 src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java diff --git a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java index c9df6d20e..112c86034 100644 --- a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java +++ b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java @@ -5,21 +5,22 @@ import com.engine.salary.enums.BaseEnum; import java.util.Arrays; /** - * @ClassName BillReadStatusEnum + * @ClassName BillConfimStatusEnum * @author Harryxzy - * @date 2023/7/10 17:13 + * @date 2023/7/10 17:03 * @description 工资单确认 */ public enum BillConfimStatusEnum implements BaseEnum { UNCONFIRMED(0, "未确认", 93286), - CONFIRMED(1, "已确认", 93212); + CONFIRMED(1, "已确认", 93212), + AUTOCONFIRMED(3, "自动确认", 93212); - private int value; + private final int value; - private String defaultLabel; + private final String defaultLabel; - private int labelId; + private final int labelId; BillConfimStatusEnum(int value, String defaultLabel, int labelId) { this.value = value; @@ -48,7 +49,7 @@ public enum BillConfimStatusEnum implements BaseEnum { } BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values(); for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ - if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + if (enumAry[i].getValue().equals(value)) { return enumAry[i].getDefaultLabel(); } } @@ -61,7 +62,7 @@ public enum BillConfimStatusEnum implements BaseEnum { } BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values(); for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ - if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + if (enumAry[i].getValue().equals(value)) { return enumAry[i].name(); } } diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java index 140c47376..93f184d84 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java @@ -101,4 +101,10 @@ public interface SalarySendInfoMapper { void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordId") Collection ids); List getNeedSendInfoList(@Param("salarySendIds") List salarySendIds); + + /** + * 自动确认工资单 + * @param needAutoIds + */ + void autoConfirmSalaryBill(@Param("ids") List needAutoIds); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index 0ef304bee..c3f5e23bd 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -687,6 +687,12 @@ AND tenant_key = #{tenantKey} + + AND bill_confirm_status = #{billConfirmStatus} + + + AND bill_read_status = #{billReadStatus} + ORDER BY id DESC + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryBillBaseSetService.java b/src/com/engine/salary/service/SalaryBillBaseSetService.java index 42a2b5f45..4ea8ef0a6 100644 --- a/src/com/engine/salary/service/SalaryBillBaseSetService.java +++ b/src/com/engine/salary/service/SalaryBillBaseSetService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.salaryBill.dto.SalaryBillAckFeedbackDTO; import com.engine.salary.entity.salaryBill.dto.SalaryBillWatermarkDTO; import com.engine.salary.entity.salaryBill.param.SalaryBaseSetSaveParam; @@ -28,7 +29,7 @@ public interface SalaryBillBaseSetService { // SalaryBillAckFeedbackDTO getAckFeedbackSetting(); /** - * 保存工资单水印设置 + * 保存工资单模板基础设置 * * @param saveParam * @return @@ -41,4 +42,10 @@ public interface SalaryBillBaseSetService { * @return */ String previewWaterMark(Map wmSetting); + + /** + * 获取默认工资单确认反馈设置 + * @return + */ + SalaryBillAckFeedbackDTO getDefaultAckFeedbackSetting(); } diff --git a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java index 28d96c728..476717d7c 100644 --- a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java @@ -6,6 +6,7 @@ import com.engine.core.impl.Service; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryBill.bo.SalaryBillBO; +import com.engine.salary.entity.salaryBill.dto.SalaryBillAckFeedbackDTO; import com.engine.salary.entity.salaryBill.dto.SalaryBillWatermarkDTO; import com.engine.salary.entity.salaryBill.param.SalaryBaseSetSaveParam; import com.engine.salary.entity.salaryBill.po.SalaryBillWatermarkPO; @@ -13,7 +14,12 @@ import com.engine.salary.enums.salarybill.SalaryTemplateWatermarkTypeEnum; import com.engine.salary.service.SalaryBillBaseSetService; import com.engine.salary.service.SalaryBillWatermarkService; import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.sys.constant.SalarySysConstant; +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections.CollectionUtils; @@ -21,10 +27,9 @@ import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; + +import static com.engine.salary.sys.constant.SalarySysConstant.*; /** * @Description: 工资单水印 @@ -42,6 +47,10 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + public SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + @Override public SalaryBillWatermarkDTO getWatermarkSetting() { List list = getSalaryBillWatermarkService(user).listAll(); @@ -96,23 +105,16 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB .build()); -// // 工资单确认和反馈 =========================================================== -// new LambdaUpdateChainWrapper<>(salaryBillAckFeedbackMapper) -// .eq(SalaryBillAckFeedbackPO::getDeleteType, 0) -// .eq(SalaryBillAckFeedbackPO::getTenantKey, tenantKey) -// .set(SalaryBillAckFeedbackPO::getDeleteType, 3) -// .update(); -// salaryBillAckFeedbackMapper.insert(SalaryBillAckFeedbackPO.builder() -// .id(IdGenerator.generate()) -// .ackStatus(saveParam.getAckStatus() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO) -// .feedbackStatus(saveParam.getFeedbackStatus() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO) -// .createTime(now) -// .updateTime(now) -// .creator(employeeId) -// .deleteType(NumberUtils.INTEGER_ZERO) -// .tenantKey(tenantKey) -// .build()); - + // 工资单确认和反馈 =========================================================== + SalaryBillAckFeedbackDTO ackFeedbackSetting = saveParam.getAckFeedbackSetting(); + // 1.保存确认反馈开关状态 + getSalarySysConfService(user).saveSettingByType(ackFeedbackSetting.getAckStatus(), SALARY_SEND_FEEDBACK, "工资单确认反馈状态", "billSend"); + if(StringUtils.equals(ackFeedbackSetting.getAckStatus(),"1")){ + // 2.保存反馈地址 + getSalarySysConfService(user).saveSettingByType(ackFeedbackSetting.getFeedBackUrl(), SALARY_FEEDBACK_URL, "工资单反馈地址", "billSend"); + // 3.保存自动确认时间 + getSalarySysConfService(user).saveSettingByType(ackFeedbackSetting.getAutoAckDays().toString(), SALARY_AUTO_ACK_DAYS, "工资单反馈自动确认", "billSend"); + } return StringUtils.EMPTY; } @@ -126,4 +128,29 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(Long.valueOf(user.getUID())); return SalaryBillBO.handleWmText(wmText, wmTextFieldIds, simpleEmployee); } + + @Override + public SalaryBillAckFeedbackDTO getDefaultAckFeedbackSetting() { + // 获取反馈开启状态、自动确认时长、反馈地址 + List codes = Arrays.asList(SalarySysConstant.SALARY_SEND_FEEDBACK, SalarySysConstant.SALARY_AUTO_ACK_DAYS, SalarySysConstant.SALARY_FEEDBACK_URL); + List sysConfList= getSalarySysConfService(user).getListByCodes(codes); + Map sysConfMap = SalaryEntityUtil.convert2Map(sysConfList, SalarySysConfPO::getConfKey, SalarySysConfPO::getConfValue); + + SalaryBillAckFeedbackDTO defaultAckFeedBackDTO = SalaryBillAckFeedbackDTO.builder().build(); + String ackStatus = sysConfMap.getOrDefault(SalarySysConstant.SALARY_SEND_FEEDBACK, "0"); + if (StringUtils.equals(ackStatus,"0")) { + // 未开启工资单确认 + defaultAckFeedBackDTO.setAckStatus("0"); + defaultAckFeedBackDTO.setAutoAckDays(0); + return defaultAckFeedBackDTO; + } + defaultAckFeedBackDTO.setAckStatus(ackStatus); + // 获取超时自动确认时间 + Integer autoAckDays = Integer.valueOf(sysConfMap.getOrDefault(SalarySysConstant.SALARY_AUTO_ACK_DAYS, "7")); + defaultAckFeedBackDTO.setAutoAckDays(autoAckDays); + // 反馈地址 + String feedbackUrl = sysConfMap.getOrDefault(SalarySysConstant.SALARY_FEEDBACK_URL, ""); + defaultAckFeedBackDTO.setFeedBackUrl(feedbackUrl); + return defaultAckFeedBackDTO; + } } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index fca545078..b6d49d941 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -82,13 +82,17 @@ public class SalarySysConstant { public static final String SALARY_ARCHIVE_DELETE = "salaryArchiveDelete"; /** - * 工资单反馈 + * 工资单确认反馈状态 */ public static final String SALARY_SEND_FEEDBACK = "SALARY_SEND_FEEDBACK"; /** * 工资单反馈自动确认 */ - public static final String SALARY_AUTO_CONFIRM = "SALARY_AUTO_CONFIRM"; + public static final String SALARY_AUTO_ACK_DAYS = "SALARY_AUTO_ACK_DAYS"; + /** + * 工资单反馈地址 + */ + public static final String SALARY_FEEDBACK_URL = "SALARY_FEEDBACK_URL"; } diff --git a/src/com/engine/salary/sys/service/SalarySysConfService.java b/src/com/engine/salary/sys/service/SalarySysConfService.java index 2e62f7401..e92637840 100644 --- a/src/com/engine/salary/sys/service/SalarySysConfService.java +++ b/src/com/engine/salary/sys/service/SalarySysConfService.java @@ -114,4 +114,20 @@ public interface SalarySysConfService { * @param param */ void saveSalarySendFeedback(SalarySysConfPO param); + + /** + * 根据code返回list + * @param codes + * @return + */ + List getListByCodes(List codes); + + /** + * 保存或者修改应用设置 + * @param confValue + * @param confKey + * @param title + * @param app + */ + void saveSettingByType(String confValue, String confKey, String title, String app); } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index bf3a6afd4..eb0001d40 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -440,6 +440,14 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe saveSettingByType(param.getConfValue(), SALARY_SEND_FEEDBACK, "工资单反馈", "basic"); } + @Override + public List getListByCodes(List codes) { + if(CollectionUtils.isEmpty(codes)){ + return Collections.emptyList(); + } + return getSalarySysConfMapper().getListByCodes(codes); + } + /** * 保存或者修改应用设置 * @@ -448,7 +456,8 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe * @param title * @param app */ - private void saveSettingByType(String confValue, String confKey, String title, String app) { + @Override + public void saveSettingByType(String confValue, String confKey, String title, String app) { SalarySysConfPO po = getOneByCode(confKey); if (po == null) { SalarySysConfPO build = SalarySysConfPO.builder() diff --git a/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java b/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java index af2128b8f..79abafde8 100644 --- a/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java +++ b/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java @@ -45,7 +45,7 @@ public class AutoConfirmSalaryBillCronJob extends BaseCronJob { if(ObjectUtils.isEmpty(feedbackPO) || StringUtils.equals(feedbackPO.getConfValue(), "0")){ return; } - SalarySysConfPO salaryAutoConfirmPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_AUTO_CONFIRM); + SalarySysConfPO salaryAutoConfirmPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_AUTO_ACK_DAYS); Long timeOutDays = ObjectUtils.isNotEmpty(salaryAutoConfirmPO) && NumberUtils.isCreatable(salaryAutoConfirmPO.getConfValue()) ? Long.valueOf(salaryAutoConfirmPO.getConfValue()) : 7L; LocalDateTime now = LocalDateTime.now(); diff --git a/src/com/engine/salary/wrapper/SalaryBillBaseSetWrapper.java b/src/com/engine/salary/wrapper/SalaryBillBaseSetWrapper.java index 033dbd18e..63f0b3d37 100644 --- a/src/com/engine/salary/wrapper/SalaryBillBaseSetWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryBillBaseSetWrapper.java @@ -3,6 +3,7 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryBill.dto.SalaryBaseSetFormDTO; +import com.engine.salary.entity.salaryBill.dto.SalaryBillAckFeedbackDTO; import com.engine.salary.entity.salaryBill.dto.SalaryBillWatermarkDTO; import com.engine.salary.entity.salaryBill.param.SalaryBaseSetSaveParam; import com.engine.salary.service.SalaryBillBaseSetService; @@ -45,7 +46,7 @@ public class SalaryBillBaseSetWrapper extends Service { public SalaryBaseSetFormDTO getBaseSetForm() { SalaryBaseSetFormDTO dto = new SalaryBaseSetFormDTO(); SalaryBillWatermarkDTO salaryBillWatermark = getSalaryBillBaseSetService(user).getWatermarkSetting(); -// SalaryBillAckFeedbackDTO salaryBillAckFeedback = salaryBillBaseSetService.getAckFeedbackSetting(); + SalaryBillAckFeedbackDTO salaryBillAckFeedback = getSalaryBillBaseSetService(user).getDefaultAckFeedbackSetting(); if (Objects.isNull(salaryBillWatermark)) { dto.setWatermarkStatus(false); @@ -57,16 +58,16 @@ public class SalaryBillBaseSetWrapper extends Service { dto.setWatermarkSetting(salaryBillWatermark.getWmSetting()); dto.setWatermark(salaryBillWatermark.getWatermarkType()); } -// if (Objects.nonNull(salaryBillAckFeedback)) { -// data.put("ackStatus", salaryBillAckFeedback.getAckStatus()); -// data.put("feedbackStatus", salaryBillAckFeedback.getFeedbackStatus()); -// } + if (Objects.nonNull(salaryBillAckFeedback)) { + // 工资单反馈默认设置 + dto.setAckFeedbackSetting(salaryBillAckFeedback); + } return dto; } /** - * 保存工资单水印设置 + * 保存工资单模板基础设置 * * @param saveParam * @return From 30d61e352f8b37346b526a8cb054af2a64923325 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 13 Jul 2023 11:50:02 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalarySendInfoListDTO.java | 5 +++ .../salaryBill/dto/SalarySendListDTO.java | 5 +++ .../dto/SalaryTemplateBaseSetDTO.java | 16 +++++++ .../dto/SalaryTemplateShowSetDTO.java | 17 ++++++++ .../param/SalaryTemplateSaveParam.java | 16 +++++++ .../salaryBill/po/SalaryTemplatePO.java | 18 ++++++++ .../salarybill/SalaryTemplateMapper.xml | 12 ++++++ .../service/impl/SalarySendServiceImpl.java | 43 +++++++++---------- .../impl/SalaryTemplateServiceImpl.java | 3 ++ .../salary/wrapper/SalarySendWrapper.java | 14 +----- .../salary/wrapper/SalaryTemplateWrapper.java | 16 +++++++ 11 files changed, 129 insertions(+), 36 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java index ed7626794..00548b4b6 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java @@ -61,5 +61,10 @@ public class SalarySendInfoListDTO { */ private Integer salaryAcctType; + /** + * 该模板是否开启了工资单反馈确认 + */ + private boolean needAck; + } diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java index c4c72bda0..915045c89 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java @@ -141,5 +141,10 @@ public class SalarySendListDTO { */ // private Integer haveBackCalc; + /** + * 工资单确认反馈状态 + */ + private Integer ackFeedbackStatus; + } diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java index b09f269b0..910e38e10 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java @@ -66,4 +66,20 @@ public class SalaryTemplateBaseSetDTO { // 发送时间 private String autoSendTimeOfDay; + + /** + * 工资单确认反馈状态 + */ + private Boolean ackFeedbackStatus; + + /** + * 自动确认超时天数 + */ + private Integer autoAckDays; + + /** + * 反馈流程地址 + * + */ + private String feedbackUrl; } diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java index 8f976ec9d..86aaeb0d6 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java @@ -54,4 +54,21 @@ public class SalaryTemplateShowSetDTO { // 薪资项为0时不显示") private Boolean salaryItemZeroStatus; + + /** + * 工资单确认反馈状态 + */ + private Boolean ackFeedbackStatus; + + /** + * 自动确认超时天数 + */ + private Integer autoAckDays; + + /** + * 反馈流程地址 + * + */ + private String feedbackUrl; + } diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java index 2dc7643d2..ff8af0607 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java @@ -88,6 +88,22 @@ public class SalaryTemplateSaveParam { // 补发薪资项目设置 private List replenishSalaryItemSetting; + /** + * 工资单确认反馈状态 + */ + private Boolean ackFeedbackStatus; + + /** + * 自动确认超时天数 + */ + private Integer autoAckDays; + + /** + * 反馈流程地址 + * + */ + private String feedbackUrl; + public static void checkParam(SalaryTemplateSaveParam saveParam) { if (saveParam.getSalarySobId() == null) { throw new SalaryRunTimeException("薪资账套表的主键id必传;"); diff --git a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java index f5c416305..fd8e1a1c9 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java @@ -170,5 +170,23 @@ public class SalaryTemplatePO { */ private String tenantKey; + /** + * 工资单确认反馈状态 + */ + private Integer ackFeedbackStatus; + + /** + * 自动确认超时天数 + */ + private Integer autoAckDays; + + /** + * 反馈流程地址 + * + */ + private String feedbackUrl; + + + private Collection salarySobIds; } diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index 56cd60808..5eb01a1ed 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -84,6 +84,9 @@ auto_send_cycle_type, auto_send_day_of_month, auto_send_time_of_day, + ack_feedback_status, + auto_ack_days, + feedback_url, create_time, update_time, creator, @@ -513,6 +516,15 @@ auto_send_time_of_day=#{autoSendTimeOfDay}, + + ack_feedback_status=#{ackFeedbackStatus}, + + + auto_ack_days=#{autoAckDays}, + + + feedback_url=#{feedbackUrl}, + create_time=#{createTime}, diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index b0da29ed7..6f951f136 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -50,8 +50,6 @@ import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; import com.engine.salary.mapper.salarybill.SalarySendInfoMapper; import com.engine.salary.mapper.salarybill.SalarySendMapper; import com.engine.salary.service.*; -import com.engine.salary.sys.constant.SalarySysConstant; -import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; @@ -74,7 +72,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import weaver.common.MessageUtil; -import weaver.general.BaseBean; import weaver.hrm.User; import weaver.hrm.company.SubCompanyComInfo; import weaver.hrm.resource.ResourceComInfo; @@ -423,11 +420,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } Long salaryAcctId = salarySend.getSalaryAccountingId(); SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctId); -// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); -// List salaryAcctRecordPOS = getSalaryAcctRecordService(user).listBySalarySobIds(Collections.singletonList(salarySobCycleDTO.getSalarySobId())); -// // 是否有回算记录 -// boolean haveBackCalc = salaryAcctRecordPOS.stream().filter(PO -> Objects.equals(PO.getBackCalcStatus(), NumberUtils.INTEGER_ONE) && -// Objects.equals(sdf.format(PO.getSalaryMonth()), SalaryDateUtil.MONTH_FORMATTER.format(salarySobCycleDTO.getSalaryMonth()))).collect(Collectors.toList()).size() > 0; String template = ""; // 获取默认模板 List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySend.getSalarySobId())); @@ -481,14 +473,18 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "当前账号无法查看此工资单")); } SalarySendInfoPO salarySendInfo = salarySendInfos.get(0); + // 获取默认模板信息 + SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); + if(ObjectUtils.isEmpty(salarySendPO)) + throw new SalaryRunTimeException("工资单不存在"); + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); + Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); // 更新查看状态 - SalarySysConfPO feedbackPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK); - if (feedbackPO != null && StringUtils.equals(feedbackPO.getConfValue(),"1")){ - if(salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0 ){ - salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); - salarySendInfo.setUpdateTime(new Date()); - getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); - } + if ( (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) + && (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0)) { + salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); + salarySendInfo.setUpdateTime(new Date()); + getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); } // List salarySends = new LambdaQueryChainWrapper<>(mapper) // .eq(SalarySendPO::getDeleteType, 0) @@ -614,17 +610,14 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); // 工资单发送人、是否已确认 - if (feedbackPO != null && StringUtils.equals(feedbackPO.getConfValue(),"1")){ + if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) { map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); - map.put("sendEmployeeId", salarySendInfo.getSalarySendId()); - BaseBean baseBean = new BaseBean(); - String workFlowId = baseBean.getPropValue("hrmSalary", "feedbackWorkflowId"); - map.put("feedbackWorkflowId",workFlowId); + map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); + map.put("feedbackWorkflowUrl",salaryTemplates.get(0).getFeedbackUrl()); }else{ map.put("confirmStatus", "1"); } - return map; } @@ -671,8 +664,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService List page = salarySendInfoMapper.list(queryParam); PageInfo pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), page, SalarySendInfoListDTO.class); - SalarySysConfPO needFeedBack = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK); - if(ObjectUtils.isNotEmpty(needFeedBack) && StringUtils.equals(needFeedBack.getConfValue(),"1")){ + SalarySendPO salarySendPO = getSalarySendMapper().getById(queryParam.getSalarySendId()); + if (ObjectUtils.isEmpty(salarySendPO)) + throw new SalaryRunTimeException("工资单不存在或已被删除"); + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); + Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); + if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) { // 默认为空时,未读未确认 pageInfo.getList().stream().forEach(obj -> { SalarySendInfoListDTO dto = (SalarySendInfoListDTO) obj; diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 8c6bc6650..72ed6c76e 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -197,6 +197,9 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate salaryTemplateNew.setSalaryItemZeroStatus(saveParam.getSalaryItemZeroStatus()?1:0); salaryTemplateNew.setAutoSendStatus(saveParam.getAutoSendStatus()?1:0); salaryTemplateNew.setAutoSendCycleType(saveParam.getAutoSendCycleType()); + salaryTemplateNew.setAckFeedbackStatus(saveParam.getAckFeedbackStatus()?1:0); + salaryTemplateNew.setAutoAckDays(saveParam.getAutoAckDays()); + salaryTemplateNew.setFeedbackUrl(saveParam.getFeedbackUrl()); // todo 薪资项目设置检查校验 salaryTemplateNew.setSalaryItemSetting(saveParam.getSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getSalaryItemSetting()) : ""); salaryTemplateNew.setReplenishSalaryItemSetting(saveParam.getReplenishSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getReplenishSalaryItemSetting()) : ""); diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 5fbf57805..0b6548fda 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -148,22 +148,10 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy // todo 目前就一个回算,那么没有冻结且是回算,就展示补发名称 e.setTemplate(NumberUtils.INTEGER_ONE.equals(e.getSalaryAcctType()) ? optional.get().getReplenishName() : optional.get().getName()); e.setTemplateId(optional.get().getId()); + e.setAckFeedbackStatus(optional.get().getAckFeedbackStatus() == null ? 0 : optional.get().getAckFeedbackStatus()); } -// e.setHaveBackCalc(NumberUtils.INTEGER_ZERO); }); } - // 薪资核算ID - Set salaryAcctIds = SalaryEntityUtil.properties(pageList, SalarySendListDTO::getSalaryAcctId); - // 获取是回算的薪资核算ID - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - List salaryAcctRecordPOS = getSalaryAcctRecordService(user).getBackCalcRecordByIds(salaryAcctIds); -// Set backCalcSalarySobs = SalaryEntityUtil.properties(salaryAcctRecordPOS, salaryAcctRecordPO -> salaryAcctRecordPO.getSalarySobId() + "-" + sdf.format(salaryAcctRecordPO.getSalaryMonth())); -// // 判断是否回算过,haveBackCalc 属性 -// pageList.stream().forEach(salarySendDTO -> { -// if (backCalcSalarySobs.contains(salarySendDTO.getSalarySobId() + "-" + sdf.format(salarySendDTO.getSalaryYearMonth()))) { -// salarySendDTO.setHaveBackCalc(NumberUtils.INTEGER_ONE); -// } -// }); List columns = buildWeaTableColumns(); WeaTable table = new WeaTable(); table.setColumns(columns); diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 216fd2ecf..640a498d2 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -20,6 +20,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.mzlion.core.utils.BeanUtils; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; @@ -60,6 +61,10 @@ public class SalaryTemplateWrapper extends Service { return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } + private SalaryBillBaseSetService getSalaryBillBaseSetService(User user) { + return ServiceUtil.getService(SalaryBillBaseSetServiceImpl.class, user); + } + /** * 工资单模板列表 * @@ -154,6 +159,8 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateBaseSetDTO.setSalarySob(po.getSalarySobId()); salaryTemplateBaseSetDTO.setSendEmail(po.getSendEmailId()); salaryTemplateBaseSetDTO.setAutoSendStatus(po.getAutoSendStatus() == null ? false : po.getAutoSendStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); + salaryTemplateBaseSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() == null ? false : NumberUtils.compare(po.getAckFeedbackStatus(), 1) == 1); + salaryTemplateBaseSetDTO.setAutoAckDays(ObjectUtils.isEmpty(po.getAutoAckDays()) ? 7 : po.getAutoAckDays()); // 规则赋值 如果为ALL传“” 如果为byRule传薪资项目ID salaryTemplateBaseSetDTO.setReplenishRule(SalaryTemplateReplenishRuleEnum.ALL.getValue().equals(po.getReplenishRule()) ? "" : po.getReplenishRule()); // 规则设置赋值 @@ -182,6 +189,13 @@ public class SalaryTemplateWrapper extends Service { // WeaForm salaryTemplateBase = SalaryFormatUtil.getInstance().buildForm(SalaryTemplateBaseSetDTO.class, SalaryTemplateBaseSetDTO.builder().salarySobOptions(salarySobOptions).sendEmailOptions(sendEmailOptions).build()); + if(id == null){ + // 新建,获取默认的确认反馈信息 + SalaryBillAckFeedbackDTO defaultAckFeedback = getSalaryBillBaseSetService(user).getDefaultAckFeedbackSetting(); + salaryTemplateBaseSetDTO.setAckFeedbackStatus(StringUtils.equals(defaultAckFeedback.getAckStatus(),"1")); + salaryTemplateBaseSetDTO.setAutoAckDays(defaultAckFeedback.getAutoAckDays()); + salaryTemplateBaseSetDTO.setFeedbackUrl(defaultAckFeedback.getFeedBackUrl()); + } Map salaryTemplateBase = new HashMap<>(); salaryTemplateBase.put("data", salaryTemplateBaseSetDTO); salaryTemplateBase.put("salarySobOptions", salarySobOptions); @@ -215,6 +229,8 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateShowSetDTO.setTextContentPosition(po.getTextContentPosition().toString()); salaryTemplateShowSetDTO.setSalaryItemNullStatus(po.getSalaryItemNullStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); salaryTemplateShowSetDTO.setSalaryItemZeroStatus(po.getSalaryItemZeroStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); + salaryTemplateShowSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() != null && NumberUtils.compare(po.getAckFeedbackStatus(),1) == 1); + salaryTemplateShowSetDTO.setAutoAckDays(ObjectUtils.isEmpty(po.getAutoAckDays()) ? 7 : po.getAutoAckDays()); } Map salaryTemplateShowSet = new HashMap<>(); From 6279f0d8c95c4a00b6ee1382d40b51e3219dc933 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 14 Jul 2023 09:55:36 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/SalarySendInfoMapper.java | 7 +++ .../salarybill/SalarySendInfoMapper.xml | 14 ++++++ .../mapper/salarybill/SalarySendMapper.java | 2 + .../mapper/salarybill/SalarySendMapper.xml | 12 +++++ .../salarybill/SalaryTemplateMapper.xml | 20 +++++--- .../salary/service/SalarySendService.java | 4 +- .../salary/service/SalaryTemplateService.java | 6 +++ .../service/impl/SalarySendServiceImpl.java | 21 ++++++--- .../impl/SalaryTemplateServiceImpl.java | 5 ++ .../timer/AutoConfirmSalaryBillCronJob.java | 46 +++++++++++-------- 10 files changed, 103 insertions(+), 34 deletions(-) diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java index 93f184d84..2da9e21b9 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java @@ -107,4 +107,11 @@ public interface SalarySendInfoMapper { * @param needAutoIds */ void autoConfirmSalaryBill(@Param("ids") List needAutoIds); + + /** + * 根据薪资账套id获取已发送,确认状态为未确认的工资单 + * @param salarySobIds + * @return + */ + List listUnConfirmedSendInfo(@Param("salarySobIds") List salarySobIds); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index 506afd10c..b8e3c1f55 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -717,6 +717,20 @@ + diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java index ef1e6f6cb..95e3e73ed 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java @@ -65,4 +65,6 @@ public interface SalarySendMapper { void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordId") Collection ids); List getNeedSendListBySalarySobIds(@Param("salarySobIds")List salarySobIds); + + List getByIds(@Param("ids") List salarySendId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml index 5b87e3774..c78a00525 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml @@ -252,6 +252,18 @@ + diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index 5eb01a1ed..d48505e58 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -48,13 +48,16 @@ , t.salary_item_null_status , t.salary_item_zero_status , t.salary_item_setting - , replenish_name - , replenish_rule - , replenish_salary_item_setting - , auto_send_status - , auto_send_cycle_type - , auto_send_day_of_month - , auto_send_time_of_day + , t.replenish_name + , t.replenish_rule + , t.replenish_salary_item_setting + , t.auto_send_status + , t.auto_send_cycle_type + , t.auto_send_day_of_month + , t.auto_send_time_of_day + , t.ack_feedback_status + , t.auto_ack_days + , t.feedback_url , t.create_time , t.update_time , t.creator @@ -324,6 +327,9 @@ AND auto_send_status = #{autoSendStatus} + + AND ack_feedback_status = #{ackFeedbackStatus} + AND salary_sob_id IN diff --git a/src/com/engine/salary/service/SalarySendService.java b/src/com/engine/salary/service/SalarySendService.java index f0cab60a3..90da3440f 100644 --- a/src/com/engine/salary/service/SalarySendService.java +++ b/src/com/engine/salary/service/SalarySendService.java @@ -207,11 +207,13 @@ public interface SalarySendService { * @return * @return */ - List listAllUnConfirmedSendInfo(); + List listUnConfirmedSendInfo(List salarySobIds); /** * 自动确认工资单 * @param needAutoIds */ void autoConfirmSalaryBill(List needAutoIds); + + List getByIds(List salarySendId); } diff --git a/src/com/engine/salary/service/SalaryTemplateService.java b/src/com/engine/salary/service/SalaryTemplateService.java index 37c13637e..bdf8826cb 100644 --- a/src/com/engine/salary/service/SalaryTemplateService.java +++ b/src/com/engine/salary/service/SalaryTemplateService.java @@ -125,4 +125,10 @@ public interface SalaryTemplateService { * 获取所有设置了定时发送的默认工资单模板 */ List getAutoSendTemplate(); + + /** + * 获取所有开启了工资单确认反馈的默认工资单模板 + * @return + */ + List listNeedAckDefaultTemplate(); } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 6f951f136..38e07dc39 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1620,12 +1620,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } @Override - public List listAllUnConfirmedSendInfo() { - return getSalarySendInfoMapper().listSome( - SalarySendInfoPO.builder() - .billConfirmStatus(BillConfimStatusEnum.UNCONFIRMED.getValue()) - .sendStatus(1) - .build()); + public List listUnConfirmedSendInfo(List salarySobIds) { + if(CollectionUtils.isEmpty(salarySobIds)) + return Collections.emptyList(); + return getSalarySendInfoMapper().listUnConfirmedSendInfo(salarySobIds); } @Override @@ -1633,6 +1631,15 @@ public class SalarySendServiceImpl extends Service implements SalarySendService if(CollectionUtils.isEmpty(needAutoSendIds)){ return; } - getSalarySendInfoMapper().autoConfirmSalaryBill(needAutoSendIds); + List> partition = Lists.partition((List) needAutoSendIds, 500); + partition.forEach(getSalarySendInfoMapper()::autoConfirmSalaryBill); + } + + @Override + public List getByIds(List salarySendId) { + if(CollectionUtils.isEmpty(salarySendId)){ + return Collections.emptyList(); + } + return getSalarySendMapper().getByIds(salarySendId); } } diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 72ed6c76e..7d0b790c5 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -355,4 +355,9 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate public List getAutoSendTemplate() { return mapper.listSome(SalaryTemplatePO.builder().autoSendStatus(NumberUtils.INTEGER_ONE).useType(NumberUtils.INTEGER_ONE).deleteType(NumberUtils.INTEGER_ZERO).build()); } + + @Override + public List listNeedAckDefaultTemplate() { + return mapper.listSome(SalaryTemplatePO.builder().useType(NumberUtils.INTEGER_ONE).ackFeedbackStatus(NumberUtils.INTEGER_ONE).build()); + } } diff --git a/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java b/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java index 79abafde8..9ddee0497 100644 --- a/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java +++ b/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java @@ -2,22 +2,24 @@ package com.engine.salary.timer; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO; +import com.engine.salary.entity.salaryBill.po.SalarySendPO; +import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import com.engine.salary.service.SalarySendService; +import com.engine.salary.service.SalaryTemplateService; import com.engine.salary.service.impl.SalarySendServiceImpl; -import com.engine.salary.sys.constant.SalarySysConstant; -import com.engine.salary.sys.entity.po.SalarySysConfPO; -import com.engine.salary.sys.service.SalarySysConfService; -import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; +import com.engine.salary.service.impl.SalaryTemplateServiceImpl; import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryEntityUtil; import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -31,8 +33,8 @@ public class AutoConfirmSalaryBillCronJob extends BaseCronJob { return ServiceUtil.getService(SalarySendServiceImpl.class, user); } - private SalarySysConfService getSalarySysConfService(User user) { - return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + private SalaryTemplateService getSalaryTemplateService(User user) { + return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user); } @Override @@ -40,20 +42,26 @@ public class AutoConfirmSalaryBillCronJob extends BaseCronJob { User user = new User(); user.setUid(1); user.setLoginid("sysadmin"); - // 获取超时时间 - SalarySysConfPO feedbackPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK); - if(ObjectUtils.isEmpty(feedbackPO) || StringUtils.equals(feedbackPO.getConfValue(), "0")){ - return; - } - SalarySysConfPO salaryAutoConfirmPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_AUTO_ACK_DAYS); - Long timeOutDays = ObjectUtils.isNotEmpty(salaryAutoConfirmPO) && NumberUtils.isCreatable(salaryAutoConfirmPO.getConfValue()) ? - Long.valueOf(salaryAutoConfirmPO.getConfValue()) : 7L; + // 获取所有需要确认反馈的默认工资单模板 + List templates = getSalaryTemplateService(user).listNeedAckDefaultTemplate(); + // key:薪资账套id,value:对应的自动确认天数 + Map salarySobAckDaysMap = SalaryEntityUtil.convert2Map(templates, SalaryTemplatePO::getSalarySobId, SalaryTemplatePO::getAutoAckDays); + // 根据薪资账套id获取已发送,确认状态为未确认的工资单 + List unConfirmedList = getSalarySendService(user).listUnConfirmedSendInfo(new ArrayList<>(salarySobAckDaysMap.keySet())); + List sendList = getSalarySendService(user).getByIds(unConfirmedList.stream().map(SalarySendInfoPO::getSalarySendId).distinct().collect(Collectors.toList())); + // key:工资单发放id,value:自动确认超时天数 + HashMap autoAckDaysMap = new HashMap<>(); + sendList.stream().forEach(send -> { + Integer autoAckDays = salarySobAckDaysMap.getOrDefault(send.getSalarySobId(), 7); + autoAckDaysMap.put(send.getId(), autoAckDays); + }); LocalDateTime now = LocalDateTime.now(); - // 获取所有确认状态为 未确认的工资单 - List unConfirmedList = getSalarySendService(user).listAllUnConfirmedSendInfo(); List needAutoIds = unConfirmedList.stream().filter(po -> { LocalDateTime sendDateTime = SalaryDateUtil.dateToLocalDateTime(po.getSendTime()); - LocalDateTime autoDateTime = sendDateTime.plus(timeOutDays, ChronoUnit.DAYS); + Integer autoDays = autoAckDaysMap.get(po.getSalarySendId()); + if (ObjectUtils.isEmpty(autoDays)) + return false; + LocalDateTime autoDateTime = sendDateTime.plus(autoDays, ChronoUnit.DAYS); return !autoDateTime.isAfter(now); }).map(SalarySendInfoPO::getId).collect(Collectors.toList()); // 自动确认 From 8221d4da69c7dc0daa70d27a3806dcbc24c184a9 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jul 2023 11:27:40 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalaryTemplateShowSetDTO.java | 16 ---------------- .../mapper/salarybill/SalarySendInfoMapper.xml | 2 +- .../impl/SalaryBillBaseSetServiceImpl.java | 1 + .../service/impl/SalarySendServiceImpl.java | 10 ++++++---- .../salary/wrapper/SalaryTemplateWrapper.java | 4 +--- 5 files changed, 9 insertions(+), 24 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java index 86aaeb0d6..4b5efcd1c 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java @@ -55,20 +55,4 @@ public class SalaryTemplateShowSetDTO { // 薪资项为0时不显示") private Boolean salaryItemZeroStatus; - /** - * 工资单确认反馈状态 - */ - private Boolean ackFeedbackStatus; - - /** - * 自动确认超时天数 - */ - private Integer autoAckDays; - - /** - * 反馈流程地址 - * - */ - private String feedbackUrl; - } diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index b8e3c1f55..e6f733971 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -724,12 +724,12 @@ LEFT JOIN hrsa_salary_send s ON t.salary_send_id = s.id WHERE t.delete_type = 0 - AND t.bill_confirm_status = 0 AND t.send_status = 1 AND s.salary_sob_id IN #{salarySobId} + AND (t.bill_confirm_status = 0 or bill_confirm_status is null) diff --git a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java index 476717d7c..73a5a184b 100644 --- a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java @@ -142,6 +142,7 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB // 未开启工资单确认 defaultAckFeedBackDTO.setAckStatus("0"); defaultAckFeedBackDTO.setAutoAckDays(0); + defaultAckFeedBackDTO.setFeedBackUrl("/"); return defaultAckFeedBackDTO; } defaultAckFeedBackDTO.setAckStatus(ackStatus); diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 38e07dc39..9fd325cf6 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -480,8 +480,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); // 更新查看状态 - if ( (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) - && (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0)) { + if (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0) { salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); salarySendInfo.setUpdateTime(new Date()); getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); @@ -610,7 +609,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); // 工资单发送人、是否已确认 - if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) { + if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 0) { map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); map.put("feedbackWorkflowUrl",salaryTemplates.get(0).getFeedbackUrl()); @@ -669,7 +668,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException("工资单不存在或已被删除"); List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); - if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) { + if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 0) { // 默认为空时,未读未确认 pageInfo.getList().stream().forEach(obj -> { SalarySendInfoListDTO dto = (SalarySendInfoListDTO) obj; @@ -769,6 +768,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService Map map = JsonUtil.parseMap(salaryTemplateContent, Object.class); return SalaryTemplatePO.builder() .id(Long.valueOf(map.getOrDefault("id", "0").toString())) + .ackFeedbackStatus(Integer.valueOf(map.getOrDefault("ackFeedbackStatus", "0").toString())) + .autoAckDays(Integer.valueOf(map.getOrDefault("autoAckDays", "0").toString())) + .feedbackUrl(map.getOrDefault("feedbackUrl", "").toString()) .name(map.getOrDefault("name", "").toString()) .salarySobId(Long.valueOf(map.getOrDefault("salarySobId", "0").toString())) .useType(Integer.valueOf(map.getOrDefault("useType", "0").toString())) diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 640a498d2..d5d7a68cf 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -159,7 +159,7 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateBaseSetDTO.setSalarySob(po.getSalarySobId()); salaryTemplateBaseSetDTO.setSendEmail(po.getSendEmailId()); salaryTemplateBaseSetDTO.setAutoSendStatus(po.getAutoSendStatus() == null ? false : po.getAutoSendStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); - salaryTemplateBaseSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() == null ? false : NumberUtils.compare(po.getAckFeedbackStatus(), 1) == 1); + salaryTemplateBaseSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() == null ? false : NumberUtils.compare(po.getAckFeedbackStatus(), 1) == 0); salaryTemplateBaseSetDTO.setAutoAckDays(ObjectUtils.isEmpty(po.getAutoAckDays()) ? 7 : po.getAutoAckDays()); // 规则赋值 如果为ALL传“” 如果为byRule传薪资项目ID salaryTemplateBaseSetDTO.setReplenishRule(SalaryTemplateReplenishRuleEnum.ALL.getValue().equals(po.getReplenishRule()) ? "" : po.getReplenishRule()); @@ -229,8 +229,6 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateShowSetDTO.setTextContentPosition(po.getTextContentPosition().toString()); salaryTemplateShowSetDTO.setSalaryItemNullStatus(po.getSalaryItemNullStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); salaryTemplateShowSetDTO.setSalaryItemZeroStatus(po.getSalaryItemZeroStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); - salaryTemplateShowSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() != null && NumberUtils.compare(po.getAckFeedbackStatus(),1) == 1); - salaryTemplateShowSetDTO.setAutoAckDays(ObjectUtils.isEmpty(po.getAutoAckDays()) ? 7 : po.getAutoAckDays()); } Map salaryTemplateShowSet = new HashMap<>(); From e83302caac64b6ae567b58ebf84f62ccf139bf35 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jul 2023 12:11:31 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalarySendServiceImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 9fd325cf6..f6b149e70 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -477,8 +477,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); if(ObjectUtils.isEmpty(salarySendPO)) throw new SalaryRunTimeException("工资单不存在"); - List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); - Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); // 更新查看状态 if (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0) { salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); @@ -609,10 +607,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); // 工资单发送人、是否已确认 - if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 0) { + if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(),1) == 0) { map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); - map.put("feedbackWorkflowUrl",salaryTemplates.get(0).getFeedbackUrl()); }else{ map.put("confirmStatus", "1"); } From 88892f1aac04772158650fea4a6e5b7b8a5bc781 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jul 2023 12:36:20 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88fixBug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/bo/SalaryTemplateBO.java | 3 ++ .../salarybill/SalaryTemplateMapper.xml | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java index a72575661..a12f0e81f 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java @@ -77,6 +77,9 @@ public class SalaryTemplateBO { .autoSendStatus(saveParam.getAutoSendStatus()?1:0) .autoSendDayOfMonth(saveParam.getAutoSendDayOfMonth()) .autoSendTimeOfDay(saveParam.getAutoSendTimeOfDay()) + .ackFeedbackStatus(saveParam.getAckFeedbackStatus()?1:0) + .autoAckDays(saveParam.getAutoAckDays()) + .feedbackUrl(saveParam.getFeedbackUrl()) .createTime(new Date()) .updateTime(new Date()) .creator(employeeId) diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index d48505e58..29a016b93 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -621,6 +621,15 @@ auto_send_time_of_day, + + ack_feedback_status, + + + auto_ack_days, + + + feedback_url, + create_time, @@ -707,6 +716,15 @@ #{autoSendTimeOfDay}, + + #{ackFeedbackStatus}, + + + #{autoAckDays}, + + + #{feedbackUrl}, + #{createTime}, @@ -803,6 +821,15 @@ auto_send_time_of_day, + + ack_feedback_status, + + + auto_ack_days, + + + feedback_url, + create_time, @@ -889,6 +916,15 @@ #{autoSendTimeOfDay}, + + #{ackFeedbackStatus}, + + + #{autoAckDays}, + + + #{feedbackUrl}, + #{createTime}, From 1ea80b8fe99df61d70fb35a3b04c3b4d359a3a0a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jul 2023 15:01:14 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/BillConfimStatusEnum.java | 2 +- .../salarybill/SalarySendInfoMapper.xml | 2 +- .../salary/service/SalaryBillService.java | 6 +++++ .../service/impl/SalaryBillServiceImpl.java | 11 +++++++++ .../salary/web/SalaryBillController.java | 24 +++++++++++++++++++ .../salary/wrapper/SalarySendWrapper.java | 7 ++++++ 6 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java index 89ca4e758..2a1626532 100644 --- a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java +++ b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java @@ -14,7 +14,7 @@ public enum BillConfimStatusEnum implements BaseEnum { UNCONFIRMED(0, "未确认", 93286), CONFIRMED(1, "已确认", 93212), - AUTOCONFIRMED(2, "自动确认", 93212); + FEEDBACK(2, "已反馈", 0); private final int value; diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index e6f733971..7d4001131 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -788,7 +788,7 @@ UPDATE hrsa_salary_send_info set - bill_confirm_status = 2 + bill_confirm_status = 1 where delete_type = 0 diff --git a/src/com/engine/salary/service/SalaryBillService.java b/src/com/engine/salary/service/SalaryBillService.java index 23bd54597..0f8b9030a 100644 --- a/src/com/engine/salary/service/SalaryBillService.java +++ b/src/com/engine/salary/service/SalaryBillService.java @@ -36,6 +36,12 @@ public interface SalaryBillService { */ void confirmSalaryBill(Long salaryInfoId); + /** + * 工资单反馈 + * @param salaryInfoId + */ + void feedBackSalaryBill(Long salaryInfoId); + /** * 工资单撤回 * diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index ed8dc4351..6b438b564 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -436,6 +436,17 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService getSalarySendInfoMapper().updateIgnoreNull(sendInfoPO); } + @Override + public void feedBackSalaryBill(Long salaryInfoId) { + SalarySendInfoPO sendInfoPO = getSalarySendInfoMapper().getById(salaryInfoId); + if(ObjectUtils.isEmpty(sendInfoPO)){ + throw new SalaryRunTimeException("工资单不存在或已被删除!"); + } + sendInfoPO.setBillConfirmStatus(BillConfimStatusEnum.FEEDBACK.getValue()); + sendInfoPO.setUpdateTime(new Date()); + getSalarySendInfoMapper().updateIgnoreNull(sendInfoPO); + } + public List> getSendInfoList(Long sendId, List ids) { SalarySendPO salarySend = getSalarySendMapper().getById(sendId); diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 080e982d7..ea5cdeece 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -569,6 +569,30 @@ public class SalaryBillController { } return new ResponseResult>(user).run(getSalarySendWrapper(user)::confirmSalaryBill, salaryInfoId); } + + /** + * 工资单反馈 + * + * @param salaryInfoId + * @return + */ + @GET + @Path("/feedBackSalaryBill") + @Produces(MediaType.APPLICATION_JSON) + public String feedBackSalaryBill(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryInfoId") Long salaryInfoId) { + User user = null; + String recipient = request.getParameter("recipient"); + String em_auth_userid = request.getParameter("em_auth_userid"); + log.info("salary recipient: {} em_auth_userid: {}", recipient, em_auth_userid); + if (StringUtils.isNotBlank(recipient) && NumberUtils.isCreatable(recipient)) { + user = new User(Integer.parseInt(recipient)); + } else if (StringUtils.isNotBlank(em_auth_userid) && NumberUtils.isCreatable(em_auth_userid)) { + user = new User(Integer.parseInt(em_auth_userid)); + } else { + user = HrmUserVarify.getUser(request, response); + } + return new ResponseResult>(user).run(getSalarySendWrapper(user)::feedBackSalaryBill, salaryInfoId); + } /******** 工资单发放 end ***********************************************************************************************/ /** diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 0b6548fda..60a480841 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -686,6 +686,13 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy } getSalaryBillService(user).confirmSalaryBill(salaryInfoId); } + + public void feedBackSalaryBill(Long salaryInfoId) { + if(ObjectUtil.isNull(salaryInfoId)){ + throw new SalaryRunTimeException("工资单id不能为空!"); + } + getSalaryBillService(user).feedBackSalaryBill(salaryInfoId); + } }