ChecklistDetailSaveAction.java
package com.mycim.webapp.actions.checklist;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.beans.PropertyUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.ems.Checklist;
import com.mycim.valueobject.ems.ChecklistItem;
import com.mycim.webapp.Constants;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.EmsSetupAction;
import com.mycim.webapp.forms.ChecklistInfoForm;
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.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
/**
* CheckList Action
*
* @author pinyan.song
* @version 6.0.0
* @date 2019-11-7 09:43
**/
public class ChecklistDetailSaveAction extends EmsSetupAction {
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
ChecklistInfoForm theform = (ChecklistInfoForm) form;
Checklist checklist = getCheckList(theform);
if (StringUtils.isNotEmpty(request.getParameter("onchange"))) {
return mapping.getInputForward();
}
PropertyUtils.copyProperties(theform, checklist);
if (request.getParameter(Constants.ITEM_KEY) != null) {
int checklistSequence = WebUtils.getParameterInt(Constants.ITEM_KEY, request);
for (Object o : checklist.getChecklistItems()) {
ChecklistItem checklistItem = (ChecklistItem) o;
if (checklistItem.getChecklistSequence() == checklistSequence) {
PropertyUtils.copyProperties(theform, checklistItem);
}
}
theform.setTransId(Constants.MODIFY_KEY);
} else {
if(request.getParameter("transId")!=null) {
theform.setTransId(request.getParameter("transId"));
}else {
theform.setTransId(Constants.CREATE_KEY);
}
}
return mapping.getInputForward();
}
public ActionForward create(ActionMapping mapping, ChecklistInfoForm theform, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Checklist checklist = verify(theform);
ChecklistItem checklistItem = getChecklistItem(theform, checklist);
validateThis(checklistItem);
checklistItem.setChecklistSequence(checklist.getChecklistItems().size() + 1);
checklistItem.setTransId(Constants.CREATE_KEY);
emsService.insertChecklistItem(checklistItem);
WebUtils.setSuccessMsg(request);
return mapping.findForward(Constants.CANCEL_KEY);
}
public ActionForward delete(ActionMapping mapping, ChecklistInfoForm theform, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Checklist checklist = getCheckList(theform);
ChecklistItem checklistItem = getChecklistItem(theform, checklist);
checklistItem.setTransId(Constants.DELETE_KEY);
emsService.deleteChecklistItem(checklistItem);
WebUtils.setSuccessMsg(request);
return mapping.findForward(Constants.CANCEL_KEY);
}
public ActionForward modify(ActionMapping mapping, ChecklistInfoForm theform, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Checklist checklist = verify(theform);
ChecklistItem checklistItem = getChecklistItem(theform, checklist);
checklistItem.setTransId(Constants.MODIFY_KEY);
emsService.updateChecklistItem(checklistItem);
WebUtils.setSuccessMsg(request);
return mapping.findForward(Constants.CANCEL_KEY);
}
private void validateThis(ChecklistItem checklistItem) throws Exception {
if (StringUtils.isNotEmpty(checklistItem.getParameterSetId())) {
long parameterSetRrn = getInstanceRrn(checklistItem.getParameterSetId(),
getNamedSpace(ObjectList.PARAMETERSET_KEY,
LocalContext.getFacilityRrn()),
ObjectList.PARAMETERSET_KEY);
Assert.isFalse(parameterSetRrn <= 0,
Errors.create().key(MessageIdList.SYSTEM_INSTANCE_NOT_FOUND).content("{} 没有找到对象!")
.args("Parameter set").build());
checklistItem.setParameterSetRrn(parameterSetRrn);
}
}
private void toUpCase(ChecklistInfoForm theform) {
if (theform.getParameterSetId() != null) {
theform.setParameterSetId(theform.getParameterSetId().trim().toUpperCase());
}
}
private Checklist getCheckList(ChecklistInfoForm theform) {
Checklist checklist = new Checklist(theform.getInstanceId().toUpperCase(),
getNamedSpace(ObjectList.CHECKLIST_KEY, LocalContext.getFacilityRrn()),
ObjectList.CHECKLIST_KEY);
checklist = (Checklist) getInstance(checklist);
checklist.setChecklistItems(emsService.getChecklistItems(checklist.getInstanceRrn()));
return checklist;
}
private Checklist verify(ChecklistInfoForm theform) {
Checklist checklist = getCheckList(theform);
if ((theform.getUpperLimit() != null) && (theform.getLowerLimit() != null)) {
Assert.isFalse(theform.getUpperLimit() < theform.getLowerLimit(),
Errors.create().key(MessageIdList.ENTITYPM_LOWER_NOT_GREATER_UPPER).content("下限值不能大于上限值!")
.build());
}
Assert.isFalse(StringUtils.isEmpty(theform.getDataType()),
Errors.create().key(MessageIdList.ENTITYPM_CHECKLIST_ITEM_TYPE_CANNOT_EMPTY).content("Checklist Item type不能为空!")
.build());
toUpCase(theform);
return checklist;
}
private ChecklistItem getChecklistItem(ChecklistInfoForm theform, Checklist checklist) {
ChecklistItem checklistItem = new ChecklistItem();
checklistItem.setChecklistItemId(theform.getChecklistItemId());
checklistItem.setChecklistItemDesc(theform.getChecklistItemDesc());
checklistItem.setDataType(theform.getDataType());
checklistItem.setUnit(theform.getUnit());
checklistItem.setBool(theform.getBool());
if (theform.getUpperLimit() != null) {
checklistItem.setUpperLimit(new Double(doubleFormat(theform.getUpperLimit())));
} else {
checklistItem.setUpperLimit(theform.getUpperLimit());
}
if (theform.getLowerLimit() != null) {
checklistItem.setLowerLimit(new Double(doubleFormat(theform.getLowerLimit())));
} else {
checklistItem.setLowerLimit(theform.getLowerLimit());
}
checklistItem.setBorRrn(theform.getBorRrn());
checklistItem.setParameterSetId(theform.getParameterSetId());
checklistItem.setChecklistVersion(0);
checklistItem.setChecklistSequence(theform.getChecklistSequence());
checklistItem.setChecklistRrn(checklist.getInstanceRrn());
// populate the new information thru the new instance id
checklistItem.setTransPerformedby(LocalContext.getUserId());
return checklistItem;
}
private String doubleFormat(Double d) {
DecimalFormat df = new DecimalFormat("0.###");
return df.format(d);
}
}