PcdCleanCycleInfoAction.java

package com.mycim.webapp.actions.pcd;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.CarrierSetupAction;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author liuji.li
 * @version 6.0.0
 * @date 2019/9/11
 **/
public class PcdCleanCycleInfoAction extends CarrierSetupAction {

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) throws Exception {
        viewCleanCycle(mapping, form, request, response);
        return mapping.getInputForward();
    }

    public ActionForward savePcdDefaultCleanCycle(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                                  HttpServletResponse response) {
        Long facilityRrn = LocalContext.getFacilityRrn();
        String user = LocalContext.getUserId();
        int count = carrierService.getCategoryAndTypeCount(facilityRrn);
        if (count > 0) {
            // 获取request中的所有周期信息
            List<Map<String, Object>> defaultCleanCycleList = new ArrayList<Map<String, Object>>();
            for (int i = 0; i < count; i++) {
                // 组装参数
                Map<String, Object> defaultCleanCycleMap = new HashMap<String, Object>();
                String categoryCode = WebUtils.getParameter("categoryCode" + i, request);
                String typeCode = WebUtils.getParameter("typeCode" + i, request);
                String defaultCleanCycle = WebUtils.getParameter("defaultCleanCycle" + i, request);

                String categoryDesc = WebUtils.getParameter("categoryDesc" + i, request);
                String typeDesc = WebUtils.getParameter("typeDesc" + i, request);
                Assert.isTrue(NumberUtils.isNumber(defaultCleanCycle),
                              Errors.create().key(MessageIdList.PCD_NUMBER_ERROR).content("{}和{}组合输入的清洗周期不是数字!")
                                    .args(categoryDesc, typeDesc).build());

                double defaultCleanCycleD = NumberUtils.toDouble(defaultCleanCycle);
                defaultCleanCycleMap.put("defaultCleanCycle", defaultCleanCycleD);
                defaultCleanCycleMap.put("categoryCode", categoryCode);
                defaultCleanCycleMap.put("typeCode", typeCode);
                defaultCleanCycleMap.put("categoryDesc", categoryDesc);
                defaultCleanCycleMap.put("typeDesc", typeDesc);
                defaultCleanCycleMap.put("operationUser", user);
                defaultCleanCycleList.add(defaultCleanCycleMap);
            }

            try {
                carrierService.resetCleanCycle(defaultCleanCycleList, facilityRrn, user);
            } catch (Exception e) {
                request.setAttribute("errorMsg", e.getMessage());
            }
        }
        viewCleanCycle(mapping, form, request, response);
        return mapping.getInputForward();
    }

    private void viewCleanCycle(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                HttpServletResponse response) {
        Long facilityRrn = LocalContext.getFacilityRrn();
        // 获取所有 category
        List<Map<String, Object>> categoryList = carrierService.getAllPcdCategory(facilityRrn);
        // 获取所有 type
        List<Map<String, Object>> typeList = carrierService.getAllPcdType(facilityRrn);
        List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < categoryList.size(); i++) {
            Map<String, Object> categoryMap = categoryList.get(i);
            for (int j = 0; j < typeList.size(); j++) {
                Map<String, Object> typeMap = typeList.get(j);
                String categoryCode = MapUtils.getString(categoryMap, "categoryCode", "");
                String typeCode = MapUtils.getString(typeMap, "typeCode", "");

                Map<String, Object> resultMap = new HashMap<String, Object>();
                String categoryDesc = MapUtils.getString(categoryMap, "categoryDesc", "");
                String typeDesc = MapUtils.getString(typeMap, "typeDesc", "");

                // 获取设置过的默认清洗周期,没有置为0
                double defaultCleanCycle = carrierService.getDefaultCleanCycle(categoryCode, typeCode, facilityRrn);

                resultMap.put("categoryCode", categoryCode);
                resultMap.put("categoryDesc", categoryDesc);
                resultMap.put("typeCode", typeCode);
                resultMap.put("typeDesc", typeDesc);
                resultMap.put("defaultCleanCycle", defaultCleanCycle);

                resultList.add(resultMap);
            }
        }
        request.setAttribute("categoryTypeList", resultList);
    }

}