package com.jwipc.sys.controller.pc;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSON;
import com.jwipc.page.PageView;
import com.jwipc.sys.dto.ProductGroupDTO;
import com.jwipc.sys.logic.ProductGroupLogic;
import com.jwipc.sys.model.query.ProductGroupQuery;
import com.jwipc.util.EasyExcelUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
import java.util.List;

import static com.jwipc.sys.constant.ModuleConst.MODULE_ROOT;

/**
 * @author Al
 * @create 2024-02-18 9:37
 * 物料组
 */
@RestController
@RequestMapping(MODULE_ROOT + "/productGroup/rest")
@RequiredArgsConstructor
public class ProductGroupRestController {
    private final ProductGroupLogic productGroupLogic;
    /**
     * 列表
     *
     * @param query
     * @return
     */
    @RequestMapping("/list")
    public PageView list(ProductGroupQuery query) {
        return productGroupLogic.findByPage(query);
    }

    /**
     * 列表
     *
     * @param query
     * @return
     */
    @RequestMapping("/listAll")
    public ResponseEntity<List<ProductGroupDTO>> listAll(ProductGroupQuery query) {
        return ResponseEntity.ok(productGroupLogic.listAll(query));
    }

    /**
     * 禁用/启用
     *
     * @param id 参数
     */
    @PostMapping("/disable")
    public ResponseEntity disable(Long id, Integer disable) {
        productGroupLogic.disable(id,disable);
        return ResponseEntity.ok(true);
    }

    /**
     * 同步到sap
     *
     * @param ids 参数
     */
    @PostMapping("/syncSap")
    public ResponseEntity syncSap(String ids) {
        productGroupLogic.syncSap(ids,"");
        return ResponseEntity.ok(true);
    }

    /**
     * 物料组列表导出
     * @param exportFiled 导出的列信息
     * @param queryStr 查询条件
     */
    @PostMapping("/export")
    public void export(HttpServletResponse response, String exportFiled, String queryStr) throws IOException {
        // 查询数据列表，直接调用列表的查询，无需特殊改动
        final List<ProductGroupDTO> exportData = productGroupLogic.listAll(JSON.parseObject(queryStr, ProductGroupQuery.class));
        //动态导出工具类，只需要修改导出excel名称
        EasyExcelUtils.trendsModelWrite(response,"物料组记录-" + DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN),"sheet", exportData, exportFiled);
    }
    /**
     * 保存更新
     * @param param 参数
     */
    @PostMapping("/saveOrUpdate")
    public ResponseEntity saveOrUpdate(@RequestBody ProductGroupDTO param){
        productGroupLogic.saveOrUpdate(param);
        return ResponseEntity.ok(true);
    }
    /**
     * 物料组列表导入
     * @param file 导出的列信息
     *
     */
    @PostMapping("productGroupImportData")
    public ResponseEntity productGroupImportData(@RequestParam(value = "file") MultipartFile file) {
        productGroupLogic.productGroupImportData(file);
        return ResponseEntity.ok().build();
    }

    /**
     * 物料组列表
     *
     */
    @PostMapping("/selectGroupPageList")
    public PageView seelctGroupPageList(ProductGroupQuery query) {
        return productGroupLogic.findByPage(query);
    }
}
