OcapAbstractAction.java
package com.mycim.webapp.actions;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.context.spring.SpringContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.msg.JsonUtils;
import com.mycim.server.edcchart.service.EdcChartService;
import com.mycim.server.ocap.service.OcapService;
import com.mycim.valueobject.consts.ActionIdEnum;
import com.mycim.valueobject.consts.SpecifiedActionEnum;
import com.mycim.valueobject.consts.StepOwnerTypeEnum;
import com.mycim.valueobject.ocap.OcapCard;
import com.mycim.valueobject.security.UserGroup;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringJoiner;
/**
* OCAP
*
* @author songpy
* @version 1.0.0
* @date 2021/1/11
**/
public class OcapAbstractAction extends WipSetupAction {
protected OcapService ocapService = SpringContext.getBean(OcapService.class);
protected EdcChartService edcChartService = SpringContext.getBean(EdcChartService.class);
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
initSelectItem(request);
return mapping.getInputForward();
}
protected void initSelectItem(HttpServletRequest request) {
request.setAttribute("selectItems", JsonUtils.toString(getSelectItems()));
}
protected Map<String, List<Map<String, String>>> getSelectItems() {
Map<String, List<Map<String, String>>> result = new HashMap<>();
result.put("stepOwnerType", StepOwnerTypeEnum.toMapList());
result.put("specifiedAction", SpecifiedActionEnum.toMapList());
result.put("actionId", ActionIdEnum.toMapList());
return result;
}
protected void validOcapMainLot(OcapCard ocap) {
Assert.isFalse(StringUtils.isNotBlank(ocap.getOcapBatchId()) &&
!StringUtils.equalsIgnoreCase(ocap.getLotId(), ocap.getOcapMainLotId()),
Errors.create().content("Current ocap is in batch, please use {} to operate!")
.args(ocap.getOcapMainLotId()).build());
}
protected String getOcapSignerUserGroupIds(OcapCard ocap) {
String userGroupIds = ocapService.getNextSignerId(ocap);
Assert.isFalse(StringUtils.isEmpty(userGroupIds),
Errors.create().content("Current OCAP SignerId is Empty!").build());
if (!securityService.isAdminRole(LocalContext.getFacilityRrn(), LocalContext.getUserRrn())) {
StringJoiner userGroupIdJoiner = new StringJoiner(StringUtils.COMMA_SIGN);
List<UserGroup> userGroups = securityService.getUserGroupByUserRrn(LocalContext.getUserRrn());
for (UserGroup userGroup : userGroups) {
if (StringUtils.contains(userGroupIds, userGroup.getInstanceId())) {
userGroupIdJoiner.add(userGroup.getInstanceId());
}
}
userGroupIds = userGroupIdJoiner.toString();
}
return userGroupIds;
}
}