Commit 2b3b2045 by 龙于生

修复员工假期导入bug

parent 4c9a16af
...@@ -1789,46 +1789,92 @@ public class TimeCardController { ...@@ -1789,46 +1789,92 @@ public class TimeCardController {
@PostMapping(value = "/import_leave_balance") @PostMapping(value = "/import_leave_balance")
@ApiOperation(value = "导入假期余额数据", httpMethod = "POST", notes = "接口发布说明") @ApiOperation(value = "导入假期余额数据", httpMethod = "POST", notes = "接口发布说明")
public Result<Object> importLeaveBalance(@CurrentUser UserBean userBean, public Result<Object> importLeaveBalance(@CurrentUser UserBean userBean,
@RequestBody Object o) throws Exception { @RequestBody JSONArray jsonArray) {
int orgCode = userBean.getOrgCode();
Date now = new Date();
Integer orgCode = userBean.getOrgCode(); for (Object obj : jsonArray) {
JSONArray jsonArray = (JSONArray)o; JSONObject jsonObject = (JSONObject) obj;
for (Object object :jsonArray) { String empnumStr = jsonObject.getString("empnum");
JSONObject jsonObject = (JSONObject)object; if (StringUtils.isEmpty(empnumStr)) continue;
if(StringUtils.isEmpty(jsonObject.get("empnum"))){
int empnum;
try {
empnum = Integer.parseInt(empnumStr);
} catch (NumberFormatException e) {
log.warn("无效empnum: {}", empnumStr);
continue; continue;
} }
String empnum = jsonObject.get("empnum").toString();
for (Map.Entry<String, Object> entity:jsonObject.entrySet()) { for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
log.info("entity key:{},vlue{}",entity.getKey(),entity.getValue()); String key = entry.getKey();
if("empnum".equals(entity.getKey())){ if ("empnum".equals(key) || "department".equals(key)) continue;
}else if("department".equals(entity.getKey())){
}else{ int leaveRuleId;
Integer leaveRulesId = Integer.parseInt(entity.getKey()); try {
double balanceDays = 0; leaveRuleId = Integer.parseInt(key);
if(StringUtils.isEmpty(entity.getValue())){ } catch (NumberFormatException e) {
log.warn("跳过非法leaveRulesId: {}", key);
continue;
}
Object valueObj = entry.getValue();
if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) continue;
double balanceDays;
if ("不限制余额".equals(valueObj.toString())) {
balanceDays = -1;
} else {
try {
balanceDays = Double.parseDouble(valueObj.toString());
} catch (NumberFormatException e) {
log.warn("跳过非法balance值: {}", valueObj);
continue; continue;
}else {
if("不限制余额".equals(entity.getValue().toString())){
balanceDays = -1;
}else {
balanceDays = Double.parseDouble(entity.getValue().toString());
}
} }
//查询员工假期余额表中所对应的假期id }
KqglAssoLeaveEmployeeBalance emba = KqglAssoLeaveEmployeeBalance.builder().build().selectOne(new QueryWrapper<KqglAssoLeaveEmployeeBalance>().lambda().eq(KqglAssoLeaveEmployeeBalance::getLeaveRulesId, leaveRulesId)
.eq(KqglAssoLeaveEmployeeBalance::getUserid, empnum).eq(KqglAssoLeaveEmployeeBalance::getOrgCode, userBean.getOrgCode()));
if(emba != null && balanceDays > 0) {
if(emba.getBalanceDays() != -1) {//确认为限制余额的 // 获取之前的总余额
//修改最终的余额数 double beforeDays = kqglassoleavebalancemapper.Sumbalancedays(empnum, orgCode, leaveRuleId);
KqglAssoLeaveEmployeeBalance.builder().id(emba.getId()).balanceDays(balanceDays).build().updateById(); double diffDays = balanceDays - beforeDays;
} if (diffDays == 0) {
}else{ continue; //没有变更就不处理
if(emba.getBalanceDays() != -1) {//确认为限制余额的 }
//修改最终的余额数 KqglAssoLeaveBalance balance = new KqglAssoLeaveBalance();
KqglAssoLeaveEmployeeBalance.builder().id(emba.getId()).balanceDays(0).build().updateById(); balance.setUserid(empnum);
} balance.setLeaveRulesId(leaveRuleId);
balance.setOrgCode(orgCode);
balance.setModifyUserid(userBean.getEmpNum());
balance.setModifyTimer(now.getTime());
balance.setBalanceDays(diffDays >= 0 ? "+" + diffDays : String.valueOf(diffDays));
KqglAssoLeaveRules rules = KqglAssoLeaveRules.builder().build().selectOne(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getId, leaveRuleId));
balance.setReason("导入修改"+rules.getName());
// 获取最新的修改次数
KqglAssoLeaveBalance last = kqglassoleavebalancemapper.selectOne(
new QueryWrapper<KqglAssoLeaveBalance>()
.lambda()
.eq(KqglAssoLeaveBalance::getUserid, empnum)
.orderByDesc(KqglAssoLeaveBalance::getModifyNumber)
.last("LIMIT 1")
);
balance.setModifyNumber(last != null ? last.getModifyNumber() + 1 : 1);
if (balance.insert()) {
double latestBalance = kqglassoleavebalancemapper.Sumbalancedays(empnum, orgCode, leaveRuleId);
KqglAssoLeaveEmployeeBalance emba = KqglAssoLeaveEmployeeBalance.builder().build().selectOne(
new QueryWrapper<KqglAssoLeaveEmployeeBalance>()
.lambda()
.eq(KqglAssoLeaveEmployeeBalance::getLeaveRulesId, leaveRuleId)
.eq(KqglAssoLeaveEmployeeBalance::getUserid, empnum)
.eq(KqglAssoLeaveEmployeeBalance::getOrgCode, orgCode)
);
if (emba != null && emba.getBalanceDays() != -1) {
double updateVal = latestBalance > 0 ? latestBalance : 0;
KqglAssoLeaveEmployeeBalance.builder()
.id(emba.getId())
.balanceDays(updateVal)
.build()
.updateById();
} }
} }
} }
...@@ -1838,6 +1884,7 @@ public class TimeCardController { ...@@ -1838,6 +1884,7 @@ public class TimeCardController {
} }
/** /**
* 移除考勤机管理员 * 移除考勤机管理员
*/ */
......
...@@ -212,7 +212,7 @@ ...@@ -212,7 +212,7 @@
</select> --> </select> -->
<select id="Sumbalancedays" resultType="java.lang.Double"> <select id="Sumbalancedays" resultType="java.lang.Double">
select SUM(ba.balance_days) from kqgl_asso_leave_balance ba where ba.userid = #{userid} and ba.org_code = #{orgcode} and ba.leave_rules_id = #{leaverulesid} select COALESCE(SUM(ba.balance_days), 0) AS total_balance from kqgl_asso_leave_balance ba where ba.userid = #{userid} and ba.org_code = #{orgcode} and ba.leave_rules_id = #{leaverulesid}
</select> </select>
<!-- <!--
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment