ResistMappingAction.java

package com.mycim.webapp.actions.resistMapping;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.i18n.I18nUtils;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.utils.beans.BeanUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.ems.ResistEnum;
import com.mycim.valueobject.ems.ResistEqptMapping;
import com.mycim.valueobject.ems.ResistMapping;
import com.mycim.webapp.actions.ResistSetupAction;
import com.mycim.webapp.forms.ResistMappingForm;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

/**
 * @author yanbing.chen
 * @version 6.0.0
 * @date 2019/10/30
 **/
public class ResistMappingAction extends ResistSetupAction {

    public ActionForward initResistMapping(HttpServletRequest request, ActionMapping mapping) {
        return mapping.findForward("resistMapping");
    }

    public Map queryResistMapping(Map argMap) {
        Page resistMappingPage = new Page(MapUtils.getInteger(argMap, "page"), MapUtils.getInteger(argMap, "limit"));
        resistMappingPage = resistService.qryResistMappingByPage(resistMappingPage, argMap);

        Map pageJson = new HashMap();
        pageJson.put("totalItems", resistMappingPage.getTotalItems() + "");
        pageJson.put("items", resistMappingPage.getResults());
        return pageJson;
    }

    public void checkResistNo(ResistMapping mapping) {
        String resistNo = mapping.getResistNo().toUpperCase();
        ResistMapping resistMapping = resistService.getResistMappingByResistNo(resistNo);
        Assert.isFalse(resistMapping != null, Errors.create().key(MessageIdList.RESIST_RESISTMAPPING_IS_EXIST)
                                                    .content("ResistMapping is exist!").build());
    }

    public void addResistMapping(ResistMappingForm theform) {
        String user = LocalContext.getUserId();

        theform.setResistNo(StringUtils.trimToUpperCase(theform.getResistNo()));
        theform.setResistName(StringUtils.trimToUpperCase(theform.getResistName()));
        theform.setMaterialNo(StringUtils.trimToUpperCase(theform.getMaterialNo()));

        String resistNo = theform.getResistNo();

        ResistMapping resistMappingTmp = resistService.getResistMappingByResistNo(resistNo);

        Assert.isFalse(resistMappingTmp != null, Errors.create().key(MessageIdList.RESIST_RESISTMAPPING_IS_EXIST)
                                                       .content("ResistMapping is exist!").build());

        validParams(theform);

        ResistMapping resistMapping = new ResistMapping();

        ConvertUtils.register(new DateConverter(null), java.util.Date.class);
        BeanUtils.copyProperties(theform, resistMapping);
        resistMapping.setCreateBy(user);
        resistMapping.setModifyBy(user);
        resistService.addResistMapping(resistMapping);
    }

    public void modifyResistMapping(ResistMappingForm theform) {
        String user = LocalContext.getUserId();
        theform.setResistNo(StringUtils.trimToUpperCase(theform.getResistNo()));
        theform.setResistName(StringUtils.trimToUpperCase(theform.getResistName()));
        theform.setMaterialNo(StringUtils.trimToUpperCase(theform.getMaterialNo()));
        String resistNo = theform.getResistNo();

        ResistMapping resistMappingTmp = resistService.getResistMappingByResistNo(resistNo);

        Assert.isFalse(resistMappingTmp == null, Errors.create().key(MessageIdList.RESIST_RESISTMAPPING_MISSING)
                                                       .content("ResistMapping is missing!").build());

        validParams(theform);

        ResistMapping resistMapping = new ResistMapping();
        ConvertUtils.register(new DateConverter(null), java.util.Date.class);

        BeanUtils.copyProperties(theform, resistMapping);
        resistMapping.setModifyBy(user);
        resistService.modifyResistMapping(resistMapping);
    }

    public void deleteResistMapping(ResistMappingForm theform) {
        String user = LocalContext.getUserId();
        String resistNo = StringUtils.trimToUpperCase(theform.getResistNo());

        ResistMapping resistMapping = resistService.getResistMappingByResistNo(resistNo);

        Assert.isFalse(resistMapping == null, Errors.create().key(MessageIdList.RESIST_RESISTMAPPING_MISSING)
                                                    .content("ResistMapping is missing!").build());

        Map<String, Object> argMap = new HashMap<String, Object>();

        argMap.put("resistNo", resistNo);

        Page page = new Page(1, 2);

        page = resistService.qryResistByPage(page, argMap);

        Assert.isFalse(page.getResults() != null && !page.getResults().isEmpty(),
                       Errors.create().key(MessageIdList.RESIST_USED_BY_RESIST)
                             .content("ResistMapping is used by resist!").build());

        ResistEqptMapping mapping = new ResistEqptMapping();
        mapping.setResistNo(resistMapping.getResistNo());
        page = new Page(1, 2);
        page = resistService.qryResistEqptMappingByPage(mapping, page);

        Assert.isFalse(page.getResults() != null && !page.getResults().isEmpty(),
                       Errors.create().key(MessageIdList.RESIST_USED_BY_RESIST_MAPPING)
                             .content("ResistMapping " + "is used by " + "resist eqpt " + "mapping!").build());

        resistMapping.setModifyBy(user);
        resistService.deleteResistMapping(resistMapping);

    }

    private void validParams(ResistMappingForm theform) {
        String language = I18nUtils.getCurrentLanguage().toString();
        StringBuilder sb = new StringBuilder();

        if (StringUtils.isBlank(theform.getResistNo()) || theform.getResistNo().length() != 7) {
            sb.append(StringUtils.equalsIgnoreCase("EN", language) ? "Length of ResistNo must be 7!</br>" :
                              "ResistNo长度必须是7" + "!</br>");
        }
        if (StringUtils.isBlank(theform.getResistName())) {
            sb.append(StringUtils.equalsIgnoreCase("EN", language) ? "ResistName cannot be empty!</br>" :
                              "ResistName " + "不能为空!</br>");
        }

        if (StringUtils.isBlank(theform.getMaterialNo())) {
            sb.append(StringUtils.equalsIgnoreCase("EN", language) ? "MaterialNo cannot be empty!</br>" :
                              "MaterialNo " + "不能为空!</br>");
        }

        if (convertTime(StringUtils.trimToUpperCase(theform.getDefrostTime())) == 0) {
            sb.append(StringUtils.equalsIgnoreCase("EN", language) ? "Defrost Time not a valid time!" : " 退冰时间无效 !");
        }

        if (StringUtils
                .equalsIgnoreCase(theform.getLifeTimeType(), ResistEnum.BUFFER_DAYS_AFTER_DEFROST_TYPE.getValue())) {
            if (theform.getBufferDays() <= 0) {
                sb.append(StringUtils.equalsIgnoreCase("EN", language) ? "Buffer days cannot be empty!" : "缓冲时间不能为空 !");
            }
        }

        Assert.isFalse(StringUtils.isNotEmpty(sb.toString()), Errors.create().content(sb.toString()).build());

        theform.setDefrosTimsec(convertTime(StringUtils.trimToUpperCase(theform.getDefrostTime())));
    }

}