diff --git a/resource/sqlupgrade/SQLServer/sql202409100103SHGWSJYJY.sql b/resource/sqlupgrade/SQLServer/sql202409100103SHGWSJYJY.sql new file mode 100644 index 000000000..68177dbe7 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202409100103SHGWSJYJY.sql @@ -0,0 +1,21 @@ +CREATE TABLE hrsa_gw_pltx_dt1 ( + id bigint NOT NULL, + mainid bigint NULL, + xm int NULL , + bm int NULL , + gw text NULL, + qnjxfs decimal(38, 2) NULL, + jbgz decimal(38, 2) NULL , + dx decimal(38, 2) NULL, + dxhjbgz decimal(38, 2) NULL, + dxbl decimal(38, 4) NULL , + gskjywr text NULL , + hjxz decimal(38, 2) NULL , + dzhhjxz decimal(38, 2) NULL , + hjxzdzbl decimal(38, 4) NULL , + bz text NULL, + nzjj decimal(38, 2) NULL , + delete_type int NULL , + PRIMARY KEY (id) +) +GO \ No newline at end of file diff --git a/src/com/engine/salary/action/shgwPltxActionNEW.java b/src/com/engine/salary/action/shgwPltxActionNEW.java new file mode 100644 index 000000000..bf151361b --- /dev/null +++ b/src/com/engine/salary/action/shgwPltxActionNEW.java @@ -0,0 +1,143 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryacct.po.GwPltxDt1PO; +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.service.GwPltxDt1Service; +import com.engine.salary.service.SalaryItemService; +import com.engine.salary.service.impl.GwPltxDt1ServiceImpl; +import com.engine.salary.service.impl.SalaryItemServiceImpl; +import com.engine.salary.wrapper.SalaryArchiveWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 上海港湾 - 第六层级批量流程调薪 + */ +@Slf4j +public class shgwPltxActionNEW implements Action { + + + private GwPltxDt1Service getGwPltxDt1Service(User user) { + return ServiceUtil.getService(GwPltxDt1ServiceImpl.class, user); + } + + private SalaryArchiveWrapper getSalaryArchiveWrapper(User user) { + return ServiceUtil.getService(SalaryArchiveWrapper.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + User user = new User(); + user.setLoginid("sysadmin"); + user.setUid(1); + BaseBean baseBean = new BaseBean(); + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + String dxcj = fieldMap.get("dxcj"); + if (dxcj.equals("5")) { + // 获取流程id + String requestid = requestInfo.getRequestid(); + // 从表中取数据 + List gwPltxDt1POS = getGwPltxDt1Service(user).listSome(GwPltxDt1PO.builder().mainid(Long.valueOf(requestid)).build()); + String salaryItemId = baseBean.getPropValue("shgwSalary", "pltxSalaryItemId"); + SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(Long.valueOf(salaryItemId)); + List> importData = new ArrayList<>(); + + gwPltxDt1POS.stream() + .filter(po -> po.getDx() != null && !po.getDx().equals(BigDecimal.ZERO)) + .forEach(po -> { + HashMap map = new HashMap<>(); + map.put("员工id", po.getXm()); + map.put("调整原因", "调薪"); + map.put("个税扣缴义务人", po.getGskjywr()); + map.put("生效日期", fieldMap.get("Sxrq")); + map.put(Util.formatMultiLang(salaryItemPO.getName(), "7") , po.getDxhjbgz()); + importData.add(map); + }); + + baseBean.writeLog("gwtx:" + importData); + SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() + .gwpltxWorkflow(true) + .importDatas(importData) + .build(); + + Map map = getSalaryArchiveWrapper(user).adjustmentSalaryArchive(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("调薪存在异常 requestId:{} map:{}", requestInfo.getRequestid(), map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + } + } catch (Exception e) { + log.error("调薪异常", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/action/shgwPltxActionNEWCheck.java b/src/com/engine/salary/action/shgwPltxActionNEWCheck.java new file mode 100644 index 000000000..04267d33e --- /dev/null +++ b/src/com/engine/salary/action/shgwPltxActionNEWCheck.java @@ -0,0 +1,143 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryacct.po.GwPltxDt1PO; +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.service.GwPltxDt1Service; +import com.engine.salary.service.SalaryItemService; +import com.engine.salary.service.impl.GwPltxDt1ServiceImpl; +import com.engine.salary.service.impl.SalaryItemServiceImpl; +import com.engine.salary.wrapper.SalaryArchiveWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 上海港湾 - 第六层级批量流程调薪 + */ +@Slf4j +public class shgwPltxActionNEWCheck implements Action { + + + private GwPltxDt1Service getGwPltxDt1Service(User user) { + return ServiceUtil.getService(GwPltxDt1ServiceImpl.class, user); + } + + private SalaryArchiveWrapper getSalaryArchiveWrapper(User user) { + return ServiceUtil.getService(SalaryArchiveWrapper.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + User user = new User(); + user.setLoginid("sysadmin"); + user.setUid(1); + BaseBean baseBean = new BaseBean(); + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + String dxcj = fieldMap.get("dxcj"); + // if (dxcj.equals("5")) { + // 获取流程id + String requestid = requestInfo.getRequestid(); + // 从表中取数据 + List gwPltxDt1POS = getGwPltxDt1Service(user).listSome(GwPltxDt1PO.builder().mainid(Long.valueOf(requestid)).build()); + String salaryItemId = baseBean.getPropValue("shgwSalary", "pltxSalaryItemId"); + SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(Long.valueOf(salaryItemId)); + List> importData = new ArrayList<>(); + + gwPltxDt1POS.stream() + .filter(po -> po.getDx() != null && !po.getDx().equals(BigDecimal.ZERO)) + .forEach(po -> { + HashMap map = new HashMap<>(); + map.put("员工id", po.getXm()); + map.put("调整原因", "调薪"); + map.put("个税扣缴义务人", po.getGskjywr()); + map.put("生效日期", fieldMap.get("Sxrq")); + map.put(Util.formatMultiLang(salaryItemPO.getName(), "7") , po.getDxhjbgz()); + importData.add(map); + }); + + baseBean.writeLog("gwtx:" + importData); + SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() + .gwpltxWorkflow(true) + .importDatas(importData) + .build(); + + Map map = getSalaryArchiveWrapper(user).checkAdjustmentSalaryArchive(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("调薪检查存在异常 requestId:{} map:{}", requestInfo.getRequestid(), map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + // } + } catch (Exception e) { + log.error("调薪检查异常", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/action/shgwPltxDetailsToModeAction.java b/src/com/engine/salary/action/shgwPltxDetailsToModeAction.java new file mode 100644 index 000000000..86ca618d4 --- /dev/null +++ b/src/com/engine/salary/action/shgwPltxDetailsToModeAction.java @@ -0,0 +1,90 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryacct.param.pltxDetailsToModeSaveParam; +import com.engine.salary.entity.salaryacct.po.GwPltxDt1PO; +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbDt1PO; +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbPO; +import com.engine.salary.service.GwPltxDt1Service; +import com.engine.salary.service.SalaryAcctResultService; +import com.engine.salary.service.impl.GwPltxDt1ServiceImpl; +import com.engine.salary.service.impl.SalaryAcctResultServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.math.NumberUtils; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 上海港湾 - 批量调薪流程转建模 + */ +@Slf4j +public class shgwPltxDetailsToModeAction implements Action { + + + private SalaryAcctResultService getSalaryAcctResultService(User user) { + return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user); + } + + private GwPltxDt1Service getGwPltxDt1Service(User user) { + return ServiceUtil.getService(GwPltxDt1ServiceImpl.class, user); + } + + @Override + public String execute(RequestInfo requestInfo) { + String requestid = requestInfo.getRequestid(); + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + User user = new User(); + user.setUid(1); + // 主表数据 + UfTxjlgljmbPO ufTxjlgljmbPO = new UfTxjlgljmbPO(); + ufTxjlgljmbPO.setFqrxm(NumberUtils.isCreatable(fieldMap.get("fqrxm")) ? Integer.valueOf(fieldMap.get("fqrxm")) : null); + ufTxjlgljmbPO.setFqrq(fieldMap.get("fqrq")); + ufTxjlgljmbPO.setFqrbm(NumberUtils.isCreatable(fieldMap.get("fqrbm")) ? Integer.valueOf(fieldMap.get("fqrbm")) : null); + ufTxjlgljmbPO.setFqrgs(NumberUtils.isCreatable(fieldMap.get("fqrgs")) ? Integer.valueOf(fieldMap.get("fqrgs")) : null); + ufTxjlgljmbPO.setSxrq(fieldMap.get("Sxrq")); + ufTxjlgljmbPO.setSpr(NumberUtils.isCreatable(fieldMap.get("spr")) ? Integer.valueOf(fieldMap.get("spr")) : null); + ufTxjlgljmbPO.setDxcj(NumberUtils.isCreatable(fieldMap.get("dxcj")) ? Integer.valueOf(fieldMap.get("dxcj")) : null); + ufTxjlgljmbPO.setDxdycjspr(fieldMap.get("dxdycjspr")); + ufTxjlgljmbPO.setDxdecjspr(fieldMap.get("dxdecjspr")); + ufTxjlgljmbPO.setDxdsacjspr(fieldMap.get("dxdsacjspr")); + ufTxjlgljmbPO.setDxdsicjspr(fieldMap.get("dxdsicjspr")); + ufTxjlgljmbPO.setDxdwcjspr(fieldMap.get("dxdwcjspr")); + ufTxjlgljmbPO.setDxdlcjspr(fieldMap.get("dxdlcjspr")); + ufTxjlgljmbPO.setNd(NumberUtils.isCreatable(fieldMap.get("nd")) ? Integer.valueOf(fieldMap.get("nd")) : null); + + // 明细表1数据 + List gwPltxDt1POS = getGwPltxDt1Service(user).listSome(GwPltxDt1PO.builder().mainid(Long.valueOf(requestid)).build()); + List collect = gwPltxDt1POS.stream().map(po -> { + return UfTxjlgljmbDt1PO.builder() + .Xm(po.getXm()) + .bm(po.getBm()) + .gw(po.getGw()) + .qnjxfs(po.getQnjxfs()) + .jbgz(po.getJbgz()) + .dx(po.getDx()) + .dxhjbgz(po.getDxhjbgz()) + .dxbl(po.getDxbl()) + .gskjywr(po.getGskjywr()) + .dzhhjxz(po.getDzhhjxz()) + .hjxzdzbl(po.getHjxzdzbl()) + .bz(po.getBz()) + .hjgz(po.getHjxz()) + .nzjj(po.getNzjj()) + .build(); + }).collect(Collectors.toList()); + pltxDetailsToModeSaveParam param = pltxDetailsToModeSaveParam.builder().txjlgljmb(ufTxjlgljmbPO).dt1(collect).build(); + getSalaryAcctResultService(user).pltxDetailsToMode(param); + return SUCCESS; + } + +} diff --git a/src/com/engine/salary/entity/salaryacct/dto/pltxEmployeeDTO.java b/src/com/engine/salary/entity/salaryacct/dto/pltxEmployeeDTO.java index 13fdcab05..3003ca675 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/pltxEmployeeDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/pltxEmployeeDTO.java @@ -17,6 +17,8 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class pltxEmployeeDTO { + private Long id; + // 姓名 private Long employee; @@ -57,4 +59,6 @@ public class pltxEmployeeDTO { // 备注 private String bz; + private Double nzjj; + } diff --git a/src/com/engine/salary/entity/salaryacct/param/PltxInitEmployeeParam.java b/src/com/engine/salary/entity/salaryacct/param/PltxInitEmployeeParam.java index 06ca8a3ec..e269d44a0 100644 --- a/src/com/engine/salary/entity/salaryacct/param/PltxInitEmployeeParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/PltxInitEmployeeParam.java @@ -13,6 +13,11 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class PltxInitEmployeeParam { + /** + * 流程requestId + */ + Long requestId; + /** * 个税扣缴义务人 */ diff --git a/src/com/engine/salary/entity/salaryacct/param/gwPltxSaveParam.java b/src/com/engine/salary/entity/salaryacct/param/gwPltxSaveParam.java new file mode 100644 index 000000000..d177e55ad --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/gwPltxSaveParam.java @@ -0,0 +1,106 @@ +package com.engine.salary.entity.salaryacct.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + + +/** + * @ClassName gwPltxSaveParam + * @author Harryxzy + * @date 2024/9/5 9:59 + * @description 保存批量调薪明细表1信息 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class gwPltxSaveParam { + + boolean isCreateNode; + + /** + * 主键id + */ + Long id; + + /** + * 流程id + */ + Long mainid; + + /** + * 姓名 + */ + Integer xm; + + /** + * 部门 + */ + Integer bm; + + /** + * 岗位 + */ + String gw; + + /** + * 去年绩效分数 + */ + BigDecimal qnjxfs; + + /** + * 基本工资 + */ + BigDecimal jbgz; + + /** + * 调薪 + */ + BigDecimal dx; + + /** + * 调薪后基本工资 + */ + BigDecimal dxhjbgz; + + /** + * 调薪比例 + */ + BigDecimal dxbl; + + /** + * 个税扣缴义务人 + */ + String gskjywr; + + /** + * 合计薪资 + */ + BigDecimal hjxz; + + /** + * 调整后合计薪资 + */ + BigDecimal dzhhjxz; + + /** + * 合计薪资调整比例 + */ + BigDecimal hjxzdzbl; + + /** + * 备注 + */ + String bz; + + /** + * 年终奖金 + */ + BigDecimal nzjj; + + private Integer deleteType; +} diff --git a/src/com/engine/salary/entity/salaryacct/param/pltxDetailsToModeSaveParam.java b/src/com/engine/salary/entity/salaryacct/param/pltxDetailsToModeSaveParam.java new file mode 100644 index 000000000..230d8851e --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/pltxDetailsToModeSaveParam.java @@ -0,0 +1,36 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbDt1PO; +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbDt2PO; +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbDt3PO; +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbPO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName pltxDetailsToModeSaveParam + * @date 2024/09/09 9:51 + * @description 港湾批量调薪流程转建模 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class pltxDetailsToModeSaveParam { + + // 主表数据 + private UfTxjlgljmbPO txjlgljmb; + + private List dt1; + + private List dt2; + + private UfTxjlgljmbDt3PO dt3; + + +} diff --git a/src/com/engine/salary/entity/salaryacct/po/GwPltxDt1PO.java b/src/com/engine/salary/entity/salaryacct/po/GwPltxDt1PO.java new file mode 100644 index 000000000..8d13ad690 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/po/GwPltxDt1PO.java @@ -0,0 +1,90 @@ +package com.engine.salary.entity.salaryacct.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Collection; + +/** + * @author Harryxzy + * @ClassName GwPltxDt1 + * @date 2024/09/05 10:20 + * @description 港湾批量调薪明细表1 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class GwPltxDt1PO { + + private Long id; + /** + * 流程id + */ + private Long mainid; + /** + * 姓名 + */ + private Integer xm; + /** + * 部门 + */ + private Integer bm; + /** + * 岗位 + */ + private String gw; + /** + * 去年绩效分数 + */ + private BigDecimal qnjxfs; + /** + * 基本工资 + */ + private BigDecimal jbgz; + /** + * 调薪 + */ + private BigDecimal dx; + /** + * 调薪后基本工资 + */ + private BigDecimal dxhjbgz; + /** + * 调薪比例 + */ + private BigDecimal dxbl; + /** + * 个税扣缴义务人 + */ + private String gskjywr; + /** + * 合计薪资 + */ + private BigDecimal hjxz; + /** + * 调整后合计薪资 + */ + private BigDecimal dzhhjxz; + /** + * 合计薪资调整比例 + */ + private BigDecimal hjxzdzbl; + /** + * 备注 + */ + private String bz; + /** + * 年终奖金 + */ + private BigDecimal nzjj; + + private Integer deleteType; + + //主键id集合 + private Collection ids; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt1PO.java b/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt1PO.java new file mode 100644 index 000000000..90be70c25 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt1PO.java @@ -0,0 +1,43 @@ +package com.engine.salary.entity.salaryacct.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Collection; + +/** + * @author Harryxzy + * @ClassName UfTxjlgljmbDt1PO + * @date 2024/09/09 9:59 + * @description 明细表1 + */ + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UfTxjlgljmbDt1PO { + private Integer bm; + private String bz; + private BigDecimal dx; + private BigDecimal dxbl; + private BigDecimal dxhjbgz; + private BigDecimal dzhhjxz; + private String gskjywr; + private String gw; + private BigDecimal hjgz; + private BigDecimal hjxzdzbl; + private Integer id; + private BigDecimal jbgz; + private Integer mainid; + private BigDecimal nzjj; + private BigDecimal qnjxfs; + private Integer Xm; + + //主键id集合 + private Collection ids; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt2PO.java b/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt2PO.java new file mode 100644 index 000000000..7462b0951 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt2PO.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.salaryacct.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Collection; + +/** + * @author Harryxzy + * @ClassName UfTxjlgljmbDt2PO + * @date 2024/09/09 10:00 + * @description 明细表2 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UfTxjlgljmbDt2PO { + private Integer bm; + private BigDecimal dxze; + private BigDecimal hjxzze; + private Integer id; + private Integer mainid; + private Integer rs; + + //主键id集合 + private Collection ids; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt3PO.java b/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt3PO.java new file mode 100644 index 000000000..ac4836fca --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbDt3PO.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.salaryacct.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Collection; + +/** + * @author Harryxzy + * @ClassName UfTxjlgljmbDt3PO + * @date 2024/09/09 10:04 + * @description 明细表3 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UfTxjlgljmbDt3PO { + private Integer bm; + private BigDecimal dxbl; + private BigDecimal dxye; + private BigDecimal dxys; + private BigDecimal dxysyed; + private Integer id; + private Integer mainid; + + //主键id集合 + private Collection ids; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbPO.java b/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbPO.java new file mode 100644 index 000000000..466dcf84e --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/po/UfTxjlgljmbPO.java @@ -0,0 +1,52 @@ +package com.engine.salary.entity.salaryacct.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * @author Harryxzy + * @ClassName UfTxjlgljmbPO + * @date 2024/09/09 9:58 + * @description 调薪记录管理建模 主表 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UfTxjlgljmbPO { + + private Integer dxcj; + private String dxdecjspr; + private String dxdlcjspr; + private String dxdsacjspr; + private String dxdsicjspr; + private String dxdwcjspr; + private String dxdycjspr; + private String formBizId; + private Integer formmodeid; + private Integer fqrbm; + private Integer fqrgs; + private String fqrq; + private Integer fqrxm; + private Integer id; + private String modedatacreatedate; + private Integer modedatacreater; + private Integer modedatacreatertype; + private String modedatacreatetime; + private Integer modedatamodifier; + private String modedatamodifydatetime; + private String modeuuid; + private Integer nd; + private Integer requestId; + private Integer spr; + private String Sxrq; + + //主键id集合 + private Collection ids; + +} diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index 6ad96af59..e11663c10 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -344,7 +344,7 @@ public class SalaryArchiveExcelBO extends Service { * @param importHandleParam * @return */ - public static boolean singleRowCheck(List allTodoSalaryArchives, Map map, List headers, int effectiveTimeIndex, List> excelComments, int errorCount, SalaryArchiveImportHandleParam importHandleParam, User user) { + public static boolean singleRowCheck(List allTodoSalaryArchives, Map map, List headers, int effectiveTimeIndex, List> excelComments, int errorCount, SalaryArchiveImportHandleParam importHandleParam, User user, boolean isGwpltxWorkflow, Map empMap) { //是否是流程 boolean process = importHandleParam.isProcess(); @@ -352,6 +352,7 @@ public class SalaryArchiveExcelBO extends Service { // String rowindex = "第" + map.get("index") + "行"; String rowindex = SalaryI18nUtil.getI18nLabel(user.getLanguage(),542129,"错误行") + map.get("index") + ":"; + // 1.姓名 String userName = Optional.ofNullable(map.get(userNameI18n)).orElse("").toString(); String deparmentName = Optional.ofNullable(map.get(departmentI18n)).orElse("").toString(); @@ -396,6 +397,18 @@ public class SalaryArchiveExcelBO extends Service { employeeId = Long.valueOf(empId); } + if (isGwpltxWorkflow) { + DataCollectionEmployee emp = empMap.get(employeeId); + if (emp == null) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message","员工id"+ employeeId +"不存在"); + excelComments.add(errorMessageMap); + isError = true; + return isError; + } + rowindex = SalaryI18nUtil.getI18nLabel(user.getLanguage(),542129,"错误行") + emp.getUsername() + ":"; + } + if (employeeId == null) { Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", rowindex + SalaryI18nUtil.getI18nLabel(user.getLanguage(),544319, "查找人员失败,请确定姓名、部门、手机号正确且唯一")); @@ -667,7 +680,7 @@ public class SalaryArchiveExcelBO extends Service { // 7.薪资项目列处理(待定薪\定薪的初始化\定薪的调薪) } else { isError = handleSalaryItem(isError, effectiveTimeIndex, excelComments, errorCount, j, - effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, key.toString(), cellVal, map, user); + effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, key.toString(), cellVal, map, user, rowindex); } } @@ -817,10 +830,11 @@ public class SalaryArchiveExcelBO extends Service { public static boolean handleSalaryItem(boolean isError, int effectiveTimeIndex, List> excelComments, int errorCount, int j, Date effectiveTime, SalaryArchivePO finalSalaryArchive, String salaryItemAdjustReason, SalaryArchiveImportHandleParam importHandleParam, - String key, String cellVal, Map map, User user) { + String key, String cellVal, Map map, User user, String rowindex) { // String rowindex = "第" + map.get("index") + "行"; - String rowindex = SalaryI18nUtil.getI18nLabel(user.getLanguage(),542129,"错误行") + map.get("index") + ":"; +// String rowindex = SalaryI18nUtil.getI18nLabel(user.getLanguage(),542129,"错误行") + map.get("index") + ":"; + // 薪资项目数据 if (isError || importHandleParam.isSuspendList() || (importHandleParam.isSalaryItemAdjust() && effectiveTime == null) || finalSalaryArchive == null) { return isError; diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java index 06dc670c6..a0ad11f87 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java @@ -23,6 +23,9 @@ import java.util.Map; @NoArgsConstructor @AllArgsConstructor public class SalaryArchiveImportActionParam { + + // 是否是港湾批量调薪流程 + boolean gwpltxWorkflow; /** * 导入类型 * diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index 8410b3ff1..fcd96908f 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -293,10 +293,12 @@ e.departmentid as departmentId, d.DEPARTMENTNAME as departmentName, e.jobtitle as jobtitleId, + c.jobtitlename as jobtitleName, e.managerid as managerid, f.field${yggx} as yggx from hrmresource e left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id left join cus_fielddata f on f.id = e.id and f.SCOPEID=3 where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) diff --git a/src/com/engine/salary/mapper/salaryacct/GwPltxDt1Mapper.java b/src/com/engine/salary/mapper/salaryacct/GwPltxDt1Mapper.java new file mode 100644 index 000000000..642a66673 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/GwPltxDt1Mapper.java @@ -0,0 +1,78 @@ +package com.engine.salary.mapper.salaryacct; + +import com.engine.salary.entity.salaryacct.param.gwPltxSaveParam; +import com.engine.salary.entity.salaryacct.po.GwPltxDt1PO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName GwPltxDt1Mapper + * @date 2024/09/08 20:11 + * @description + */ +public interface GwPltxDt1Mapper { + + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(GwPltxDt1PO gwPltxDt1); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + GwPltxDt1PO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param gwPltxDt1 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(GwPltxDt1PO gwPltxDt1); + + /** + * 修改,修改所有字段 + * + * @param gwPltxDt1 修改的记录 + * @return 返回影响行数 + */ + int update(GwPltxDt1PO gwPltxDt1); + + /** + * 修改,忽略null字段 + * + * @param gwPltxDt1 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(GwPltxDt1PO gwPltxDt1); + + /** + * 删除记录 + * + * @param gwPltxDt1 待删除的记录 + * @return 返回影响行数 + */ + int delete(GwPltxDt1PO gwPltxDt1); + + void batchInsert(@Param("collection") List list); + + void batchUpdate(@Param("collection")List list); + + void deleteByIds(@Param("ids")List list); +} diff --git a/src/com/engine/salary/mapper/salaryacct/GwPltxDt1Mapper.xml b/src/com/engine/salary/mapper/salaryacct/GwPltxDt1Mapper.xml new file mode 100644 index 000000000..ecfde4776 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/GwPltxDt1Mapper.xml @@ -0,0 +1,529 @@ + + + + + + + + + + + + + + + + + + + + + + + + + t.id + , t.mainid + , t.xm + , t.bm + , t.gw + , t.qnjxfs + , t.jbgz + , t.dx + , t.dxhjbgz + , t.dxbl + , t.gskjywr + , t.hjxz + , t.dzhhjxz + , t.hjxzdzbl + , t.bz + , t.nzjj + + + + + + + + + + + + + + + INSERT INTO hrsa_gw_pltx_dt1 + + + + id, + + + mainid, + + + xm, + + + bm, + + + gw, + + + qnjxfs, + + + jbgz, + + + dx, + + + dxhjbgz, + + + dxbl, + + + gskjywr, + + + hjxz, + + + dzhhjxz, + + + hjxzdzbl, + + + bz, + + + nzjj, + + + delete_type, + + + + + #{id}, + + + #{mainid}, + + + #{xm}, + + + #{bm}, + + + #{gw}, + + + #{qnjxfs}, + + + #{jbgz}, + + + #{dx}, + + + #{dxhjbgz}, + + + #{dxbl}, + + + #{gskjywr}, + + + #{hjxz}, + + + #{dzhhjxz}, + + + #{hjxzdzbl}, + + + #{bz}, + + + #{nzjj}, + + + #{deleteType}, + + + + + + INSERT INTO hrsa_gw_pltx_dt1( + id, + mainid, + xm, + bm, + gw, + qnjxfs, + jbgz, + dx, + dxhjbgz, + dxbl, + gskjywr, + hjxz, + dzhhjxz, + hjxzdzbl, + bz, + nzjj, + delete_type + ) + VALUES + + ( + #{item.id}, + #{item.mainid}, + #{item.xm}, + #{item.bm}, + #{item.gw}, + #{item.qnjxfs}, + #{item.jbgz}, + #{item.dx}, + #{item.dxhjbgz}, + #{item.dxbl}, + #{item.gskjywr}, + #{item.hjxz}, + #{item.dzhhjxz}, + #{item.hjxzdzbl}, + #{item.bz}, + #{item.nzjj}, + #{item.deleteType} + ) + + + + + + INSERT INTO hrsa_gw_pltx_dt1( + id, + mainid, + xm, + bm, + gw, + qnjxfs, + jbgz, + dx, + dxhjbgz, + dxbl, + gskjywr, + hjxz, + dzhhjxz, + hjxzdzbl, + bz, + nzjj, + delete_type + ) + VALUES + ( + #{item.id}, + #{item.mainid}, + #{item.xm}, + #{item.bm}, + #{item.gw}, + #{item.qnjxfs}, + #{item.jbgz}, + #{item.dx}, + #{item.dxhjbgz}, + #{item.dxbl}, + #{item.gskjywr}, + #{item.hjxz}, + #{item.dzhhjxz}, + #{item.hjxzdzbl}, + #{item.bz}, + #{item.nzjj}, + #{item.deleteType} + ) + + + + + + UPDATE hrsa_gw_pltx_dt1 + + mainid=#{mainid}, + xm=#{xm}, + bm=#{bm}, + gw=#{gw}, + qnjxfs=#{qnjxfs}, + jbgz=#{jbgz}, + dx=#{dx}, + dxhjbgz=#{dxhjbgz}, + dxbl=#{dxbl}, + gskjywr=#{gskjywr}, + hjxz=#{hjxz}, + dzhhjxz=#{dzhhjxz}, + hjxzdzbl=#{hjxzdzbl}, + bz=#{bz}, + nzjj=#{nzjj}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_gw_pltx_dt1 + + + mainid=#{mainid}, + + + xm=#{xm}, + + + bm=#{bm}, + + + gw=#{gw}, + + + qnjxfs=#{qnjxfs}, + + + jbgz=#{jbgz}, + + + dx=#{dx}, + + + dxhjbgz=#{dxhjbgz}, + + + dxbl=#{dxbl}, + + + gskjywr=#{gskjywr}, + + + hjxz=#{hjxz}, + + + dzhhjxz=#{dzhhjxz}, + + + hjxzdzbl=#{hjxzdzbl}, + + + bz=#{bz}, + + + nzjj=#{nzjj}, + + + WHERE id = #{id} AND delete_type = 0 + + + + update hrsa_gw_pltx_dt1 + + + + + when id=#{item.id} then #{item.xm} + + + + + + + when id=#{item.id} then #{item.bm} + + + + + + + when id=#{item.id} then #{item.gw} + + + + + + + when id=#{item.id} then #{item.qnjxfs} + + + + + + + when id=#{item.id} then #{item.jbgz} + + + + + + + when id=#{item.id} then #{item.dx} + + + + + + + when id=#{item.id} then #{item.dxhjbgz} + + + + + + + when id=#{item.id} then #{item.dxbl} + + + + + + + when id=#{item.id} then #{item.gskjywr} + + + + + + + when id=#{item.id} then #{item.hjxz} + + + + + + + when id=#{item.id} then #{item.dzhhjxz} + + + + + + + when id=#{item.id} then #{item.hjxzdzbl} + + + + + + + when id=#{item.id} then #{item.bz} + + + + + + + when id=#{item.id} then #{item.nzjj} + + + + + where + id in + + #{item.id} + + + + + + + UPDATE hrsa_gw_pltx_dt1 + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + UPDATE hrsa_gw_pltx_dt1 + SET delete_type=1 + WHERE delete_type = 0 + + AND id IN + + #{id} + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt1Mapper.java b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt1Mapper.java new file mode 100644 index 000000000..eb31511fc --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt1Mapper.java @@ -0,0 +1,70 @@ +package com.engine.salary.mapper.salaryacct; + +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbDt1PO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName UfTxjlgljmbDt1Mapper + * @date 2024/09/09 10:05 + * @description + */ +public interface UfTxjlgljmbDt1Mapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(UfTxjlgljmbDt1PO ufTxjlgljmbDt1); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + UfTxjlgljmbDt1PO getById(Integer id); + + /** + * 新增,忽略null字段 + * + * @param ufTxjlgljmbDt1 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(UfTxjlgljmbDt1PO ufTxjlgljmbDt1); + + /** + * 修改,修改所有字段 + * + * @param ufTxjlgljmbDt1 修改的记录 + * @return 返回影响行数 + */ + int update(UfTxjlgljmbDt1PO ufTxjlgljmbDt1); + + /** + * 修改,忽略null字段 + * + * @param ufTxjlgljmbDt1 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(UfTxjlgljmbDt1PO ufTxjlgljmbDt1); + + /** + * 删除记录 + * + * @param ufTxjlgljmbDt1 待删除的记录 + * @return 返回影响行数 + */ + int delete(UfTxjlgljmbDt1PO ufTxjlgljmbDt1); + +} diff --git a/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt1Mapper.xml b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt1Mapper.xml new file mode 100644 index 000000000..85409fb1a --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt1Mapper.xml @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + + t.bm + , t.bz + , t.dx + , t.dxbl + , t.dxhjbgz + , t.dzhhjxz + , t.gskjywr + , t.gw + , t.hjgz + , t.hjxzdzbl + , t.id + , t.jbgz + , t.mainid + , t.nzjj + , t.qnjxfs + , t.Xm + + + + + + + + + + + + + + + INSERT INTO uf_txjlgljmb_dt1 + + + + bm, + + + bz, + + + dx, + + + dxbl, + + + dxhjbgz, + + + dzhhjxz, + + + gskjywr, + + + gw, + + + hjgz, + + + hjxzdzbl, + + + jbgz, + + + mainid, + + + nzjj, + + + qnjxfs, + + + Xm, + + + + + #{bm}, + + + #{bz}, + + + #{dx}, + + + #{dxbl}, + + + #{dxhjbgz}, + + + #{dzhhjxz}, + + + #{gskjywr}, + + + #{gw}, + + + #{hjgz}, + + + #{hjxzdzbl}, + + + #{jbgz}, + + + #{mainid}, + + + #{nzjj}, + + + #{qnjxfs}, + + + #{Xm}, + + + + + + + UPDATE uf_txjlgljmb_dt1 + + bm=#{bm}, + bz=#{bz}, + dx=#{dx}, + dxbl=#{dxbl}, + dxhjbgz=#{dxhjbgz}, + dzhhjxz=#{dzhhjxz}, + gskjywr=#{gskjywr}, + gw=#{gw}, + hjgz=#{hjgz}, + hjxzdzbl=#{hjxzdzbl}, + jbgz=#{jbgz}, + mainid=#{mainid}, + nzjj=#{nzjj}, + qnjxfs=#{qnjxfs}, + Xm=#{Xm}, + + WHERE id = #{id} + + + + + + UPDATE uf_txjlgljmb_dt1 + + + bm=#{bm}, + + + bz=#{bz}, + + + dx=#{dx}, + + + dxbl=#{dxbl}, + + + dxhjbgz=#{dxhjbgz}, + + + dzhhjxz=#{dzhhjxz}, + + + gskjywr=#{gskjywr}, + + + gw=#{gw}, + + + hjgz=#{hjgz}, + + + hjxzdzbl=#{hjxzdzbl}, + + + jbgz=#{jbgz}, + + + mainid=#{mainid}, + + + nzjj=#{nzjj}, + + + qnjxfs=#{qnjxfs}, + + + Xm=#{Xm}, + + + WHERE id = #{id} + + + + + + delete from uf_txjlgljmb_dt1 + WHERE id = #{id} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt2Mapper.java b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt2Mapper.java new file mode 100644 index 000000000..64dba6d84 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt2Mapper.java @@ -0,0 +1,71 @@ +package com.engine.salary.mapper.salaryacct; + +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbDt2PO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName UfTxjlgljmbDt2Mapper + * @date 2024/09/09 10:06 + * @description + */ +public interface UfTxjlgljmbDt2Mapper { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(UfTxjlgljmbDt2PO ufTxjlgljmbDt2); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + UfTxjlgljmbDt2PO getById(Integer id); + + /** + * 新增,忽略null字段 + * + * @param ufTxjlgljmbDt2 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(UfTxjlgljmbDt2PO ufTxjlgljmbDt2); + + /** + * 修改,修改所有字段 + * + * @param ufTxjlgljmbDt2 修改的记录 + * @return 返回影响行数 + */ + int update(UfTxjlgljmbDt2PO ufTxjlgljmbDt2); + + /** + * 修改,忽略null字段 + * + * @param ufTxjlgljmbDt2 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(UfTxjlgljmbDt2PO ufTxjlgljmbDt2); + + /** + * 删除记录 + * + * @param ufTxjlgljmbDt2 待删除的记录 + * @return 返回影响行数 + */ + int delete(UfTxjlgljmbDt2PO ufTxjlgljmbDt2); + + void deleteByMainId(@Param("mainId")Integer mainId); +} diff --git a/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt2Mapper.xml b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt2Mapper.xml new file mode 100644 index 000000000..c91491ded --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt2Mapper.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + t.bm + , t.dxze + , t.hjxzze + , t.id + , t.mainid + , t.rs + + + + + + + + + + + + + + + INSERT INTO uf_txjlgljmb_dt2 + + + + bm, + + + dxze, + + + hjxzze, + + + mainid, + + + rs, + + + + + #{bm}, + + + #{dxze}, + + + #{hjxzze}, + + + #{mainid}, + + + #{rs}, + + + + + + + UPDATE uf_txjlgljmb_dt2 + + bm=#{bm}, + dxze=#{dxze}, + hjxzze=#{hjxzze}, + mainid=#{mainid}, + rs=#{rs}, + + WHERE id = #{id} + + + + + + UPDATE uf_txjlgljmb_dt2 + + + bm=#{bm}, + + + dxze=#{dxze}, + + + hjxzze=#{hjxzze}, + + + mainid=#{mainid}, + + + rs=#{rs}, + + + WHERE id = #{id} + + + + + + delete from uf_txjlgljmb_dt2 + WHERE id = #{id} + + + delete from uf_txjlgljmb_dt2 where mainid = #{mainId} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt3Mapper.java b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt3Mapper.java new file mode 100644 index 000000000..a8985d605 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt3Mapper.java @@ -0,0 +1,72 @@ +package com.engine.salary.mapper.salaryacct; + +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbDt3PO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName UfTxjlgljmbDt3Mapper + * @date 2024/09/09 10:06 + * @description + */ +public interface UfTxjlgljmbDt3Mapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(UfTxjlgljmbDt3PO ufTxjlgljmbDt3); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + UfTxjlgljmbDt3PO getById(Integer id); + + /** + * 新增,忽略null字段 + * + * @param ufTxjlgljmbDt3 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(UfTxjlgljmbDt3PO ufTxjlgljmbDt3); + + /** + * 修改,修改所有字段 + * + * @param ufTxjlgljmbDt3 修改的记录 + * @return 返回影响行数 + */ + int update(UfTxjlgljmbDt3PO ufTxjlgljmbDt3); + + /** + * 修改,忽略null字段 + * + * @param ufTxjlgljmbDt3 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(UfTxjlgljmbDt3PO ufTxjlgljmbDt3); + + /** + * 删除记录 + * + * @param ufTxjlgljmbDt3 待删除的记录 + * @return 返回影响行数 + */ + int delete(UfTxjlgljmbDt3PO ufTxjlgljmbDt3); + + void deleteByMainId(@Param("mainId") Integer mainId); +} diff --git a/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt3Mapper.xml b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt3Mapper.xml new file mode 100644 index 000000000..5727a15de --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbDt3Mapper.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + t.bm + , t.dxbl + , t.dxye + , t.dxys + , t.dxysyed + , t.id + , t.mainid + + + + + + + + + + + + + + + INSERT INTO uf_txjlgljmb_dt3 + + + + bm, + + + dxbl, + + + dxye, + + + dxys, + + + dxysyed, + + + mainid, + + + + + #{bm}, + + + #{dxbl}, + + + #{dxye}, + + + #{dxys}, + + + #{dxysyed}, + + + #{mainid}, + + + + + + + UPDATE uf_txjlgljmb_dt3 + + bm=#{bm}, + dxbl=#{dxbl}, + dxye=#{dxye}, + dxys=#{dxys}, + dxysyed=#{dxysyed}, + mainid=#{mainid}, + + WHERE id = #{id} + + + + + + UPDATE uf_txjlgljmb_dt3 + + + bm=#{bm}, + + + dxbl=#{dxbl}, + + + dxye=#{dxye}, + + + dxys=#{dxys}, + + + dxysyed=#{dxysyed}, + + + mainid=#{mainid}, + + + WHERE id = #{id} + + + + + + delete from uf_txjlgljmb_dt3 + WHERE id = #{id} + + + + delete from uf_txjlgljmb_dt3 where mainid=#{mainId} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbMapper.java b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbMapper.java new file mode 100644 index 000000000..4095c52a2 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbMapper.java @@ -0,0 +1,68 @@ +package com.engine.salary.mapper.salaryacct; + +import com.engine.salary.entity.salaryacct.po.UfTxjlgljmbPO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName UfTxjlgljmbMapper + * @date 2024/09/09 10:05 + * @description + */ +public interface UfTxjlgljmbMapper { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(UfTxjlgljmbPO ufTxjlgljmb); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + UfTxjlgljmbPO getById(Integer id); + + /** + * 新增,忽略null字段 + * + * @param ufTxjlgljmb 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(UfTxjlgljmbPO ufTxjlgljmb); + + /** + * 修改,修改所有字段 + * + * @param ufTxjlgljmb 修改的记录 + * @return 返回影响行数 + */ + int update(UfTxjlgljmbPO ufTxjlgljmb); + + /** + * 修改,忽略null字段 + * + * @param ufTxjlgljmb 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(UfTxjlgljmbPO ufTxjlgljmb); + + /** + * 删除记录 + * + * @param ufTxjlgljmb 待删除的记录 + * @return 返回影响行数 + */ + int delete(UfTxjlgljmbPO ufTxjlgljmb); +} diff --git a/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbMapper.xml b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbMapper.xml new file mode 100644 index 000000000..0eeb53efa --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/UfTxjlgljmbMapper.xml @@ -0,0 +1,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + t.dxcj + , t.dxdecjspr + , t.dxdlcjspr + , t.dxdsacjspr + , t.dxdsicjspr + , t.dxdwcjspr + , t.dxdycjspr + , t.form_biz_id + , t.formmodeid + , t.fqrbm + , t.fqrgs + , t.fqrq + , t.fqrxm + , t.id + , t.modedatacreatedate + , t.modedatacreater + , t.modedatacreatertype + , t.modedatacreatetime + , t.modedatamodifier + , t.modedatamodifydatetime + , t.MODEUUID + , t.nd + , t.requestId + , t.spr + , t.Sxrq + + + + + + + + + + + + + + + INSERT INTO uf_txjlgljmb + + + + dxcj, + + + dxdecjspr, + + + dxdlcjspr, + + + dxdsacjspr, + + + dxdsicjspr, + + + dxdwcjspr, + + + dxdycjspr, + + + form_biz_id, + + + formmodeid, + + + fqrbm, + + + fqrgs, + + + fqrq, + + + fqrxm, + + + modedatacreatedate, + + + modedatacreater, + + + modedatacreatertype, + + + modedatacreatetime, + + + modedatamodifier, + + + modedatamodifydatetime, + + + MODEUUID, + + + nd, + + + requestId, + + + spr, + + + Sxrq, + + + + + #{dxcj}, + + + #{dxdecjspr}, + + + #{dxdlcjspr}, + + + #{dxdsacjspr}, + + + #{dxdsicjspr}, + + + #{dxdwcjspr}, + + + #{dxdycjspr}, + + + #{formBizId}, + + + #{formmodeid}, + + + #{fqrbm}, + + + #{fqrgs}, + + + #{fqrq}, + + + #{fqrxm}, + + + #{modedatacreatedate}, + + + #{modedatacreater}, + + + #{modedatacreatertype}, + + + #{modedatacreatetime}, + + + #{modedatamodifier}, + + + #{modedatamodifydatetime}, + + + #{modeuuid}, + + + #{nd}, + + + #{requestId}, + + + #{spr}, + + + #{Sxrq}, + + + + + + + UPDATE uf_txjlgljmb + + dxcj=#{dxcj}, + dxdecjspr=#{dxdecjspr}, + dxdlcjspr=#{dxdlcjspr}, + dxdsacjspr=#{dxdsacjspr}, + dxdsicjspr=#{dxdsicjspr}, + dxdwcjspr=#{dxdwcjspr}, + dxdycjspr=#{dxdycjspr}, + form_biz_id=#{formBizId}, + formmodeid=#{formmodeid}, + fqrbm=#{fqrbm}, + fqrgs=#{fqrgs}, + fqrq=#{fqrq}, + fqrxm=#{fqrxm}, + modedatacreatedate=#{modedatacreatedate}, + modedatacreater=#{modedatacreater}, + modedatacreatertype=#{modedatacreatertype}, + modedatacreatetime=#{modedatacreatetime}, + modedatamodifier=#{modedatamodifier}, + modedatamodifydatetime=#{modedatamodifydatetime}, + MODEUUID=#{modeuuid}, + nd=#{nd}, + requestId=#{requestId}, + spr=#{spr}, + Sxrq=#{Sxrq}, + + WHERE id = #{id} + + + + + + UPDATE uf_txjlgljmb + + + dxcj=#{dxcj}, + + + dxdecjspr=#{dxdecjspr}, + + + dxdlcjspr=#{dxdlcjspr}, + + + dxdsacjspr=#{dxdsacjspr}, + + + dxdsicjspr=#{dxdsicjspr}, + + + dxdwcjspr=#{dxdwcjspr}, + + + dxdycjspr=#{dxdycjspr}, + + + form_biz_id=#{formBizId}, + + + formmodeid=#{formmodeid}, + + + fqrbm=#{fqrbm}, + + + fqrgs=#{fqrgs}, + + + fqrq=#{fqrq}, + + + fqrxm=#{fqrxm}, + + + modedatacreatedate=#{modedatacreatedate}, + + + modedatacreater=#{modedatacreater}, + + + modedatacreatertype=#{modedatacreatertype}, + + + modedatacreatetime=#{modedatacreatetime}, + + + modedatamodifier=#{modedatamodifier}, + + + modedatamodifydatetime=#{modedatamodifydatetime}, + + + MODEUUID=#{modeuuid}, + + + nd=#{nd}, + + + requestId=#{requestId}, + + + spr=#{spr}, + + + Sxrq=#{Sxrq}, + + + WHERE id = #{id} + + + + + + delete from uf_txjlgljmb + + WHERE id = #{id} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/GwPltxDt1Service.java b/src/com/engine/salary/service/GwPltxDt1Service.java new file mode 100644 index 000000000..0d217923f --- /dev/null +++ b/src/com/engine/salary/service/GwPltxDt1Service.java @@ -0,0 +1,79 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryacct.param.gwPltxSaveParam; +import com.engine.salary.entity.salaryacct.po.GwPltxDt1PO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName GwPltxDt1Service + * @date 2024/09/08 20:13 + * @description + */ +public interface GwPltxDt1Service { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + public List listAll(); + + List listSome(GwPltxDt1PO param); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + public GwPltxDt1PO getById(Long id); + + + /** + * 新增,忽略null字段 + * + * @param gwPltxDt1 新增的记录 + * @return 返回影响行数 + */ + public int insertIgnoreNull(GwPltxDt1PO gwPltxDt1); + + /** + * 修改,修改所有字段 + * + * @param gwPltxDt1 修改的记录 + * @return 返回影响行数 + */ + public int update(GwPltxDt1PO gwPltxDt1); + + /** + * 修改,忽略null字段 + * + * @param gwPltxDt1 修改的记录 + * @return 返回影响行数 + */ + public int updateIgnoreNull(GwPltxDt1PO gwPltxDt1); + + /** + * 删除记录 + * + * @param gwPltxDt1 待删除的记录 + * @return 返回影响行数 + */ + public int delete(GwPltxDt1PO gwPltxDt1); + + /** + * 批量插入 + * @param needSaveList + */ + void batchInsert(List needSaveList); + + /** + * 批量更新 + * @param needUpdatelist + */ + void batchUpdate(List needUpdatelist); + + void deleteByIds(List needDeleteIds); +} diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index b11c18902..52204173e 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -4,6 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; +import com.engine.salary.entity.salaryacct.dto.pltxEmployeeDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.util.page.PageInfo; @@ -225,4 +226,23 @@ public interface SalaryAcctResultService { * @return */ Map fygsdReport(SalaryAcctRecordQueryParam param); + + /** + * 保存批量调薪明细表1信息 + * @param saveParam + */ + void pltxSaveDetails(List saveParam); + + /** + * 批量调薪明细列表 + * @param param + * @return + */ + List pltxDetailsList(PltxInitEmployeeParam param); + + /** + * 流程转建模 + * @param saveParam + */ + void pltxDetailsToMode(pltxDetailsToModeSaveParam saveParam); } diff --git a/src/com/engine/salary/service/impl/GwPltxDt1ServiceImpl.java b/src/com/engine/salary/service/impl/GwPltxDt1ServiceImpl.java new file mode 100644 index 000000000..c78a25fac --- /dev/null +++ b/src/com/engine/salary/service/impl/GwPltxDt1ServiceImpl.java @@ -0,0 +1,111 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryacct.param.gwPltxSaveParam; +import com.engine.salary.entity.salaryacct.po.GwPltxDt1PO; +import com.engine.salary.mapper.salaryacct.GwPltxDt1Mapper; +import com.engine.salary.service.GwPltxDt1Service; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName GwPltxDt1ServiceImpl + * @date 2024/09/08 20:13 + * @description + */ +public class GwPltxDt1ServiceImpl extends Service implements GwPltxDt1Service { + + + private GwPltxDt1Mapper getGwPltxDt1Mapper() { + return MapperProxyFactory.getProxy(GwPltxDt1Mapper.class); + } + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + public List listAll() { + return getGwPltxDt1Mapper().listAll(); + } + + @Override + public List listSome(GwPltxDt1PO param) { + return getGwPltxDt1Mapper().listSome(param); + } + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + public GwPltxDt1PO getById(Long id) { + return getGwPltxDt1Mapper().getById(id); + } + + /** + * 新增,忽略null字段 + * + * @param gwPltxDt1 新增的记录 + * @return 返回影响行数 + */ + public int insertIgnoreNull(GwPltxDt1PO gwPltxDt1) { + return getGwPltxDt1Mapper().insertIgnoreNull(gwPltxDt1); + } + + /** + * 修改,修改所有字段 + * + * @param gwPltxDt1 修改的记录 + * @return 返回影响行数 + */ + public int update(GwPltxDt1PO gwPltxDt1) { + return getGwPltxDt1Mapper().update(gwPltxDt1); + } + + /** + * 修改,忽略null字段 + * + * @param gwPltxDt1 修改的记录 + * @return 返回影响行数 + */ + public int updateIgnoreNull(GwPltxDt1PO gwPltxDt1) { + return getGwPltxDt1Mapper().updateIgnoreNull(gwPltxDt1); + } + + /** + * 删除记录 + * + * @param gwPltxDt1 待删除的记录 + * @return 返回影响行数 + */ + public int delete(GwPltxDt1PO gwPltxDt1) { + return getGwPltxDt1Mapper().delete(gwPltxDt1); + } + + @Override + public void batchInsert(List needSaveList) { + List> partition = Lists.partition(needSaveList, 100); + partition.forEach(list -> getGwPltxDt1Mapper().batchInsert(list)); + } + + @Override + public void batchUpdate(List needUpdatelist) { + List> partition = Lists.partition(needUpdatelist, 100); + partition.forEach(list -> getGwPltxDt1Mapper().batchUpdate(list)); + } + + @Override + public void deleteByIds(List needDeleteIds) { + if (CollectionUtils.isEmpty(needDeleteIds)) { + return; + } + List> partition = Lists.partition(needDeleteIds, 100); + partition.forEach(list -> getGwPltxDt1Mapper().deleteByIds(list)); + } +} diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 51b518036..d096dffce 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1802,6 +1802,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc .employeeName(emp.getUsername()) .bmId(emp.getDepartmentId()) .bmName(emp.getDepartmentName()) + .jobTitleId(emp.getJobtitleId()) + .jobTitleName(emp.getJobtitleName()) .gskjywr(rs.getString("gskjywr")) .qnjxfs(rs.getDouble("qnjxfs") == -1 ? null : rs.getDouble("qnjxfs")) .jbgz(rs.getDouble("jbgz") == -1 ? null : rs.getDouble("jbgz")) @@ -1810,6 +1812,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc .dxbl(rs.getDouble("dxbl") == -1 ? null : rs.getDouble("dxbl")) .hjgz(rs.getDouble("hjgz") == -1 ? null : rs.getDouble("hjgz")) .bz(rs.getString("bz")) + .nzjj(rs.getDouble("nzjj") == -1 ? null : rs.getDouble("nzjj")) .build()); } } @@ -1930,11 +1933,26 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc SalaryArchiveItemPO itemPO = jxgzArchiveItemList.get(0); jxgz = Double.valueOf(StringUtils.isEmpty(itemPO.getItemValue()) ? "0" : itemPO.getItemValue()); } + // 获取员工信息 + DataCollectionEmployee emp = getSalaryEmployeeService(user).getEmployeeById(salaryArchiveItemPO.getEmployeeId()); + int lastYear = new Integer(param.getSxrq()) - 1; + RecordSet rs = new RecordSet(); + rs.execute("select jxjg,ygxm from uf_jxjjmb where nd = '" + lastYear +"' and ygxm in ( "+ salaryArchiveItemPO.getEmployeeId() + " )"); + double jxjg = 0; + if (rs.next()) { + jxjg = rs.getDouble("jxjg") == -1 ? 0 : rs.getDouble("jxjg"); + } return pltxEmployeeDTO.builder() .employee(salaryArchiveItemPO.getEmployeeId()) + .employeeName(emp.getUsername()) + .bmId(emp.getDepartmentId()) + .bmName(emp.getDepartmentName()) + .jobTitleId(emp.getJobtitleId()) + .jobTitleName(emp.getJobtitleName()) .gskjywr(param.getGskjywr()) .jbgz(jbgz) .hjgz(jbgz+gwgz+jxgz) + .qnjxfs(jxjg) .build(); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index ecd0d3600..151e0682a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -29,13 +29,14 @@ import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.common.FilterEnum; +import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; +import com.engine.salary.mapper.salaryacct.*; import com.engine.salary.report.service.SalaryStatisticsReportService; import com.engine.salary.report.service.impl.SalaryStatisticsReportServiceImpl; import com.engine.salary.service.*; @@ -55,6 +56,7 @@ import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import com.weaver.general.TimeUtil; import com.weaver.util.threadPool.ThreadPoolUtil; import com.weaver.util.threadPool.constant.ModulePoolEnum; import com.weaver.util.threadPool.entity.LocalRunnable; @@ -66,12 +68,14 @@ import org.apache.commons.lang3.math.NumberUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.util.StopWatch; import weaver.conn.RecordSet; +import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.concurrent.BlockingDeque; @@ -197,6 +201,27 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private GwPltxDt1Service getGwPltxDt1Service(User user) { + return ServiceUtil.getService(GwPltxDt1ServiceImpl.class, user); + } + + private SalaryAcctExcelService getSalaryAcctExcelService(User user) { + return ServiceUtil.getService(SalaryAcctExcelServiceImpl.class, user); + } + + private UfTxjlgljmbMapper getUfTxjlgljmbMapper() { + return MapperProxyFactory.getProxy(UfTxjlgljmbMapper.class); + } + private UfTxjlgljmbDt1Mapper getUfTxjlgljmbDt1Mapper() { + return MapperProxyFactory.getProxy(UfTxjlgljmbDt1Mapper.class); + } + private UfTxjlgljmbDt2Mapper getUfTxjlgljmbDt2Mapper() { + return MapperProxyFactory.getProxy(UfTxjlgljmbDt2Mapper.class); + } + private UfTxjlgljmbDt3Mapper getUfTxjlgljmbDt3Mapper() { + return MapperProxyFactory.getProxy(UfTxjlgljmbDt3Mapper.class); + } + private SalaryCheckResultService salaryCheckResultService; @@ -1745,4 +1770,268 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return list; } + @Override + public void pltxSaveDetails(List saveParam) { + if (CollectionUtils.isEmpty(saveParam)) { + return; + } + Optional mainIdNull = saveParam.stream().filter(param -> param.getMainid() == null).findFirst(); + if (mainIdNull.isPresent()) { + throw new SalaryRunTimeException("流程id不能为空"); + } + boolean isCreateNode = saveParam.get(0).isCreateNode(); + Long mainId = saveParam.get(0).getMainid(); + // 保存的明细数据 + List needSaveList = saveParam.stream().filter(param -> param.getId() == null).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(needSaveList)) { + // 封装调薪后基本工资 + needSaveList.stream().forEach( param -> { + param.setId(IdGenerator.generate()); + param.setDeleteType(0); + BigDecimal dxValue = param.getDx() == null ? new BigDecimal(0) : param.getDx(); + BigDecimal jbgzValue = (param.getJbgz() == null || param.getJbgz().equals(BigDecimal.ZERO)) ? new BigDecimal("0") : param.getJbgz(); + param.setDxhjbgz(jbgzValue.add(dxValue)); + }); + getGwPltxDt1Service(user).batchInsert(needSaveList); + } + // 修改的明细数据 + List needUpdateList = saveParam.stream().filter(param -> param.getId() != null).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(needUpdateList)) { + // 获取现有数据 + List gwPltxDt1POS = getGwPltxDt1Service(user).listSome(GwPltxDt1PO.builder().mainid(needUpdateList.get(0).getMainid()).build()); + Map oldPOMap = SalaryEntityUtil.convert2Map(gwPltxDt1POS, GwPltxDt1PO::getId); + needUpdateList.stream().forEach( param -> { + GwPltxDt1PO oldValue = oldPOMap.get(param.getId()); + oldValue.setXm(param.getXm()); + oldValue.setBm(param.getBm()); + oldValue.setGw(param.getGw()); + oldValue.setQnjxfs(param.getQnjxfs()); + oldValue.setJbgz(param.getJbgz()); + oldValue.setDx(param.getDx()); + oldValue.setDxbl(param.getDxbl()); + oldValue.setGskjywr(param.getGskjywr()); + oldValue.setHjxz(param.getHjxz()); + oldValue.setDzhhjxz(param.getDzhhjxz()); + oldValue.setHjxzdzbl(param.getHjxzdzbl()); + oldValue.setBz(param.getBz()); + oldValue.setNzjj(param.getNzjj()); + oldValue.setDeleteType(0); + BigDecimal dxValue = param.getDx() == null ? new BigDecimal(0) : param.getDx(); + BigDecimal jbgzValue = (param.getJbgz() == null || param.getJbgz().equals(BigDecimal.ZERO)) ? new BigDecimal("0") : param.getJbgz(); + oldValue.setDxhjbgz(jbgzValue.add(dxValue)); + + getGwPltxDt1Service(user).update(oldValue); + }); + } + + if (isCreateNode) { + // 创建节点处理需要删除的数据 + List gwPltxDt1POS = getGwPltxDt1Service(user).listSome(GwPltxDt1PO.builder().mainid(mainId).build()); + if (CollectionUtils.isNotEmpty(gwPltxDt1POS)) { + List existIds = gwPltxDt1POS.stream().map(GwPltxDt1PO::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(needUpdateList)) { + // 删除所有数据 + getGwPltxDt1Service(user).deleteByIds(existIds); + } else { + List updateIds = needUpdateList.stream().map(gwPltxSaveParam::getId).collect(Collectors.toList()); + List needDeleteIds = existIds.stream().filter(id -> !updateIds.contains(id)).collect(Collectors.toList()); + getGwPltxDt1Service(user).deleteByIds(needDeleteIds); + } + } + } + } + + @Override + public List pltxDetailsList(PltxInitEmployeeParam param) { + if (param.getTxcj() == null || param.getSpr() == null) { + throw new SalaryRunTimeException("参数错误,调薪层级不存在"); + } + if (param.getRequestId() == null ) { + throw new SalaryRunTimeException("参数错误,requestid不存在"); + } + + // 如果是创建人,则可以查看所有数据 + RecordSet rs = new RecordSet(); + rs.execute("select creater from workflow_requestbase where requestid = " + param.getRequestId()); + boolean isCreator = false; + if (rs.next()) { + int creater = rs.getInt("creater"); + if (creater == param.getSpr()) { + isCreator = true; + } + } + List gwPltxDt1POS = getGwPltxDt1Service(user).listSome(GwPltxDt1PO.builder().mainid(param.getRequestId()).build()); + // 获取能够管理的权限 + List pltxEmployeeDTOS = getSalaryAcctExcelService(user).pltxFilterData(PltxInitEmployeeParam.builder().txcj(param.getTxcj()).spr(param.getSpr()).build()); + List canManageEmpIds = pltxEmployeeDTOS.stream().map(pltxEmployeeDTO::getEmployee).collect(Collectors.toList()); + if (!isCreator && CollectionUtils.isEmpty(canManageEmpIds)) { + // 不是创建人也没有管理权限 + return Collections.emptyList(); + } + if (!isCreator) { + // 不是创建人,要分权 + gwPltxDt1POS = gwPltxDt1POS.stream().filter(po -> canManageEmpIds.contains(Long.valueOf(po.getXm()))).collect(Collectors.toList()); + } + + Map empMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ORG), DataCollectionEmployee::getEmployeeId); + return gwPltxDt1POS.stream() + .map(po -> { + Long empId = Long.valueOf(po.getXm()); + DataCollectionEmployee emp = empMap.getOrDefault(empId, DataCollectionEmployee.builder().username("").departmentName("").departmentId(0L).build()); + return pltxEmployeeDTO.builder() + .id(po.getId()) + .employee(empId) + .employeeName(emp.getUsername()) + .bmId(emp.getDepartmentId()) + .bmName(emp.getDepartmentName()) + .jobTitleId(emp.getJobtitleId()) + .jobTitleName(emp.getJobtitleName()) + .gskjywr(po.getGskjywr()) + .qnjxfs(po.getQnjxfs() == null ? null : po.getQnjxfs().doubleValue()) + .jbgz(po.getJbgz() == null ? null : po.getJbgz().doubleValue()) + .dx(po.getDx() == null ? null : po.getDx().doubleValue()) + .dxhjbgz(po.getDxhjbgz() == null ? null : po.getDxhjbgz().doubleValue()) + .dxbl(po.getDxbl() == null ? null : po.getDxbl().doubleValue()) + .hjgz(po.getHjxz() == null ? null : po.getHjxz().doubleValue()) + .nzjj(po.getNzjj() == null ? null : po.getNzjj().doubleValue()) + .bz(po.getBz()) + .build(); + }).collect(Collectors.toList()); + } + + @Override + public void pltxDetailsToMode(pltxDetailsToModeSaveParam saveParam) { + // 处理主表, 先根据年度查询是否存在,若存在则更新 + Integer nd = saveParam.getTxjlgljmb().getNd(); + List ufTxjlgljmbPOS = getUfTxjlgljmbMapper().listSome(UfTxjlgljmbPO.builder().nd(nd).build()); + Integer mainId = 0; + BaseBean baseBean = new BaseBean(); + Integer fieldValue = Integer.valueOf( baseBean.getPropValue("shgwSalary", "pltx_mode_field_id")); + String currDate = TimeUtil.getCurrentDateString(); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); + String currTime = sdf.format(new Date()); + if (CollectionUtils.isNotEmpty(ufTxjlgljmbPOS)) { + // 更新 + UfTxjlgljmbPO txjlgljmb = saveParam.getTxjlgljmb(); + UfTxjlgljmbPO ufTxjlgljmbPO = ufTxjlgljmbPOS.get(0); + ufTxjlgljmbPO.setFqrxm(txjlgljmb.getFqrxm()); + ufTxjlgljmbPO.setFqrq(txjlgljmb.getFqrq()); + ufTxjlgljmbPO.setFqrbm(txjlgljmb.getFqrbm()); + ufTxjlgljmbPO.setFqrgs(txjlgljmb.getFqrgs()); + ufTxjlgljmbPO.setSxrq(txjlgljmb.getSxrq()); + ufTxjlgljmbPO.setSpr(txjlgljmb.getSpr()); + ufTxjlgljmbPO.setDxcj(txjlgljmb.getDxcj()); + ufTxjlgljmbPO.setDxdycjspr(txjlgljmb.getDxdycjspr()); + ufTxjlgljmbPO.setDxdecjspr(txjlgljmb.getDxdecjspr()); + ufTxjlgljmbPO.setDxdsacjspr(txjlgljmb.getDxdsacjspr()); + ufTxjlgljmbPO.setDxdsicjspr(txjlgljmb.getDxdsicjspr()); + ufTxjlgljmbPO.setDxdwcjspr(txjlgljmb.getDxdwcjspr()); + ufTxjlgljmbPO.setDxdlcjspr(txjlgljmb.getDxdlcjspr()); + ufTxjlgljmbPO.setNd(txjlgljmb.getNd()); + getUfTxjlgljmbMapper().update(ufTxjlgljmbPO); + mainId = ufTxjlgljmbPO.getId(); + } else { + // 新增 + UfTxjlgljmbPO txjlgljmb = saveParam.getTxjlgljmb(); + UfTxjlgljmbPO ufTxjlgljmbPO = new UfTxjlgljmbPO(); + ufTxjlgljmbPO.setFqrxm(txjlgljmb.getFqrxm()); + ufTxjlgljmbPO.setFqrq(txjlgljmb.getFqrq()); + ufTxjlgljmbPO.setFqrbm(txjlgljmb.getFqrbm()); + ufTxjlgljmbPO.setFqrgs(txjlgljmb.getFqrgs()); + ufTxjlgljmbPO.setSxrq(txjlgljmb.getSxrq()); + ufTxjlgljmbPO.setSpr(txjlgljmb.getSpr()); + ufTxjlgljmbPO.setDxcj(txjlgljmb.getDxcj()); + ufTxjlgljmbPO.setDxdycjspr(txjlgljmb.getDxdycjspr()); + ufTxjlgljmbPO.setDxdecjspr(txjlgljmb.getDxdecjspr()); + ufTxjlgljmbPO.setDxdsacjspr(txjlgljmb.getDxdsacjspr()); + ufTxjlgljmbPO.setDxdsicjspr(txjlgljmb.getDxdsicjspr()); + ufTxjlgljmbPO.setDxdwcjspr(txjlgljmb.getDxdwcjspr()); + ufTxjlgljmbPO.setDxdlcjspr(txjlgljmb.getDxdlcjspr()); + ufTxjlgljmbPO.setNd(txjlgljmb.getNd()); + ufTxjlgljmbPO.setFormmodeid(fieldValue); + ufTxjlgljmbPO.setModedatacreater(1); + ufTxjlgljmbPO.setModedatacreatertype(0); + ufTxjlgljmbPO.setModedatacreatedate(currDate); + ufTxjlgljmbPO.setModedatacreatetime(currTime); + getUfTxjlgljmbMapper().insertIgnoreNull(ufTxjlgljmbPO); + mainId = ufTxjlgljmbPO.getId(); + } + ModeRightInfo ModeRightInfo = new ModeRightInfo(); + ModeRightInfo.setNewRight(true); + ModeRightInfo.editModeDataShare(1, fieldValue,mainId); + + Integer finalMainId = mainId; + // 处理明细表1,先根据主表id查,再根据姓名更新 + List dt1POS = getUfTxjlgljmbDt1Mapper().listSome(UfTxjlgljmbDt1PO.builder().mainid(mainId).build()); + Map dt1MapByXm = SalaryEntityUtil.convert2Map(dt1POS, UfTxjlgljmbDt1PO::getXm); + saveParam.getDt1().stream().forEach(dt1 -> { + UfTxjlgljmbDt1PO dt1PO = dt1MapByXm.get(dt1.getXm()); + BigDecimal jbgzValue = (dt1.getJbgz() == null) ? new BigDecimal("0") : dt1.getJbgz(); + BigDecimal dxValue = (dt1.getDx() == null) ? new BigDecimal("0") : dt1.getDx(); + if (dt1PO == null) { + // 新增 + UfTxjlgljmbDt1PO ufTxjlgljmbDt1PO = new UfTxjlgljmbDt1PO(); + ufTxjlgljmbDt1PO.setMainid(finalMainId); + ufTxjlgljmbDt1PO.setXm(dt1.getXm()); + ufTxjlgljmbDt1PO.setBm(dt1.getBm()); + ufTxjlgljmbDt1PO.setGw(dt1.getGw()); + ufTxjlgljmbDt1PO.setQnjxfs(dt1.getQnjxfs()); + ufTxjlgljmbDt1PO.setJbgz(dt1.getJbgz()); + ufTxjlgljmbDt1PO.setDx(dt1.getDx()); + ufTxjlgljmbDt1PO.setDxhjbgz(jbgzValue.add(dxValue)); + ufTxjlgljmbDt1PO.setDxbl(dt1.getDxbl()); + ufTxjlgljmbDt1PO.setGskjywr(dt1.getGskjywr()); + ufTxjlgljmbDt1PO.setDzhhjxz(dt1.getDzhhjxz()); + ufTxjlgljmbDt1PO.setHjxzdzbl(dt1.getHjxzdzbl()); + ufTxjlgljmbDt1PO.setBz(dt1.getBz()); + ufTxjlgljmbDt1PO.setHjgz(dt1.getHjgz()); + ufTxjlgljmbDt1PO.setNzjj(dt1.getNzjj()); + getUfTxjlgljmbDt1Mapper().insertIgnoreNull(ufTxjlgljmbDt1PO); + } else { + // 更新 + dt1PO.setXm(dt1.getXm()); + dt1PO.setBm(dt1.getBm()); + dt1PO.setGw(dt1.getGw()); + dt1PO.setQnjxfs(dt1.getQnjxfs()); + dt1PO.setJbgz(dt1.getJbgz()); + dt1PO.setDx(dt1.getDx()); + dt1PO.setDxhjbgz(jbgzValue.add(dxValue)); + dt1PO.setDxbl(dt1.getDxbl()); + dt1PO.setGskjywr(dt1.getGskjywr()); + dt1PO.setDzhhjxz(dt1.getDzhhjxz()); + dt1PO.setHjxzdzbl(dt1.getHjxzdzbl()); + dt1PO.setBz(dt1.getBz()); + dt1PO.setHjgz(dt1.getHjgz()); + dt1PO.setNzjj(dt1.getNzjj()); + getUfTxjlgljmbDt1Mapper().update(dt1PO); + } + }); + + + + // 处理明细表2,覆盖,先删除后添加 + if (saveParam.getDt2() != null) { + getUfTxjlgljmbDt2Mapper().deleteByMainId(mainId); + saveParam.getDt2().stream().forEach(dt2 -> { + UfTxjlgljmbDt2PO ufTxjlgljmbDt2PO = new UfTxjlgljmbDt2PO(); + ufTxjlgljmbDt2PO.setMainid(finalMainId); + ufTxjlgljmbDt2PO.setBm(dt2.getBm()); + ufTxjlgljmbDt2PO.setRs(dt2.getRs()); + ufTxjlgljmbDt2PO.setDxze(dt2.getDxze()); + ufTxjlgljmbDt2PO.setHjxzze(dt2.getHjxzze()); + getUfTxjlgljmbDt2Mapper().insertIgnoreNull(ufTxjlgljmbDt2PO); + }); + } + + + // 处理明细表3,覆盖,先删除后添加 + if (saveParam.getDt3() != null) { + getUfTxjlgljmbDt3Mapper().deleteByMainId(mainId); + if (saveParam.getDt3() != null) { + saveParam.getDt3().setMainid(finalMainId); + getUfTxjlgljmbDt3Mapper().insertIgnoreNull(saveParam.getDt3()); + } + } + + } } \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java index c88de03c5..2336c640d 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java @@ -505,7 +505,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch map = data.get(i); map.put("index", i + 2); // 3.校验行内容 - boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, user); + boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, user, false, Collections.emptyMap()); if (isError) { errorCount += 1; // 添加错误数据 @@ -586,6 +586,8 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch // 错误sheet数据 List> errorData = new ArrayList<>(); + List employeeList = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); + Map empMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); for (int i = 0; i < data.size(); i++) { Map map = data.get(i); @@ -613,7 +615,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch map = data.get(i); map.put("index", i + 2); // 3.校验行内容 - boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, user); + boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, user, param.isGwpltxWorkflow(), empMap); if (isError) { errorCount += 1; // 添加错误数据 diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 00156d383..c689617a5 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -964,6 +964,52 @@ public class SalaryAcctController { } /**********************************上海港湾 批量调薪流程 end*********************************/ + /**********************************上海港湾 批量调薪流程 NEW start********************************/ + + /** + * 保存批量调薪明细表1信息 + * @param request + * @param response + * @return + */ + @POST + @Path("/pltxSaveDetails") + @Produces(MediaType.APPLICATION_JSON) + public String pltxSaveDetails(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody List saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getSalaryAcctResultWrapper(user)::pltxSaveDetails, saveParam); + } + + /** + * 获取批量调薪明细表1数据 + * @param request + * @param response + * @return + */ + @POST + @Path("/pltxDetailsList") + @Produces(MediaType.APPLICATION_JSON) + public String pltxDetailsList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PltxInitEmployeeParam param) { + User user = HrmUserVarify.getUser(request, response); + param.setSpr(user.getUID()); + return new ResponseResult>(user).run(getSalaryAcctResultWrapper(user)::pltxDetailsList, param); + } + + /** + * 批量调薪明细表 流程转建模 + * @param request + * @param response + * @return + */ + @POST + @Path("/pltxDetailsToMode") + @Produces(MediaType.APPLICATION_JSON) + public String pltxDetailsList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody pltxDetailsToModeSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::pltxDetailsToMode, param); + } + /**********************************上海港湾 批量调薪流程 NEW end*********************************/ + /**********************************上海港湾 薪酬报表 start*********************************/ // 港湾费用归属地报表 @POST diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index c6daf7cf6..3c71a897a 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -9,6 +9,7 @@ import com.engine.salary.entity.progress.ProgressDTO; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; +import com.engine.salary.entity.salaryacct.dto.pltxEmployeeDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.exception.SalaryRunTimeException; @@ -283,6 +284,22 @@ public class SalaryAcctResultWrapper extends Service { return getSalaryAcctResultService(user).fygsdReport(param); } + /** + * 保存批量调薪明细表1信息 + * @param saveParam + */ + public void pltxSaveDetails(List saveParam) { + getSalaryAcctResultService(user).pltxSaveDetails(saveParam); + } + + public List pltxDetailsList(PltxInitEmployeeParam param) { + return getSalaryAcctResultService(user).pltxDetailsList(param); + } + + public void pltxDetailsToMode(pltxDetailsToModeSaveParam saveParam) { + getSalaryAcctResultService(user).pltxDetailsToMode(saveParam); + } + /** * 薪资核算-校验 *