MaterialSaveAction.java
package com.mycim.webapp.actions.material;
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.valueobject.MessageIdList;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.inv.MaterialDO;
import com.mycim.webapp.Constants;
import com.mycim.webapp.actions.AsmSetupAction;
import com.mycim.webapp.forms.MaterialInfoForm;
import org.apache.commons.beanutils.PropertyUtils;
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;
/**
* 物料设置
*
* @author weike.li
* @date 2019/8/22
* @since 1.8
**/
public class MaterialSaveAction extends AsmSetupAction {
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Long facilityRrn = LocalContext.getFacilityRrn();
MaterialInfoForm theform = (MaterialInfoForm) form;
String materialId = theform.getInstanceId().trim().toUpperCase();
MaterialDO material = asmService.getMaterial(facilityRrn, materialId);
if (material == null || material.getInstanceRrn() < 1) {
material = new MaterialDO(materialId, this.getNamedSpace(ObjectList.ITEM_KEY, facilityRrn),
ObjectList.ITEM_KEY);
material.setExpirationLength(28);
material.setTransId(Constants.CREATE_KEY);
} else {
material.setTransId(Constants.MODIFY_KEY);
}
PropertyUtils.copyProperties(theform, material);
return mapping.findForward(Constants.MODIFY_KEY);
}
@Override
public ActionForward cancel(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
MaterialInfoForm theform = (MaterialInfoForm) form;
theform.setInstanceId("");
return mapping.findForward(Constants.SETUP_KEY);
}
public ActionForward modify(ActionMapping mapping, MaterialInfoForm theform) throws Exception {
Long facilityRrn = LocalContext.getFacilityRrn();
MaterialDO material = asmService.getMaterial(facilityRrn, theform.getInstanceId());
validateMaterial(theform, material.getInstanceRrn());
PropertyUtils.copyProperties(material, theform);
material.setItemExtendNumber(
StringUtils.isBlank(material.getItemExtendNumber()) ? null : material.getItemExtendNumber());
material.setTransPerformedby(LocalContext.getUserId());
material.setObjectType(ObjectList.ITEM_MATERIAL_KEY);
asmService.updateMaterial(material);
theform.setTransId(Constants.MODIFY_KEY);
return mapping.findForward(Constants.MODIFY_KEY);
}
public ActionForward delete(ActionMapping mapping, MaterialInfoForm theform) {
Long facilityRrn = LocalContext.getFacilityRrn();
MaterialDO material = asmService.getMaterial(facilityRrn, theform.getInstanceId());
Assert.isFalse(asmService.isMaterialInUsed(material.getInstanceRrn()),
Errors.create().key(MessageIdList.MATERIAL_HAS_BEEN_USED)
.content("The Material is " + "being used and " + "cannot be " + "deleted!").build());
material.setTransPerformedby(LocalContext.getUserId());
asmService.deleteMaterial(material);
return mapping.findForward(Constants.SETUP_KEY);
}
public ActionForward create(ActionMapping mapping, MaterialInfoForm theform) throws Exception {
Long facilityRrn = LocalContext.getFacilityRrn();
validateMaterial(theform, 0L);
MaterialDO material = new MaterialDO(theform.getInstanceId(),
this.getNamedSpace(ObjectList.ITEM_KEY, facilityRrn), ObjectList.ITEM_KEY);
PropertyUtils.copyProperties(material, theform);
material.setItemExtendNumber(
StringUtils.isBlank(material.getItemExtendNumber()) ? null : material.getItemExtendNumber());
material.setTransPerformedby(LocalContext.getUserId());
material.setObjectType(ObjectList.ITEM_MATERIAL_KEY);
asmService.insertMaterial(material);
theform.setTransId(Constants.MODIFY_KEY);
return mapping.findForward(Constants.MODIFY_KEY);
}
void validateMaterial(MaterialInfoForm theform, Long materialRrn) {
Assert.isFalse(StringUtils.isEmpty(theform.getObjectSubtype()),
Errors.create().key(MessageIdList.MATERIAL_TYPE_SELECT).content("请选择材料类型").build());
validateAlarmId(theform);
Assert.isFalse(asmService.hasMaterialExtNumber(materialRrn, theform.getItemExtendNumber()),
Errors.create().key(MessageIdList.MATERIAL_ID_ALREADY_EXISTS).content("物料附加号已经存在!请重新输入")
.build());
}
protected void validateAlarmId(MaterialInfoForm theform) {
String alarmId = theform.getExpirationAlarmId().trim().toUpperCase();
if (StringUtils.isNotEmpty(alarmId)) {
boolean isalarm = alarmService.isAlarmID("SYSTEM", alarmId);
Assert.isTrue(isalarm, Errors.create().key(MessageIdList.ALARM_MISSING).content("警报不存在").build());
theform.setExpirationAlarmId(alarmId);
}
}
}