You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
7.3 KiB
Java
156 lines
7.3 KiB
Java
package com.engine.kq.cmd.balanceofleavedetail;
|
|
|
|
import com.engine.common.biz.AbstractCommonCommand;
|
|
import com.engine.common.biz.SimpleBizLogger;
|
|
import com.engine.common.constant.BizLogSmallType4Hrm;
|
|
import com.engine.common.constant.BizLogType;
|
|
import com.engine.common.entity.BizLogContext;
|
|
import com.engine.core.interceptor.CommandContext;
|
|
import com.engine.kq.biz.KQLeaveRulesComInfo;
|
|
import com.engine.kq.biz.KQUsageHistoryBiz;
|
|
import com.engine.kq.entity.KQBalanceOfLeaveEntity;
|
|
import com.engine.kq.entity.KQUsageHistoryEntity;
|
|
import weaver.conn.RecordSet;
|
|
import weaver.general.Util;
|
|
import weaver.hrm.User;
|
|
import weaver.systeminfo.SystemEnv;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.util.*;
|
|
|
|
/**
|
|
* 修改
|
|
*/
|
|
public class EditBalanceCmd extends AbstractCommonCommand<Map<String, Object>> {
|
|
|
|
private SimpleBizLogger logger;
|
|
|
|
public EditBalanceCmd(Map<String, Object> params, User user) {
|
|
this.user = user;
|
|
this.params = params;
|
|
this.logger = new SimpleBizLogger();
|
|
|
|
String id = Util.null2String(params.get("id"));
|
|
BizLogContext bizLogContext = new BizLogContext();
|
|
bizLogContext.setLogType(BizLogType.HRM_ENGINE);//模块类型
|
|
bizLogContext.setBelongType(BizLogSmallType4Hrm.HRM_ENGINE_KQ_BALANCEOFLEAVE);//所属大类型
|
|
bizLogContext.setLogSmallType(BizLogSmallType4Hrm.HRM_ENGINE_KQ_BALANCEOFLEAVE);//当前小类型
|
|
bizLogContext.setParams(params);//当前request请求参数
|
|
logger.setUser(user);//当前操作人
|
|
String mainSql = "select * from KQ_BalanceOfLeave where (isDelete is null or isDelete<>1) and id =" + id;
|
|
logger.setMainSql(mainSql, "id");//主表sql
|
|
logger.setMainPrimarykey("id");//主日志表唯一key
|
|
logger.setMainTargetNameMethod("com.engine.kq.util.KQTransMethod.getTargetName4BalanceDetail", "column:resourceId+column:belongYear+column:belongMonth+" + user.getLanguage());
|
|
logger.before(bizLogContext);
|
|
}
|
|
|
|
@Override
|
|
public BizLogContext getLogContext() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<BizLogContext> getLogContexts() {
|
|
return logger.getBizLogContexts();
|
|
}
|
|
|
|
@Override
|
|
public Map<String, Object> execute(CommandContext commandContext) {
|
|
Map<String, Object> resultMap = new HashMap<String, Object>();
|
|
try {
|
|
//获取当前日期,当前时间
|
|
Calendar today = Calendar.getInstance();
|
|
//当前日期
|
|
String currentDate = Util.add0(today.get(Calendar.YEAR), 4) + "-" +
|
|
Util.add0(today.get(Calendar.MONTH) + 1, 2) + "-" +
|
|
Util.add0(today.get(Calendar.DAY_OF_MONTH), 2);
|
|
//当前时间
|
|
String currentTime = Util.add0(today.get(Calendar.HOUR_OF_DAY), 2) + ":" +
|
|
Util.add0(today.get(Calendar.MINUTE), 2) + ":" +
|
|
Util.add0(today.get(Calendar.SECOND), 2);
|
|
|
|
String id = Util.null2String(params.get("id"));
|
|
String overtimeType = Util.null2String(params.get("overtimeType"));
|
|
String totalAmount = Util.null2String(params.get("totalAmount"));//总数
|
|
String usedAmount = Util.null2String(params.get("usedAmount"));
|
|
String tiaoxiuAmount = Util.null2String(params.get("tiaoxiuamount"));
|
|
String effectiveDate = Util.null2String(params.get("effectiveDate"));
|
|
String expirationDate = Util.null2String(params.get("expirationDate"));
|
|
|
|
double _totalAmount = Util.getDoubleValue(totalAmount, 0.00);
|
|
double _usedAmount = Util.getDoubleValue(usedAmount, 0.00);
|
|
double _tiaoxiuAmount = Util.getDoubleValue(tiaoxiuAmount, 0.00);
|
|
BigDecimal _tiaoxiuamount = new BigDecimal(Util.getDoubleValue(tiaoxiuAmount, 0.00)).setScale(2,RoundingMode.HALF_UP);
|
|
/*已休不能大于总数*/
|
|
/* if ((_totalAmount+_tiaoxiuAmount) < _usedAmount) {
|
|
resultMap.put("sign", "-1");
|
|
resultMap.put("message", SystemEnv.getHtmlLabelName(529202, user.getLanguage()));
|
|
return resultMap;
|
|
}*/
|
|
/*失效日期不能小于加班日期*/
|
|
if (!"".equals(expirationDate)&& !"".equals(effectiveDate) && expirationDate.compareTo(effectiveDate) < 0) {
|
|
resultMap.put("sign", "-1");
|
|
resultMap.put("message", SystemEnv.getHtmlLabelName(508125, user.getLanguage()));
|
|
return resultMap;
|
|
}
|
|
String oldExtraAmount = "";
|
|
String oldUsedAmount = "";
|
|
|
|
KQLeaveRulesComInfo rulesComInfo = new KQLeaveRulesComInfo();
|
|
|
|
List<KQUsageHistoryEntity> entities = new ArrayList<KQUsageHistoryEntity>();
|
|
KQUsageHistoryEntity entity = new KQUsageHistoryEntity();
|
|
entity.setInsertOrUpdate("update");
|
|
entity.setNewExtraAmount(totalAmount);
|
|
entity.setWfRequestId("0");
|
|
entity.setNewUsedAmount(usedAmount);
|
|
|
|
String searchSql = "select * from KQ_BalanceOfLeave where id=? ";
|
|
RecordSet recordSet = new RecordSet();
|
|
recordSet.executeQuery(searchSql, id);
|
|
if (recordSet.next()) {
|
|
String resourceId = recordSet.getString("resourceId");
|
|
String leaveRulesId = recordSet.getString("leaveRulesId");
|
|
String miniumUnit = rulesComInfo.getMinimumUnit(leaveRulesId);
|
|
String belongYear = recordSet.getString("belongYear");
|
|
oldExtraAmount = Util.null2s(recordSet.getString("extraAmount"), "0.00");
|
|
oldUsedAmount = Util.null2s(recordSet.getString("usedAmount"),"0.00");
|
|
|
|
entity.setRelatedId(resourceId);
|
|
entity.setLeaveRulesId(leaveRulesId);
|
|
entity.setOperator("" + user.getUID());
|
|
entity.setOperateDate(currentDate);
|
|
entity.setOperateTime(currentTime);
|
|
entity.setOperateType("5");
|
|
entity.setOldMinimumUnit(miniumUnit);
|
|
entity.setNewMinimumUnit(miniumUnit);
|
|
entity.setBelongYear(belongYear);
|
|
entity.setOldExtraAmount(oldExtraAmount);
|
|
entity.setOldUsedAmount(oldUsedAmount);
|
|
}
|
|
entities.add(entity);
|
|
|
|
String sql = "update KQ_BalanceOfLeave set baseAmount=0,extraAmount=?,usedAmount=?,effectiveDate=?,expirationDate=?,tiaoxiuamount=? where id=?";
|
|
boolean flag = recordSet.executeUpdate(sql, totalAmount, usedAmount, effectiveDate, expirationDate,_tiaoxiuamount.toPlainString(), id);
|
|
if (flag) {
|
|
if (oldExtraAmount.compareTo(totalAmount) != 0 || oldUsedAmount.compareTo(usedAmount) != 0) {
|
|
KQUsageHistoryBiz usageHistoryBiz = new KQUsageHistoryBiz();
|
|
usageHistoryBiz.save(entities);
|
|
}
|
|
|
|
resultMap.put("sign", "1");
|
|
resultMap.put("message", SystemEnv.getHtmlLabelName(83551, user.getLanguage()));
|
|
} else {
|
|
resultMap.put("sign", "-1");
|
|
resultMap.put("message", SystemEnv.getHtmlLabelName(84544, user.getLanguage()));
|
|
}
|
|
} catch (Exception e) {
|
|
writeLog(e);
|
|
resultMap.put("status", "-1");
|
|
resultMap.put("message", e.getMessage());
|
|
}
|
|
return resultMap;
|
|
}
|
|
}
|