WarehouseTransferAction.java

package com.mycim.webapp.actions.warehouse;

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.lang.StringUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.consts.ReferenceDetailNames;
import com.mycim.valueobject.consts.ReferenceFileConst;
import com.mycim.valueobject.inv.MaterialDO;
import com.mycim.valueobject.prp.Operation;
import com.mycim.webapp.actions.AsmSetupAction;
import com.mycim.webapp.forms.WarehouseInfoForm;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 库房转移
 *
 * @author yanbing.chen
 * @date 2019/9/3
 * @since 1.8
 **/
public class WarehouseTransferAction extends AsmSetupAction {

    public String materialTransfer(Map map) throws Exception {
        long facilityRrn = LocalContext.getFacilityRrn();
        String userId = LocalContext.getUserId();
        String warehouseId = map.get("warehouseId").toString();
        String materialId = map.get("materialId").toString();
        String toWarehouseId = map.get("toWarehouseId").toString();
        List<Map<String, Object>> transferList = (List<Map<String, Object>>) map.get("transferList");
        boolean isEmptyParam = StringUtils.isEmpty(warehouseId) || StringUtils.isEmpty(materialId) ||
                StringUtils.isEmpty(toWarehouseId);
        Assert.isFalse(isEmptyParam || transferList == null || transferList.isEmpty(),
                       Errors.create().key(MessageIdList.ASM_PARAMETER_MISSING).content("参数丢失,请重新登陆!").build());

        warehouseService.transferMaterialFromWarehouse(facilityRrn, userId, warehouseId, toWarehouseId, materialId,
                                                       transferList);
        return I18nUtils.getMessage("asm.warehouse_transfer_success");
    }

    public Map queryMaterialForTransfer(WarehouseInfoForm theform) {
        long facilityRrn = LocalContext.getFacilityRrn();
        String warehouseId = theform.getWarehouseId();
        String materialId = theform.getMaterialId();
        String lotNumber = theform.getLotNumber();

        boolean isEmptyParam = StringUtils.isEmpty(warehouseId) || StringUtils.isEmpty(materialId);
        Assert.isFalse(isEmptyParam,
                       Errors.create().key(MessageIdList.ASM_PARAMETER_MISSING).content("参数丢失,请重新登陆!").build());

        // 获取库房信息
        Operation warehouse = warehouseService.getWarehouse(facilityRrn, warehouseId);

        // 获取物料信息
        MaterialDO material = asmService.getAndCheckMaterial(facilityRrn, materialId);

        List<Map<String, String>> transferList = warehouseService
                .getLotInventoryListForConsumption(lotNumber, material.getInstanceRrn(), warehouse.getInstanceRrn());
        Map<String, Object> result = new HashMap<>();

        result.put("materialDesc", material.getInstanceDesc());
        result.put("storeUOM", sysService
                .referenceDetailExchangeNull(ReferenceDetailNames.UNIT_OF_MEASURE_FOR_BANK, material.getStoreUom(),
                                             ReferenceFileConst.DATA_1_VALUE));
        result.put("transferList", transferList);
        return result;
    }

}