SysParameterSetAction.java

package com.mycim.webapp.actions.setting.system.sysparameterset;

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.utils.beans.BeanUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.sys.ReferenceFileDetail;
import com.mycim.valueobject.sys.SysParameterSet;
import com.mycim.webapp.Constants;
import com.mycim.webapp.TemplateLocation;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.SystemSetupAction;
import com.mycim.webapp.forms.system.SysParameterSetInfoForm;
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;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 系统参数设置 功能
 *
 * @author Pinyan Song
 * @version 6.0.0
 * @date 2019-8-20 10:48
 **/
public class SysParameterSetAction extends SystemSetupAction {

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm theform, HttpServletRequest request,
                              HttpServletResponse response) {

        return mapping.getInputForward();
    }

    /**
     * @param form
     * @return
     */
    public SysParameterSetInfoForm getSysParaSet(SysParameterSetInfoForm form) {
        Long menuRrn = form.getMenuParameterRrn();
        SysParameterSet sysParameterSet = new SysParameterSet();
        if (menuRrn != null) {
            sysParameterSet = sysService.getSysParameterSet(menuRrn);
            if (sysParameterSet != null) {
                BeanUtils.copyProperties(form, sysParameterSet);
            }
            form.setTransId(Constants.MODIFY_KEY);
        } else {
            BeanUtils.copyProperties(form, sysParameterSet);
            form.setTransId(Constants.CREATE_KEY);
        }
        return form;
    }

    public ActionForward exportSysParaSet(ActionMapping mapping, SysParameterSetInfoForm theform,
                                          HttpServletRequest request, HttpServletResponse response) throws Exception {
        List<Map> sysParaSetList = (List<Map>) qrySysParaSetList(theform).get("results");
        String fileName = "SystemData" + DateUtils.getNowTime(DateUtils.DATE_FORMAT4DAYD) + ".xlsx";
        Map<String, Object> titles = WebUtils.getExportTitles(request);
        WebUtils.exportExcel(fileName, titles, sysParaSetList, TemplateLocation.SYSTEM_PARAMETER, response);
        return WebUtils.NULLActionForward;
    }

    public void insertOrUpdateSysParaSet(SysParameterSetInfoForm form) throws Exception {
        String referenceId = StringUtils.trimToUpperCase(form.getReferenceFileId());
        String parameterType = StringUtils.trimToUpperCase(form.getParameterType());
        ReferenceFileDetail referenceFile = new ReferenceFileDetail(referenceId,
                                                                    getNamedSpace(ObjectList.REFERENCE_FILE_KEY,
                                                                                  LocalContext.getFacilityRrn()),
                                                                    ObjectList.REFERENCE_FILE_KEY);
        long referenceFileRrn = getInstanceRrn(referenceFile.getInstanceId(), referenceFile.getNamedSpace(),
                                               referenceFile.getObject());
        String autoCreateUrl = null;
        if (StringUtils.equalsIgnoreCase(parameterType, "menu")) {
            autoCreateUrl = form.getSysParaSetMenuProgram();
            form.setReferenceFileId("");
            form.setReferenceFileRrn("");
        } else if (StringUtils.equalsIgnoreCase(parameterType, "other")) {
            autoCreateUrl = form.getSysParaSetOtherProgram();
            form.setReferenceFileId("");
            form.setReferenceFileRrn("");
            form.setMenuId("");
            form.setLinkMenuRrn(new Long(0));
        } else {
            autoCreateUrl = form.getSysParaSetReferenceProgram();
            form.setMenuId("");
            form.setLinkMenuRrn(new Long(0));
        }
        SysParameterSet sysParameterSet = new SysParameterSet();
        PropertyUtils.copyProperties(sysParameterSet, form);
        sysParameterSet.setParameterDesc(StringUtils.trimToUpperCase(sysParameterSet.getParameterDesc()));
        sysParameterSet.setParameterType(StringUtils.trimToUpperCase(sysParameterSet.getParameterType()));
        sysParameterSet.setReferenceFileRrn(StringUtils.toString(referenceFileRrn));
        if (StringUtils.equalsIgnoreCase(form.getParameterType(), "menu")) {
            sysParameterSet.setLinkMenuRrn(new Long(form.getLinkMenuRrn()));
        }
        String userId = LocalContext.getUserId();
        sysParameterSet.setLinkUrl(autoCreateUrl);
        if (sysParameterSet.getMenuParameterRrn() != null && sysParameterSet.getMenuParameterRrn() > 0) {
            sysParameterSet.setUpdatedUserId(userId);
            sysService.updateSysParameterSet(sysParameterSet);
        } else {
            sysParameterSet.setCreatedUserId(userId);
            sysParameterSet.setUpdatedUserId(userId);
            sysService.insertSysParameterSet(sysParameterSet);
        }
    }

    public void deleteSysParaSet(SysParameterSetInfoForm form) {
        Assert.isFalse(StringUtils.isBlank(form.getMenuParameterRrn().toString()),
                       Errors.create().key(MessageIdList.SYSPARAMETERSET_MISSING_DELETED_RRN)
                             .content("The deleted RRN is empty!").build());
        SysParameterSet sysParameterSet = new SysParameterSet();
        sysParameterSet.setMenuParameterRrn(form.getMenuParameterRrn());
        sysService.deleteSysParameterSet(sysParameterSet);
    }

    public Map qrySysParaSetList(SysParameterSetInfoForm form) {
        List<Map> sysParaSetList = null;
        if (StringUtils.isNotBlank(form.getMenuId())) {
            sysParaSetList = sysService.querySysParaSetListById(form.getMenuId(), I18nUtils.getCurrentLanguage());
        } else {
            sysParaSetList = sysService.querySysParaSetList(I18nUtils.getCurrentLanguage());
        }
        Map json = new HashMap();
        json.put("results", sysParaSetList);
        json.put("rows", sysParaSetList.size());
        return json;
    }

}