package cn.iocoder.yudao.module.inspection.controller;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.inspection.query.OrderTableQuery;
import cn.iocoder.yudao.module.inspection.vo.*;
import cn.iocoder.yudao.module.label.vo.LabelRespVO;
import cn.iocoder.yudao.module.partner.entity.PartnerBalanceDetail;
import cn.iocoder.yudao.module.partner.entity.PartnerWorker;
import cn.iocoder.yudao.module.partner.service.IPartnerWorkerService;
import cn.iocoder.yudao.module.payment.entity.OrderInfo;
import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO;
import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
import cn.iocoder.yudao.module.system.service.dict.DictDataService;
import cn.iocoder.yudao.module.system.service.dict.DictTypeService;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import cn.iocoder.yudao.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import cn.iocoder.yudao.module.core.controller.BaseController;
import cn.iocoder.yudao.module.inspection.entity.*;
import cn.iocoder.yudao.module.inspection.service.AppInspectionPartnerService;
import cn.iocoder.yudao.module.shop.entity.ShopCouponTemplate;
import cn.iocoder.yudao.module.shop.entity.ShopMallPartners;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.*;
import java.util.stream.Collectors;

@RestController
@RequestMapping("/admin-api/partnerOwn/partner")
public class PartnerOwnController extends BaseController {
    @Autowired
    private AppInspectionPartnerService partnerList;
    @Autowired
    private IPartnerWorkerService partnerWorkerService;
    @Autowired
    private DictTypeService dictTypeService;
    @Autowired
    private DictDataService dictDataService;
    @Autowired
    private RoleService roleService;
    @Autowired
    private PermissionApi permissionApi;

    /**
     * 获取店铺详情
     */
    @GetMapping("/shopInfo")
    public CommonResult shopInfo() throws Exception {
        return success(partnerList.shopInfo());
    }

    @GetMapping("/shopInfoByUserId")
    public CommonResult shopInfoByUserId() throws Exception {
        return success(partnerList.shopInfoByUserId());
    }

    /**
     * 获取上门取车 和 预约条数
     */
    @GetMapping("/getAppointAndPickNum")
    public CommonResult getAppointAndPickNum() throws Exception {
        return success(partnerList.getAppointAndPickNum());
    }


    /**
     * 开始或者停止营业
     */
    @PostMapping("/startOrEnd")
    public CommonResult startOrEnd(Long partnerId) {
        partnerList.startOrEnd(partnerId);
        return success();
    }

    /**
     * 首页 顶部数据统计
     */
    @GetMapping("/statisticsInfo")
    public CommonResult statisticsInfo() {
        return success(partnerList.statisticsInfo(null));
    }

    /**
     * 检测线图
     */
    @GetMapping("/chartInfoAmount")
    public CommonResult chartInfoAmount(Long partnerId, String unit) {
        return success(partnerList.chartInfoAmount(partnerId, unit));
    }

    /**
     * 新检测线图
     */
    @GetMapping("/newChartInfoAmount")
    public CommonResult newChartInfoAmount(String unit) {
        return success(partnerList.newChartInfoAmount(unit));
    }

    /**
     * staticsTable1
     * 检测数量折线图
     */
    @GetMapping("/chartLineInspectionNum")
    public CommonResult chartLineInspectionNum(Long partnerId, String unit) {
        return success(partnerList.chartLineInspectionNum(partnerId, unit));
    }

    /**
     * staticsTable1
     * 新检测数量折线图
     */
    @GetMapping("/newChartLineInspectionNum")
    public CommonResult newChartLineInspectionNum(String unit) {
        return success(partnerList.newChartLineInspectionNum(unit));
    }

    /**
     * 检测金额折线图
     */
    @GetMapping("/chartLineInspectionAmount")
    public CommonResult chartLineInspectionAmount(Long partnerId, String unit) {
        return success(partnerList.chartLineInspectionAmount(partnerId, unit));
    }

    /**
     * 新检测金额折线图
     */
    @GetMapping("/newChartLineInspectionAmount")
    public CommonResult newChartLineInspectionAmount(String unit) {
        return success(partnerList.newChartLineInspectionAmount(unit));
    }

    /**
     * 检测线图
     */
    @GetMapping("/chartInfoNum")
    public CommonResult chartInfoNum(Long partnerId, String unit) {
        return success(partnerList.chartInfoNum(partnerId, unit));
    }

    /**
     * 新检测线图
     */
    @GetMapping("/newChartInfoNum")
    public CommonResult newChartInfoNum(String unit) {
        return success(partnerList.newChartInfoNum(unit));
    }

    /**
     * 检测线图
     */
    @GetMapping("/chartInfoRatio")
    public CommonResult chartInfoRatio(Long partnerId, String unit) throws Exception {
        if (ObjectUtil.isNull(partnerId)) {
            partnerId = partnerList.shopInfoByUserId().getPartnerId();
        }
        return success(partnerList.chartInfoRatio(partnerId, unit));
    }

    /**
     * 新检测线图
     */
    @GetMapping("/newChartInfoRatio")
    public CommonResult newChartInfoRatio(String unit) {
        return success(partnerList.newChartInfoRatio(unit));
    }

    /**
     * 首页 订单信息
     */
    @GetMapping("/orderInfo")
    public CommonResult orderInfo(Long partnerId) {
        return success(partnerList.orderInfo(partnerId));
    }

    /**
     * 热销商品列表
     */
    @GetMapping("/hotGoodsList")
    public CommonResult hotGoodsList(Long partnerId) {
        return success(partnerList.hotGoodsList(partnerId));
    }

    /**
     * 热销商品列表
     */
    @GetMapping("/newHotGoodsList")
    public CommonResult newHotGoodsList() {
        return success(partnerList.newHotGoodsList());
    }


    /**
     * 分页查询所有数据
     *
     * @return 所有数据
     */
    @GetMapping("/categoryList")
    public CommonResult categoryList(Long partnerId) {

        return success(partnerList.categoryList(partnerId));
    }

    /**
     * 发布商品
     */
    @PostMapping("/addGoods")
    public CommonResult addGoods(@RequestBody ShopInspectionGoods goods) throws Exception {
        partnerList.addGoods(goods);
        return success();
    }

    /**
     * 商品管理列表
     */
    @GetMapping("/goodsList")
    public CommonResult goodsList(Long partnerId, String isListing, String goodsTitle,
                                  @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
                                  @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
//        LoginUser user = SecurityFrameworkUtils.getLoginUser();
//        ShopMallPartners partners = partnerList.getById(partnerId);
//        if (!partners.getUserId().equals(user.getId())) {
//            return null;
//        }
        Page<GoodsVo> page = new Page<>(pageNum, pageSize);
        IPage<GoodsVo> list = partnerList.goodsList(page, partnerId, isListing, goodsTitle);
        return success(list);
    }

    /**
     * 商品管理列表
     */
    @GetMapping("/canUsegoods")
    public CommonResult canUseGoods(Long partnerId) {
        LoginUser user = SecurityFrameworkUtils.getLoginUser();
        ShopMallPartners partners = partnerList.getById(partnerId);
        if (!partners.getUserId().equals(user.getId())) {
            return null;
        }
        return success(partnerList.canUseGoods(partnerId));
    }

    /**
     * 商品详细信息
     */
    @GetMapping("/goodsDetail")
    public CommonResult goodsDetail(Long goodsId) {
        return success(partnerList.goodsDetail(goodsId));
    }

    /**
     * 修改商品
     */
    @PostMapping("/editGoods")
    public CommonResult editGoods(@RequestBody ShopInspectionGoods goods) throws Exception {
        partnerList.editGoods(goods);
        return success();
    }

    @PostMapping("/editSkuPrice")
    public CommonResult editSkuPrice(@RequestBody ShopInspectionGoods goods) throws Exception {
        partnerList.editSkuPrice(goods);
        return success();
    }

    /**
     * 上下架
     */
    @PostMapping("/changeListing")
    public CommonResult changeListing(Long goodsId) throws Exception {
        partnerList.changeListing(goodsId);
        return success();
    }

    /**
     * 删除商品
     */
    @PostMapping("/delGoods")
    public CommonResult delGoods(Long goodsId) throws Exception {
        partnerList.delGoods(goodsId);
        return success();
    }

    /**
     * 管理店铺信息
     */
    @PostMapping("/getPartnerInfo")
    public CommonResult getPartnerInfo(Long partnerId) {
        return success(partnerList.getPartnerInfo(partnerId));
    }

    /**
     * 管理店铺信息
     */
    @PostMapping("/editPartnerInfo")
    public CommonResult editPartnerInfo(@RequestBody ShopMallPartners partners) {
        partnerList.editPartnerInfo(partners);
        return success();
    }

    /**
     * 店铺账户信息
     */
    @GetMapping("/accountInfo")
    public CommonResult accountInfo(Long partnerId) {
        return success(partnerList.accountInfo(partnerId));
    }

    /**
     * 店铺账户信息
     */
    @GetMapping("/accountDetail")
    public CommonResult accountDetail(Long partnerId,
                                      @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
                                      @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
        Page<PartnerBalanceDetail> page = new Page<>(pageNum, pageSize);
        IPage<PartnerBalanceDetail> details = partnerList.accountDetail(page, partnerId, pageNum, pageSize);
        return success(details);
    }

    /**
     * 当前店铺的订单信息
     */
    @GetMapping("/orderList")
    public CommonResult orderList(Long partnerId, String phoneNum, String title,
                                  @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
                                  @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
        LoginUser user = SecurityFrameworkUtils.getLoginUser();
        ShopMallPartners partnersTmp = partnerList.getById(partnerId);
        if (!partnersTmp.getUserId().equals(user.getId())) {
            return null;
        }
        Page<OrderAppDetail> page = new Page<>(pageNum, pageSize);
        IPage<OrderAppDetail> orderInfos = partnerList.orderList(page, partnerId, phoneNum, title);
        return success(orderInfos);
    }

    /**
     * 通过核销码获取订单信息
     */
    @GetMapping("/orderDetailByCode")
    public CommonResult orderDetailByCode(Long partnerId, String code) throws Exception {
        Long orderId = partnerList.orderDetailByCode(partnerId, code);
        return success(orderId);
    }

    /**
     * 当前的订单信息
     */
    @GetMapping("/orderDetail")
    public CommonResult orderDetail(Long partnerId, Long orderId) {
        OrderAppDetail orderInfos = partnerList.orderDetail(partnerId, orderId);
        return success(orderInfos);
    }

    /**
     * 店铺核销功能
     */
    @PostMapping("/takeOut")
    public CommonResult takeOut(@RequestBody InspectionInfo inspectionInfo) throws Exception {
        partnerList.takeOut(inspectionInfo);
        return success();
    }

    @PostMapping("/addWorker")
    public CommonResult addWorker(Long partnerId, String realName, String phoneNum, Long postId) throws Exception {

        partnerList.addWorker(partnerId, realName, phoneNum, postId);
        return success();
    }

    /**
     * 获取员工信息
     */
    @GetMapping("/getWorkList")
    public CommonResult<IPage<?>> getWorkList(Long partnerId, String workName, String phoneNum, Long postId, Integer pageNum, Integer pageSize) {
        LoginUser user = SecurityFrameworkUtils.getLoginUser();
//        ShopMallPartners partnersTmp = partnerList.getById(partnerId);
//        if (!partnersTmp.getUserId().equals(user.getId())){
//            return null;
//        }
        /*获取检测的用户*/
        RolePageReqVO reqVO = new RolePageReqVO();
        reqVO.setPageNo(pageNum);
        reqVO.setNickname(workName);
        reqVO.setPageSize(pageSize);
        IPage<UserDTO> userDTOIPage = roleService.selectListByRoleId(reqVO);
//        Page<LabelRespVO> page = new Page<>(pageNum, pageSize);
//        IPage<PartnerWorker> workList = partnerList.pageWorkList(partnerId,postId, workName, phoneNum,page);
        return CommonResult.success(userDTOIPage);
    }

    @PostMapping("/delWorker")
    public CommonResult delWorker(Long partnerId, String workIdStr) {
        String[] workIds = workIdStr.split(",");
        for (String workId : workIds) {
            partnerList.delWorker(partnerId, Long.parseLong(workId));
        }
        return success();
    }

    //获取检测的数据
    @GetMapping("/inspectionList")
    public CommonResult inspectionList(Long partnerId, String status, String carNum, Integer pageSize, Integer pageNum) throws Exception {
//        ShopMallPartners partners = partnerList.shopInfo();
//        if (!partnerId.equals(partners.getPartnerId())) {
//            return null;
//        }
        Page<InspectionInfo> page = new Page<>(pageNum, pageSize);
        IPage<InspectionInfo> inspectionInfos = partnerList.inspectionList(page, partnerId, status, carNum);
        return success(inspectionInfos);
    }

    //获取检测的详细信息
    @GetMapping("/inspectionDetail")
    public CommonResult inspectionDetail(Long inspectionInfoId) {
        return CommonResult.success(partnerList.inspectionDetail(inspectionInfoId));
    }

    //获取检测的数据
    @GetMapping("/workerInspectionList")
    public CommonResult workerInspectionList(Long partnerId, String status, String searchValue, Integer pageSize, Integer pageNum) {
        LoginUser user = SecurityFrameworkUtils.getLoginUser();
        LambdaQueryWrapper<PartnerWorker> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(PartnerWorker::getUserId, user.getId()).eq(PartnerWorker::getPartnerId, partnerId);
        PartnerWorker worker = partnerWorkerService.getOne(queryWrapper);
        if (ObjectUtil.isEmpty(worker)) {
            return null;
        }
        Page<InspectionInfo> page = new Page<>(pageNum, pageSize);
        IPage<InspectionInfo> inspectionInfos = partnerList.inspectionList(page, partnerId, status, searchValue);
        return success(inspectionInfos);
    }

    //增加检测步骤信息
    @PostMapping("/addStepInfo")
    public CommonResult addStepInfo(@RequestBody InspectionStepInfo stepInfo) {
        partnerList.addStepInfo(stepInfo);
        return success();
    }

    //增加检测结果
    @PostMapping("/stopInspection")
    public CommonResult editInspection(@RequestBody InspectionInfo info) throws Exception {
        partnerList.stopInspection(info);
        return success();
    }

    //完成制证
    @PostMapping("/makeCertOk")
    public CommonResult makeCertOk(Long inspectionId) {
        partnerList.makeCertOk(inspectionId);
        return success();
    }

    //获取到店预约的数据
    @GetMapping("/getAppointmentList")
    public CommonResult getAppointmentList(Long partnerId, String phoneNum,
                                           Integer pageSize, Integer pageNum,
                                           String carNo,@RequestParam(required = false) String startTime,@RequestParam(required = false) String endTime) throws Exception {
//        LoginUser user = SecurityFrameworkUtils.getLoginUser();
//        ShopMallPartners partnersTmp = partnerList.getById(partnerId);
//        if (!partnersTmp.getUserId().equals(user.getId())){
//            return null;
//        }
        Page<InspectionAppointment> page = new Page<>(pageNum, pageSize);
//        ShopMallPartners shopMallPartners = partnerList.shopInfo();
        IPage<InspectionAppointment> appointments = partnerList.getAppointmentList(page, null, phoneNum, carNo,startTime,endTime);
        return success(appointments);
    }

    /**
     * 判断是否可以查看预约信息
     *
     * @return
     */
    @GetMapping("/ifHasRole")
    public CommonResult<?> ifHasRole(String dictType) {
        if (ObjectUtil.isEmpty(dictType)) {
            return success(false);
        }
        return success(permissionApi.hasDictTypeRole(dictType));
    }

    //获取上门取车数据
    @GetMapping("/getPickCarList")
    public CommonResult getPickCarList(Long partnerId, String phoneNum, String pickStatus, Integer pageSize, Integer pageNum) {
        LoginUser user = SecurityFrameworkUtils.getLoginUser();
//        ShopMallPartners partnersTmp = partnerList.getById(partnerId);
//        if (!partnersTmp.getUserId().equals(user.getId())){
//            return null;
//        }
        Page<InspectionPickCar> page = new Page<>(pageNum, pageSize);
        IPage<InspectionPickCar> pickCarList = partnerList.getPickCarList(page, partnerId, phoneNum, pickStatus);
        return success(pickCarList);
    }

    //获取上门取车详情页
    @GetMapping("/getPickCarDetail")
    public CommonResult getPickCarDetail(Long dataId) {
        InspectionPickCar pickCar = partnerList.getPickCarDetail(dataId);
        return success(pickCar);
    }

    // 核销记录By核销人Id
    @GetMapping("/validationList")
    public CommonResult validationList(Long partnerId, String searchValue,
                                       @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
                                       @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
        LoginUser user = SecurityFrameworkUtils.getLoginUser();
        ShopMallPartners partnersTmp = partnerList.getById(partnerId);
        if (!partnersTmp.getUserId().equals(user.getId())) {
            return null;
        }
        Page<OrderInfo> page = new Page<>(pageNum, pageSize);
        IPage<OrderInfo> orderInfos = partnerList.validationList(page, partnerId, searchValue);
        return success(orderInfos);
    }

    //送券功能
    @PostMapping("/sendCoupon")
    public CommonResult sendCoupon(@RequestBody ShopCouponTemplate template) throws Exception {
        partnerList.sendCoupon(template);
        return success();
    }

    //优惠券列表
    @GetMapping("/listCoupon")
    public CommonResult listCoupon(Long partnerId, String searchValue,
                                   @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
                                   @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
        LoginUser user = SecurityFrameworkUtils.getLoginUser();
        ShopMallPartners partnersTmp = partnerList.getById(partnerId);
        if (!partnersTmp.getUserId().equals(user.getId())) {
            return success(new ArrayList<>());
        }
        Page<ShopCouponTemplate> page = new Page<>(pageNum, pageSize);
        IPage<ShopCouponTemplate> shopCouponTemplates = partnerList.listCoupon(page, partnerId, searchValue);
        return success(shopCouponTemplates);
    }

    //删除优惠券
    @PostMapping("/delCoupon")
    public CommonResult delCoupon(Long partnerId, Long id) {
        partnerList.delCoupon(partnerId, id);
        return success();
    }

    //指派工人上门取车
    @PostMapping("/designatePickCarWorker")
    public CommonResult designatePickCarWorker(Long pickCarId, Long workerId) {
        partnerList.designatePickCarWorker(pickCarId, workerId);
        return success();
    }

    //获取上门取车数据
    @GetMapping("/getPickCarListOfWorker")
    public CommonResult getPickCarListOfWorker(Long partnerId, String phoneNum,
                                               @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
                                               @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
        LoginUser user = SecurityFrameworkUtils.getLoginUser();
        // .eq(PartnerWorker::getUserId,user.getId())
//        LambdaQueryWrapper<PartnerWorker> queryWrapper =new LambdaQueryWrapper<>();
//        queryWrapper.eq(PartnerWorker::getPartnerId,partnerId);
//        PartnerWorker worker = partnerWorkerService.getOne(queryWrapper);
//        if (ObjectUtil.isEmpty(worker)){
//            return null;
//        }
        Page<InspectionPickCar> page = new Page<>(pageNum, pageSize);
        IPage<InspectionPickCar> pickCarList = partnerList.getPickCarListOfWorker(page, user.getId(), phoneNum);
        return success(pickCarList);
    }

    //获取客户来源
    @GetMapping("/getCustomerSource")
    public CommonResult getCustomerSource(String searchValue) throws Exception {
        ShopMallPartners partners = partnerList.shopInfoByUserId();
        String dictStr = "customer_source-" + partners.getPartnerId();
        DictTypeDO sysDictType = dictTypeService.getDictType(dictStr);
        if (ObjectUtil.isEmpty(sysDictType)) {
            //初始化
            DictTypeSaveReqVO save = new DictTypeSaveReqVO();
            save.setName("客户来源-" + partners.getPartnerName());
            save.setStatus(0);
            save.setType(dictStr);
            dictTypeService.createDictType(save);
        }
        List<DictDataDO> dataList = dictDataService.getDictDataListByDictType(dictStr);
        if (CollectionUtil.isEmpty(dataList)) {
            dataList = new ArrayList<>();
        }
        if (StringUtils.isNotEmpty(searchValue)) {
            dataList = dataList.stream().filter(it -> {
                return it.getLabel().contains(searchValue);
            }).collect(Collectors.toList());
        }
        return success(dataList);
    }

    //新增客户来源
    @PostMapping("/addCustomerSource")
    public CommonResult addCustomerSource(@RequestBody SysDictData dictData) throws Exception {
        ShopMallPartners partners = partnerList.shopInfo();
        String dictStr = "customer_source-" + partners.getPartnerId();
        DictTypeDO sysDictType = dictTypeService.getDictType(dictStr);

        DictDataSaveReqVO dictSave = new DictDataSaveReqVO();
        dictSave.setLabel(dictData.getDictLabel());
        dictSave.setDictType(sysDictType.getType());
        dictSave.setStatus(0);
        dictSave.setValue(dictData.getDictLabel());
        dictSave.setCssClass("default");
        dictSave.setRemark(dictData.getRemark());
        dictDataService.createDictData(dictSave);
        return success();
    }

    //新增客户来源
    @PostMapping("/delCustomerSource")
    public CommonResult delCustomerSource(Long dictId) {
        dictDataService.deleteDictData(dictId);
        return success();
    }

    //批量删除客户来源
    @PostMapping("/delCustomerSourceBatch")
    public CommonResult delCustomerSourceBatch(@RequestBody List<Long> dictIds) {
        dictDataService.deleteDictDataBatch(dictIds);
        return success();
    }

    @PostMapping("/vehicleLicenseOCR")
    public CommonResult vehicleLicenseOCR(String imagePath) throws Exception {
        return success(partnerList.vehicleLicenseOCR(imagePath));
    }

    //线下收费
    @PostMapping("/offlineCharging")
    public CommonResult offlineCharging(@RequestBody InspectionInfoVo infoVo) {
        partnerList.offlineCharging(infoVo);
        return success();
    }


    //获取收款账号
    @GetMapping("/getBankAccountList")
    public CommonResult getBankAccountList(String searchValue) throws Exception {
        ShopMallPartners partners = partnerList.shopInfoByUserId();
        String dictStr = "partner_bankList-" + partners.getPartnerId();
        DictTypeDO sysDictType = dictTypeService.getDictType(dictStr);
        if (ObjectUtil.isEmpty(sysDictType)) {
            //初始化
            DictTypeSaveReqVO sysDictTypeSave = new DictTypeSaveReqVO();
            sysDictTypeSave.setName("收款账户-" + partners.getPartnerName());
            sysDictTypeSave.setStatus(0);
            sysDictTypeSave.setType(dictStr);
            dictTypeService.createDictType(sysDictTypeSave);
        }
        List<DictDataDO> dataList = dictDataService.getDictDataListByDictType(dictStr);
        if (CollectionUtil.isEmpty(dataList)) {
            dataList = new ArrayList<>();
        }
        if (StringUtils.isNotEmpty(searchValue)) {
            dataList = dataList.stream().filter(it -> {
                return it.getLabel().contains(searchValue);
            }).collect(Collectors.toList());
        }
        return success(dataList);
    }

    //新增银行卡账户
    @PostMapping("/addBankAccount")
    public CommonResult addBankAccount(@RequestBody SysDictData dictData) throws Exception {
        ShopMallPartners partners = partnerList.shopInfo();
        String dictStr = "partner_bankList-" + partners.getPartnerId();
        DictTypeDO sysDictType = dictTypeService.getDictType(dictStr);

        DictDataSaveReqVO dictSave = new DictDataSaveReqVO();

        dictSave.setDictType(sysDictType.getType());
        dictSave.setStatus(0);
        dictSave.setLabel(dictData.getDictLabel());
        dictSave.setValue(dictData.getDictValue());
        dictSave.setRemark(dictData.getRemark());
        dictSave.setCssClass("default");
        dictDataService.createDictData(dictSave);
        return success();
    }

    //删除银行卡账户
    @PostMapping("/delBankAccount")
    public CommonResult delBankAccount(Long dictId) {
        dictDataService.deleteDictData(dictId);
        return success();
    }

    //工单预览
    @GetMapping("/workOrderView")
    public CommonResult workOrderView(Long inspectionId) {
        return success(partnerList.workOrderView(inspectionId));
    }

    //岗位信息
    @GetMapping("/inspectionPostInfo")
    public CommonResult inspectionPostInfo() {
        return success(partnerList.inspectionPostInfo());
    }

    //统计表格1
    @GetMapping("/staticsTable1")
    public CommonResult staticsTable1(String startTime, String endTime) throws Exception {
        ShopMallPartners partners = partnerList.shopInfo();
        return success(partnerList.staticsTable1(partners.getPartnerId(), startTime, endTime));
    }

    //统计表格1
    @GetMapping("/newStaticsTable1")
    public CommonResult newStaticsTable1(String startTime, String endTime) throws Exception {
        return success(partnerList.newStaticsTable1(startTime, endTime));
    }

    //统计表格2
    @GetMapping("/staticsTable2")
    public CommonResult staticsTable2(String startTime, String endTime) throws Exception {
        ShopMallPartners partners = partnerList.shopInfo();
        return success(partnerList.staticsTable2(partners.getPartnerId(), startTime, endTime));
    }

    //新统计表格2
    @GetMapping("/newStaticsTable2")
    public CommonResult newStaticsTable2(String startTime, String endTime) throws Exception {
        return success(partnerList.newStaticsTable2(startTime, endTime));
    }

    //统计表格3
    @GetMapping("/staticsTable3")
    public CommonResult staticsTable3(String startTime, String endTime) throws Exception {
        ShopMallPartners partners = partnerList.shopInfo();
        return success(partnerList.staticsTable3(partners.getPartnerId(), startTime, endTime));
    }

    //新统计表格3
    @GetMapping("/newStaticsTable3")
    public CommonResult newStaticsTable3(String startTime, String endTime) throws Exception {
        return success(partnerList.newStaticsTable3(startTime, endTime));
    }

    //统计表格3
    @GetMapping("/staticsTable3Detail")
    public CommonResult staticsTable3Detail(String startTime, String endTime, String remark) throws Exception {
        ShopMallPartners partners = partnerList.shopInfo();
        return success(partnerList.staticsTable3Detail(partners.getPartnerId(), startTime, endTime, remark));
    }

    //统计表格4
    @GetMapping("/staticsTable4")
    public CommonResult staticsTable4(String startTime, String endTime) throws Exception {
        ShopMallPartners partners = partnerList.shopInfo();
        return success(partnerList.staticsTable4(partners.getPartnerId(), startTime, endTime));
    }

    //统计表格5
    @GetMapping("/staticsTable5")
    public CommonResult staticsTable5(String startTime, String endTime) throws Exception {
        ShopMallPartners partners = partnerList.shopInfo();
        return success(partnerList.staticsTable5(partners.getPartnerId(), startTime, endTime));
    }

    /**
     * 查询检测类型统计
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 结果
     */
    @GetMapping("/queryInspectionSkuList")
    public CommonResult<?> queryInspectionSkuList(String startTime, String endTime) {
        if (StrUtil.isEmpty(startTime) || StrUtil.isEmpty(endTime)) {
            startTime = DateUtil.format(new Date(), "yyyy-MM-dd");
            endTime = DateUtil.format(new Date(), "yyyy-MM-dd");
        }
        return success(partnerList.queryInspectionSkuList(startTime, endTime));
    }

    /**
     * 根据inspection_info的id查有的项目名称
     *
     * @param ids inspection_info的id
     * @author 小李
     * @date 14:52 2024/12/10
     **/
    @GetMapping("/getProjectByIds")
    public CommonResult<?> getProjectByIds(Long[] ids) {
        return success(partnerList.getProjectByIds(ids));
    }

    /**
     * 根据inspection_info的id查有的项目名称
     *
     * @param ids inspection_info的id
     * @author 小李
     * @date 14:52 2024/12/10
     **/
    @GetMapping("/getProjectBelowStandardByIds")
    public CommonResult<?> getProjectBelowStandardByIds(@RequestParam(value = "ids") Long[] ids,@RequestParam(value = "status",required = false) String status,@RequestParam(value = "type",required = false) String type) {
        return success(partnerList.getProjectBelowStandardByIds(ids,status,type));
    }

    /**
     * 根据inspection_info的id查有的项目名称
     *
     * @param ids inspection_info的id
     * @author 小李
     * @date 14:52 2024/12/10
     **/
    @GetMapping("/getProjectExceptionByIds")
    public CommonResult<?> getProjectExceptionByIds(@RequestParam(value = "ids") Long[] ids,@RequestParam(value = "status",required = false) String status,@RequestParam(value = "type",required = false) String type) {
        return success(partnerList.getProjectExceptionByIds(ids,status,type));
    }

    /**
     * 根据时间查订单
     *
     * @param startTime 开始时间 非必传
     * @param endTime   结束时间 非必传
     * @param pageNum   页码
     * @param pageSize  条数
     * @author 小李
     * @date 14:39 2024/12/12
     **/
    @GetMapping("/getOrderByDate")
    public CommonResult<?> getOrderByDate(OrderTableQuery query,
                                          @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                                          @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
        Page<OrderTable> page = new Page<>(pageNum, pageSize);
        return success(partnerList.getOrderByDate(query, page));
    }

    /**
     * 根据时间查订单
     *
     * @param startTime 开始时间 非必传
     * @param endTime   结束时间 非必传
     * @param pageNum   页码
     * @param pageSize  条数
     * @author 小李
     * @date 14:39 2024/12/12
     **/
    @GetMapping("/getOrderApp")
    public CommonResult<?> getOrderApp(@RequestParam(value = "startTime", required = false) String startTime,
                                       @RequestParam(value = "endTime", required = false) String endTime,
                                       @RequestParam(value = "chooseStatus", required = false) String chooseStatus,
                                       @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
        Page<OrderTable> page = new Page<>(pageNum, pageSize);
        return success(partnerList.getOrderApp(startTime, endTime, chooseStatus, page));
    }

    /**
     * 分类计数
     *
     * @param startTime    开始时间
     * @param endTime      结束时间
     * @param chooseStatus 状态
     * @author 小李
     * @date 17:14 2024/12/16
     **/
    @GetMapping("/getTypeCount")
    public CommonResult<?> getTypeCount(@RequestParam(value = "startTime", required = false) String startTime,
                                        @RequestParam(value = "endTime", required = false) String endTime,
                                        @RequestParam(value = "chooseStatus", required = false) String chooseStatus) {
        return success(partnerList.getTypeCount(startTime, endTime, chooseStatus));
    }

    /**
     * 获取员工统计
     *
     * @param dlInspectionProject 项目
     * @return 结果
     */
    @PostMapping("/getStaffCount")
    public CommonResult<?> getStaffCount(@RequestBody DlInspectionProject dlInspectionProject) {
        return success(partnerList.getStaffCount(dlInspectionProject));
    }
}
