ConfirmHandleAction.java
package com.mycim.webapp.actions.step;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.valueobject.consts.SpecifiedActionEnum;
import com.mycim.valueobject.ocap.dto.DoActionDTO;
import com.mycim.valueobject.ocap.dto.OcapCardDTO;
import com.mycim.valueobject.ocap.dto.OcapDoActionDTO;
import com.mycim.valueobject.ocap.dto.OcapTransLogDTO;
import com.mycim.webapp.actions.OcapStepAbstractAction;
import javax.servlet.http.HttpServletRequest;
/**
* @author songpy
* @version 1.0.0
* @date 2021/5/25
**/
public class ConfirmHandleAction extends OcapStepAbstractAction {
public ConfirmHandleAction() {
this.actionType = SpecifiedActionEnum.CONFIRM_OCAP_HANDLE;
}
@Override
public void doAction(DoActionDTO actionDTO) throws Exception {
OcapDoActionDTO doActionDTO = buildBaseOcapDoActionDTO(actionDTO);
doActionDTO.setOcapId(actionDTO.getOcapId());
doActionDTO.setLotId(actionDTO.getLotId());
checkUser(doActionDTO);
super.doAction(actionDTO);
}
@Override
protected void setActionUrl(HttpServletRequest request) {
request.setAttribute(ACTION_URL_KEY, "ocapStepConfirmHandle.do");
}
/**
* check Confirm Handle的user 必须与 Handle Action user 不一致
*
* @param doActionDTO
*/
private void checkUser(OcapDoActionDTO doActionDTO) {
OcapCardDTO ocap = wipQueryService
.getOcapInfo(LocalContext.getFacilityRrn(), doActionDTO.getOcapId(), doActionDTO.getLotId());
if (CollectionUtils.isNotEmpty(ocap.getTransLogs())) {
OcapTransLogDTO logDTO = ocap.getTransLogs().get(0);
boolean equals = StringUtils.equalsIgnoreCase(logDTO.getSignerId(), doActionDTO.getUserId());
Assert.isFalse(equals, Errors.create().content(
"The double validation action must be different from the previous user").build());
}
}
}