diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index f5461aca6..89056c18f 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -242,4 +242,6 @@ public interface SalaryAcctResultService { * @return */ Map sumSalaryApprovalFields(SalaryAcctResultQueryParam param); + + String generateMzgCpddb(Date firstDayDateOfMonth, Date lastDayDateOfMonth); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 29b192074..8642a21f4 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -71,6 +71,7 @@ import org.apache.commons.lang3.math.NumberUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.util.StopWatch; import weaver.conn.RecordSet; +import weaver.conn.RecordSetDataSource; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.TimeUtil; @@ -1812,4 +1813,104 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } return resultMap; } + + @Override + public String generateMzgCpddb(Date firstDayDateOfMonth, Date lastDayDateOfMonth) { + BaseBean baseBean = new BaseBean(); + String dataSource = baseBean.getPropValue("mzgSalaryReport", "erp_datasource_name"); + RecordSetDataSource erpRs = new RecordSetDataSource(dataSource); + erpRs.execute("exec MG_ProdTOhr '"+SalaryDateUtil.getFormatLocalDate(firstDayDateOfMonth)+"','"+SalaryDateUtil.getFormatLocalDate(lastDayDateOfMonth) +"'"); + List mzgCpddList = new ArrayList<>(); + while (erpRs.next()) { + MzgCpddData cpddData = new MzgCpddData(); + cpddData.setBm(erpRs.getString("部门")); + cpddData.setZzzb(erpRs.getString("制作组别")); + cpddData.setScgdh(erpRs.getString("生产工单号")); + cpddData.setWlbh(erpRs.getString("物料编号")); + cpddData.setCpxh(erpRs.getString("产品型号")); + cpddData.setWlmc(erpRs.getString("物料名称")); + cpddData.setTzbh(erpRs.getString("图纸编号")); + cpddData.setRksl(erpRs.getString("入库数量")); + cpddData.setSl(erpRs.getString("数量")); + cpddData.setJournalid(erpRs.getString("日记帐号")); + cpddData.setRq(SalaryDateUtil.stringToDate(erpRs.getString("入库日期"))); + mzgCpddList.add(cpddData); + } + + + // 入库,权限重构 + if (CollectionUtils.isNotEmpty(mzgCpddList)) { + log.info("产品订单表同步开始入库"); + RecordSet rs = new RecordSet(); + // 入库前先删除 + String deleteSql = "delete from uf_cpddbtb where rq >=? and rq <= ?"; + rs.executeUpdate(deleteSql, new Object[]{SalaryDateUtil.getFormatLocalDate(firstDayDateOfMonth), SalaryDateUtil.getFormatLocalDate(lastDayDateOfMonth)}); + String currDate = String.format("'%s'", TimeUtil.getCurrentDateString()); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); + String currTime = String.format("'%s'", sdf.format(new Date())); + // 获取建模模块id + String modeId = baseBean.getPropValue("mzgSalaryReport", "cpddbtb_mode_id"); + // 先插入一条数据 + MzgCpddData firstData = mzgCpddList.get(0); + StringBuilder firstSb = new StringBuilder(); + firstSb.append("insert into uf_cpddbtb(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,journalid,bm,zzzb,scdgh,wlbh,cpxh,wlmc,tzbh,rksl,sl,rq) values ("); + firstSb.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'") + .append(firstData.getJournalid()).append("','") + .append(firstData.getBm()).append("','") + .append(firstData.getZzzb()).append("','") + .append(firstData.getScgdh()).append("','") + .append(firstData.getWlbh()).append("','") + .append(firstData.getCpxh()).append("','") + .append(firstData.getWlmc()).append("','") + .append(firstData.getTzbh()).append("','") + .append(firstData.getRksl()).append("','") + .append(firstData.getSl()).append("','") + .append(SalaryDateUtil.getFormatLocalDate(firstData.getRq())).append("')"); + rs.execute(firstSb.toString()); + mzgCpddList.remove(0); + // 获取最大值 作为权限重构的起始id + rs.execute("select max(id) from uf_cpddbtb"); + int minId = 0; + if (rs.next()) { + minId = rs.getInt(1); + } + int maxId = minId + mzgCpddList.size(); + + List> partition = Lists.partition(mzgCpddList, 500); + partition.forEach(part -> { + StringBuilder sb = new StringBuilder(); + sb.append("insert into uf_cpddbtb(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,journalid,bm,zzzb,scdgh,wlbh,cpxh,wlmc,tzbh,rksl,sl,rq) values "); + for (MzgCpddData data : part) { + sb.append("(") + .append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'") + .append(data.getJournalid()).append("','") + .append(data.getBm()).append("','") + .append(data.getZzzb()).append("','") + .append(data.getScgdh()).append("','") + .append(data.getWlbh()).append("','") + .append(data.getCpxh()).append("','") + .append(data.getWlmc()).append("','") + .append(data.getTzbh()).append("','") + .append(data.getRksl()).append("','") + .append(data.getSl()).append("','") + .append(SalaryDateUtil.getFormatLocalDate(data.getRq())).append("'),"); + } + rs.execute(sb.substring(0,sb.length()-1).toString()); + }); + log.info("产品订单表同步完成入库"); + log.info("产品订单表同步开始权限重构minid{},maxid{}",minId,maxId); + // 权限重构 + if (modeId != null && NumberUtils.isCreatable(modeId)) { + Integer modeIdValue = Integer.valueOf(modeId); + for (int i = minId; i <= maxId; i++) { + ModeRightInfo ModeRightInfo = new ModeRightInfo(); + ModeRightInfo.setNewRight(true); + ModeRightInfo.editModeDataShare(1, modeIdValue, i); + } + } + log.info("产品订单表同步完成权限重构minid{},maxid{}",minId,maxId); + } + + return ""; + } } \ No newline at end of file diff --git a/src/com/engine/salary/timer/AutoSyncMzgCpddb.java b/src/com/engine/salary/timer/AutoSyncMzgCpddb.java new file mode 100644 index 000000000..d70adcec4 --- /dev/null +++ b/src/com/engine/salary/timer/AutoSyncMzgCpddb.java @@ -0,0 +1,53 @@ +package com.engine.salary.timer; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.service.SalaryAcctResultService; +import com.engine.salary.service.impl.SalaryAcctResultServiceImpl; +import com.engine.salary.util.SalaryDateUtil; +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.LocalDate; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName AutoSyncAttendQuoteData + * @date 2023/08/11 9:53 + * @description 自动生成 美之高产品订单表(同步) + */ +public class AutoSyncMzgCpddb extends BaseCronJob { + + private String preMonth; + + private String salaryMonth; + + private SalaryAcctResultService getSalaryAcctResultService(User user) { + return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user); + } + + + @Override + public void execute() { + User tempUser = new User(); + tempUser.setUid(1); + tempUser.setLoginid("sysadmin"); + LocalDate localDate = SalaryDateUtil.dateToLocalDate(new Date()); + + int preMonthValue = -1; + if (preMonth != null && NumberUtils.isCreatable(preMonth)) { + preMonthValue = -1 * Integer.valueOf(preMonth); + } + localDate = localDate.plusMonths(preMonthValue); + Date date = SalaryDateUtil.localDateToDate(localDate); + if (StringUtils.isNotBlank(salaryMonth) && SalaryDateUtil.checkYearMonth(salaryMonth)) { + date = SalaryDateUtil.dateStrToLocalYearMonth(salaryMonth); + } + + Date firstDayDateOfMonth = SalaryDateUtil.getFirstDayDateOfMonthWithMinutesAndSeconds(date); + Date lastDayDateOfMonth = SalaryDateUtil.getLastDayDateOfMonthWithMinutesAndSeconds(date); + getSalaryAcctResultService(tempUser).generateMzgCpddb(firstDayDateOfMonth, lastDayDateOfMonth); + } +} diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index aae31afc5..82306ef91 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -950,4 +950,5 @@ public class SalaryAcctController { + } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 6260126a1..49ff1681b 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -288,6 +288,7 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult getSalaryAcctResultService(user).generateMzgCpjsgzdj(param); } + /** * 薪资核算-校验 *