Commit 2b3b2045 by 龙于生

修复员工假期导入bug

parent 4c9a16af
......@@ -1789,46 +1789,92 @@ public class TimeCardController {
@PostMapping(value = "/import_leave_balance")
@ApiOperation(value = "导入假期余额数据", httpMethod = "POST", notes = "接口发布说明")
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();
JSONArray jsonArray = (JSONArray)o;
for (Object object :jsonArray) {
JSONObject jsonObject = (JSONObject)object;
if(StringUtils.isEmpty(jsonObject.get("empnum"))){
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
String empnumStr = jsonObject.getString("empnum");
if (StringUtils.isEmpty(empnumStr)) continue;
int empnum;
try {
empnum = Integer.parseInt(empnumStr);
} catch (NumberFormatException e) {
log.warn("无效empnum: {}", empnumStr);
continue;
}
String empnum = jsonObject.get("empnum").toString();
for (Map.Entry<String, Object> entity:jsonObject.entrySet()) {
log.info("entity key:{},vlue{}",entity.getKey(),entity.getValue());
if("empnum".equals(entity.getKey())){
}else if("department".equals(entity.getKey())){
}else{
Integer leaveRulesId = Integer.parseInt(entity.getKey());
double balanceDays = 0;
if(StringUtils.isEmpty(entity.getValue())){
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
String key = entry.getKey();
if ("empnum".equals(key) || "department".equals(key)) continue;
int leaveRuleId;
try {
leaveRuleId = Integer.parseInt(key);
} 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;
}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) {//确认为限制余额的
//修改最终的余额数
KqglAssoLeaveEmployeeBalance.builder().id(emba.getId()).balanceDays(balanceDays).build().updateById();
}
}else{
if(emba.getBalanceDays() != -1) {//确认为限制余额的
//修改最终的余额数
KqglAssoLeaveEmployeeBalance.builder().id(emba.getId()).balanceDays(0).build().updateById();
}
// 获取之前的总余额
double beforeDays = kqglassoleavebalancemapper.Sumbalancedays(empnum, orgCode, leaveRuleId);
double diffDays = balanceDays - beforeDays;
if (diffDays == 0) {
continue; //没有变更就不处理
}
KqglAssoLeaveBalance balance = new KqglAssoLeaveBalance();
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 {
}
/**
* 移除考勤机管理员
*/
......
......@@ -212,7 +212,7 @@
</select> -->
<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>
<!--
......
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