package cn.gov.customs.wxjy.base.controller;


import cn.gov.customs.cacp.sdks.core.result.Result;
import cn.gov.customs.wxjy.base.pojo.*;
import cn.gov.customs.wxjy.base.service.BaseCodeService;
import com.alibaba.fastjson2.JSONObject;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * TODO
 *
 * @author wq
 * @since 2025/11/5 17:16
 */
@RestController
@RequestMapping("/baseCode")
@RequiredArgsConstructor
public class BaseCodeController {
	private final BaseCodeService service;

	/** 国家地区 */
	private static final String WORLD = "world";
	/** 机构信息 6位机构代码 */
	private static final String ORGANIZE = "organize";
	/** 机构信息 8位或10位机构代码 */
	private static final String ORGANIZE_8 = "organize8";
	/** 运输方式 */
	private static final String TRANSIT_MODE = "TransitMode";
	/** eciq人员信息 */
	private static final String USER = "user";
	/** 世界主要海运贸易港口代码表 */
	private static final String WORLD_PORT = "worldPort";
	/** 重量单位信息 */
	private static final String UNIT = "unit";
	/** 口岸代码 */
	private static final String DESP_PORT_CODE = "domesticPort";
	/** 运输工具 */
	private static final String TRN_VE_TYPE_REL = "trnVeTypeRel";
	/** 包装种类 */
	private static final String WRAP_CODE = "wrapCode";
	/** 贸易方式 */
	private static final String TRADE_MODE = "TradeMode";
	/** 监管方式 */
	private static final String TRADE_CODE = "tradeCode";
	/** H2018国家地区代码 */
	private static final String COUNTRY_ISO_E = "countryIsoE";
	/** H2018国家地区代码 */
	private static final String COUNTRY_CODE = "countryCode";
	/** 全国关区代码 */
	private static final String CUSTOMS_CODE = "customsCode";
	/** H2018流程环节代码 */
	private static final String STEP_CODE = "stepCode";
	/** 行业种类代码代码 */
	private static final String BUS_TYPE = "busType";

	/**
	 * 下拉数据源
	 */
	@GetMapping("/appBase")
	public Result<List<JSONObject>> getList(@RequestParam String code) {
		List<JSONObject> options = new ArrayList<>();
		if(UNIT.equals(code)){
			// 计量单位
			List<Unit> list = service.getUnitList();
			for ( Unit u: list) {
				JSONObject json = new JSONObject();
				json.put("value", u.getUnitCode());
				json.put("label", u.getUnitName());
				options.add(json);
			}
		} else if(TRADE_CODE.equals(code)){
			// 监管方式
			List<Trade> list = service.getTradeList();
			for ( Trade  u: list) {
				JSONObject json = new JSONObject();
				json.put("value", u.getTradeMode());
				json.put("label", u.getAbbrTrade());
				options.add(json);
			}
		} else if(TRANSIT_MODE.equals(code)){
			// 运输方式
			List<Transf> list = service.getTransfList();
			for ( Transf  u: list) {
				JSONObject json = new JSONObject();
				json.put("value", u.getTrafCode());
				json.put("label", u.getTrafSpec());
				options.add(json);
			}
		} else if(COUNTRY_ISO_E.equals(code)){
			// H2018国家地区，编码为英文简称
			List<Country> list = service.getCountryList();
			for ( Country  u: list) {
				JSONObject json = new JSONObject();
				json.put("value", u.getIsoE());
				json.put("label", u.getCounCName());
				options.add(json);
			}
		} else if(COUNTRY_CODE.equals(code)){
			// H2018国家地区，编码为数字
			List<Country> list = service.getCountryList();
			for ( Country  u: list) {
				JSONObject json = new JSONObject();
				json.put("value", u.getCountryCode());
				json.put("label", u.getCounCName());
				options.add(json);
			}
		} else if(CUSTOMS_CODE.equals(code)){
			// 全国关区代码
			List<Customs> list = service.getCustomsList();
			for ( Customs  u: list) {
				JSONObject json = new JSONObject();
				json.put("value", u.getCustomsCode());
				json.put("label", u.getCustomsName());
				options.add(json);
			}
		}
		return Result.success(options);
	}

}
