package com.xzx.gc.system.controller; 
 | 
  
 | 
  
 | 
import cn.hutool.core.bean.BeanUtil; 
 | 
import cn.hutool.core.collection.CollUtil; 
 | 
import cn.hutool.core.util.StrUtil; 
 | 
import com.xzx.gc.common.Result; 
 | 
import com.xzx.gc.common.annotations.PassToken; 
 | 
import com.xzx.gc.common.constant.CommonEnum; 
 | 
import com.xzx.gc.common.constant.Constants; 
 | 
import com.xzx.gc.common.constant.OrderEnum; 
 | 
import com.xzx.gc.common.dto.log.OperationAppLog; 
 | 
import com.xzx.gc.common.request.BaseController; 
 | 
import com.xzx.gc.common.utils.MqUtil; 
 | 
import com.xzx.gc.entity.PackageGoodsInfo; 
 | 
import com.xzx.gc.entity.PartnerGaode; 
 | 
import com.xzx.gc.entity.SysEnvironmentalInfo; 
 | 
import com.xzx.gc.model.IdDTO; 
 | 
import com.xzx.gc.model.JsonResult; 
 | 
import com.xzx.gc.model.admin.ExportParamModel; 
 | 
import com.xzx.gc.model.admin.ItemModel; 
 | 
import com.xzx.gc.model.admin.StorageModel; 
 | 
import com.xzx.gc.model.system.QueryParentDTO; 
 | 
import com.xzx.gc.model.system.SysEnvironmentalInfoListReq; 
 | 
import com.xzx.gc.model.system.SysEnvironmentalInfoReq; 
 | 
import com.xzx.gc.model.system.SysEnvironmentalInfoVo; 
 | 
import com.xzx.gc.system.service.*; 
 | 
import com.xzx.gc.util.PreventManyCommit; 
 | 
import io.swagger.annotations.Api; 
 | 
import io.swagger.annotations.ApiImplicitParam; 
 | 
import io.swagger.annotations.ApiImplicitParams; 
 | 
import io.swagger.annotations.ApiOperation; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.http.MediaType; 
 | 
import org.springframework.validation.annotation.Validated; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import javax.servlet.http.HttpServletRequest; 
 | 
import javax.servlet.http.HttpServletResponse; 
 | 
import java.util.ArrayList; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
  
 | 
@Api(tags = "物品分类管理") 
 | 
@RestController 
 | 
@Validated 
 | 
public class SysEnvironmentalInfoController extends BaseController { 
 | 
    @Autowired 
 | 
    private SysEnvironmentalInfoService sysEnvironmentalInfoService; 
 | 
  
 | 
    @Autowired 
 | 
    private MqUtil mqUtil; 
 | 
  
 | 
    @Autowired 
 | 
    private OrderService orderService; 
 | 
  
 | 
    @Autowired 
 | 
    private OtherUserService otherUserService; 
 | 
  
 | 
    @Autowired 
 | 
    private UserService userService; 
 | 
  
 | 
    @Autowired 
 | 
    private PartnerGaodeService partnerGaodeService; 
 | 
  
 | 
  
 | 
    @ApiOperation( value = "物品分类查询") 
 | 
    @PostMapping("/sysEnvironmentalInfo/query") 
 | 
    @PassToken 
 | 
    public Result<List<SysEnvironmentalInfoVo>> querySysEnvironmentalInfo(HttpServletRequest request,@Validated @RequestBody SysEnvironmentalInfoReq sysEnvironmentalInfoReq) { 
 | 
        Result result = new Result(); 
 | 
        sysEnvironmentalInfoReq.setVersion(request.getHeader("version")); 
 | 
        List<SysEnvironmentalInfoVo> list = sysEnvironmentalInfoService.getSysEnvironmentalInfoList(sysEnvironmentalInfoReq); 
 | 
        result.setData(list); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @ApiOperation( value = "物品家电分类查询",notes = "id代表区域ID") 
 | 
    @PostMapping("/sysEnvironmentalInfo/homeAppliance") 
 | 
    public Result<List<SysEnvironmentalInfoVo>> homeAppliance(HttpServletRequest request, @RequestBody IdDTO idDTO) { 
 | 
        Result result = new Result(); 
 | 
        List<SysEnvironmentalInfoVo> list = sysEnvironmentalInfoService.homeAppliance(idDTO.getId()); 
 | 
        result.setData(list); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @ApiOperation( value = "查询大类数据") 
 | 
    @PostMapping("/admin/front/sysEnvironmentalInfo/queryParent") 
 | 
    public Result<List<SysEnvironmentalInfo>> queryParent(HttpServletRequest request,@Validated @RequestBody QueryParentDTO queryParentDTO) { 
 | 
        //TODO 多个区就有问题 
 | 
        String cityId=Constants.TIANXIN_CODE; 
 | 
        if(StrUtil.isNotBlank(queryParentDTO.getPartnerId())) { 
 | 
            List<PartnerGaode> byPartnerId = partnerGaodeService.findByPartnerId(queryParentDTO.getPartnerId()); 
 | 
            if(CollUtil.isNotEmpty(byPartnerId)) { 
 | 
                cityId=byPartnerId.get(0).getTownId(); 
 | 
            } 
 | 
        } 
 | 
        queryParentDTO.setCityId(cityId); 
 | 
        List<SysEnvironmentalInfo> list = sysEnvironmentalInfoService.queryParent(queryParentDTO); 
 | 
        return Result.success(list); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 批量编辑分类 
 | 
     * @param request 
 | 
     * @param infoListReq 
 | 
     * @return 
 | 
     */ 
 | 
    @ApiOperation( value = "批量编辑分类") 
 | 
    @PostMapping("/sysEnvironmentalInfo/batchUpdate") 
 | 
    public Result<String> batchUpdateSysEnvironmentalInfo(HttpServletRequest request, @RequestBody SysEnvironmentalInfoListReq infoListReq){ 
 | 
  
 | 
        //修改价格前必须订单都是处于已取消的或待接单或已完成否则不予修改 
 | 
        List<String> list=new ArrayList<>(); 
 | 
//        list.add(OrderEnum.服务中.getValue()); 
 | 
        list.add(OrderEnum.待入库.getValue()); 
 | 
        list.add(OrderEnum.入库中.getValue()); 
 | 
        String partnerId = otherUserService.findById(getUserId(request)).getPartnerId(); 
 | 
        int status = orderService.findStatusNumByPartnerId(list,partnerId); 
 | 
        if(status>0){ 
 | 
            return Result.error(-1,"当前存在未完成的订单不能修改"); 
 | 
        } 
 | 
  
 | 
  
 | 
        Result result = new Result(); 
 | 
        List<SysEnvironmentalInfoReq> sysEnvironmentalInfoList = infoListReq.getSysEnvironmentalInfoList(); 
 | 
        if(CollUtil.isNotEmpty(sysEnvironmentalInfoList)) { 
 | 
            for (SysEnvironmentalInfoReq sysEnvironmentalInfoReq : sysEnvironmentalInfoList) { 
 | 
  
 | 
                if(StrUtil.isBlank(sysEnvironmentalInfoReq.getPrice())){ 
 | 
                    sysEnvironmentalInfoReq.setPrice(Constants.MONEY_INIT.toString()); 
 | 
                } 
 | 
  
 | 
                if(StrUtil.isBlank(sysEnvironmentalInfoReq.getSecondPrice())){ 
 | 
                    sysEnvironmentalInfoReq.setSecondPrice(sysEnvironmentalInfoReq.getPrice()); 
 | 
                } 
 | 
  
 | 
                if(StrUtil.isBlank(sysEnvironmentalInfoReq.getPutStoragePrice())){ 
 | 
                    sysEnvironmentalInfoReq.setPutStoragePrice(sysEnvironmentalInfoReq.getPrice()); 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
        sysEnvironmentalInfoService.batchUpdateSysEnvironmentalInfo( infoListReq); 
 | 
  
 | 
        String mobilePhone = userService.findOtherByUserId(getUserId(request),0); 
 | 
        OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(mobilePhone) 
 | 
                .methodName(Constants.SYS_MODUL_NAME).operateAction("批量编辑分类-"+partnerId).build(); 
 | 
        mqUtil.sendApp(build); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 查询 
 | 
     * @param item 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping("/admin/front/sysEnvironmentalInfo/queryOperaIteml.do") 
 | 
    @ApiOperation(value="运营管理-物品管理(详情可直接取一条数据)", notes="test: 仅0有正确返回") 
 | 
    public JsonResult<Map<String, Object>> queryOperaIteml(@RequestBody ItemModel item){ 
 | 
        Map<String, Object> map = sysEnvironmentalInfoService.querOperaIteml(item); 
 | 
        return JsonResult.success(map); 
 | 
    } 
 | 
  
 | 
  
 | 
    @PostMapping("/admin/front/sysEnvironmentalInfo/queryOperateItemList.json") 
 | 
    @PreventManyCommit(time = 10) 
 | 
    @ApiOperation(value="运营管理-类别列表(更新分类)", notes="test: 仅0有正确返回") 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(paramType="query", name = "pageNum", value = "页码", required = false, dataType = "int"), 
 | 
            @ApiImplicitParam(paramType="query", name = "limitNum", value = "每页条数", required = false, dataType = "int"), 
 | 
            @ApiImplicitParam(paramType="query", name = "id", value = "父类Id", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "cityId", value = "原有城市Id改为存放区域Id,与前端App沟通", required = true, dataType = "String") 
 | 
    }) 
 | 
    public JsonResult<Map<String, Object>> queryOperateItemList(@RequestBody ItemModel item){ 
 | 
  
 | 
        Map<String, Object> map = sysEnvironmentalInfoService.queryOperateItemList(item); 
 | 
        return JsonResult.success(map); 
 | 
    } 
 | 
  
 | 
  
 | 
    @PostMapping("/admin/front/sysEnvironmentalInfo/updateOperateItem.json") 
 | 
    @PreventManyCommit(time = 10) 
 | 
    @ApiOperation(value="运营管理-更新物品(更新分类)", notes="test: 仅0有正确返回") 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(paramType="query", name = "id", value = "物品(父类)Id", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "cityId", value = "城市ID", required = false, dataType = "String") 
 | 
    }) 
 | 
    public JsonResult<Map<String, Object>> updateOperateItem(@RequestBody ItemModel item,HttpServletRequest request){ 
 | 
        Map<String, Object> map = sysEnvironmentalInfoService.updateOperateItem(item); 
 | 
        OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) 
 | 
                .methodName(Constants.ORDER_MODUL_NAME).operateAction("更新物品-"+item.getId()).build(); 
 | 
        mqUtil.sendApp(build); 
 | 
        return JsonResult.success(map); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 查询 
 | 
     * @param item 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping("/admin/front/sysEnvironmentalInfo/addOperateParent.json") 
 | 
    @ApiOperation(value="运营管理-添加物品(添加分类)", notes="test: 仅0有正确返回") 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(paramType="query", name = "title", value = "类别名称", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "itemUnit", value = "单位", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "price", value = "回收价格", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "putStoragePrice", value = "入库价格", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "picture", value = "图片", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "secondPrice", value = "500公斤以上价格", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "parentId", value = "所属类别(如果是添加分类为空)", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "sort", value = "排序", required = false, dataType = "String"), 
 | 
            @ApiImplicitParam(paramType="query", name = "areaTownList", value = "区域集合", required = false, dataType = "List<List<String>>"), 
 | 
            @ApiImplicitParam(paramType="query", name = "townIdList", value = "区域Id列表", required = false, dataType = "List<String>") 
 | 
  
 | 
    }) 
 | 
    public JsonResult<Map<String, Object>> addOperateParent(@RequestBody ItemModel item,HttpServletRequest request){ 
 | 
        Map<String, Object> map = sysEnvironmentalInfoService.addOperateParent(item); 
 | 
  
 | 
        OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) 
 | 
                .methodName(Constants.ORDER_MODUL_NAME).operateAction("添加物品-"+CollUtil.join(item.getTownIdList(),",")).build(); 
 | 
        mqUtil.sendApp(build); 
 | 
  
 | 
        return JsonResult.success(map); 
 | 
    } 
 | 
  
 | 
  
 | 
    @PostMapping( "/admin/front/sysEnvironmentalInfo/delOperateItem.json") 
 | 
    @PreventManyCommit(time = 10) 
 | 
    @ApiOperation(value="运营管理-删除物品(删除分类)", notes="test: 仅0有正确返回") 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(paramType="query", name = "id", value = "物品(父类)Id", required = false, dataType = "String") 
 | 
    }) 
 | 
    public JsonResult<Map<String, Object>> delOperateItem(@RequestBody ItemModel item,HttpServletRequest request){ 
 | 
        Map<String, Object> map = sysEnvironmentalInfoService.delOperateItem(item); 
 | 
        OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) 
 | 
                .methodName(Constants.ORDER_MODUL_NAME).operateAction("删除物品-"+item.getId()).build(); 
 | 
        mqUtil.sendApp(build); 
 | 
        return JsonResult.success(map); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 查询分类数据 
 | 
     * @param storageModel 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping("/admin/front/sysEnvironmentalInfo/queryTypeData.do") 
 | 
    @ApiOperation(value="数据统计-分类数据(示意图)", notes="test: 仅0有正确返回") 
 | 
    public JsonResult<Map<String, Object>> queryTypeData(@RequestBody StorageModel storageModel){ 
 | 
        Map<String,Object> resultMap = sysEnvironmentalInfoService.queryTypeData(storageModel); 
 | 
        return JsonResult.success(resultMap); 
 | 
    } 
 | 
  
 | 
  
 | 
    @ApiOperation(value = "分类导出",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) 
 | 
    @PostMapping(value = "/admin/front/sysEnvironmentalInfo/export") 
 | 
    public void fileExport(@RequestBody ExportParamModel exportParamModel, HttpServletRequest request, HttpServletResponse response) { 
 | 
        List<List<String>> rows = new ArrayList<>(); 
 | 
        //标题 
 | 
        List<String> header = CollUtil.newArrayList("类型", "重量(吨)", "金额(万元)", "金额占比", "重量误差(吨)", "金额误差(万元)"); 
 | 
        rows.add(header); 
 | 
  
 | 
        //组装数据 
 | 
        StorageModel storageModel = new StorageModel(exportParamModel); 
 | 
        Map<String,Object> result = sysEnvironmentalInfoService.queryTypeData(storageModel); 
 | 
        List<SysEnvironmentalInfo>  detailImage = ( List<SysEnvironmentalInfo> ) result.get("data"); 
 | 
        if (CollUtil.isNotEmpty(detailImage)) { 
 | 
            for (SysEnvironmentalInfo sysEnvironmentalInfo:detailImage) { 
 | 
                Map<String,Object> m=BeanUtil.beanToMap(sysEnvironmentalInfo); 
 | 
                List<String> list = new ArrayList<>(); 
 | 
                if(null!=m.get("delFlag")){ 
 | 
                    if(m.get("delFlag").toString().equals("1")){ 
 | 
                        m.put("title",m.get("title").toString()+"(已删除)"); 
 | 
                    } 
 | 
                } 
 | 
                list.add(m.get("title").toString()); 
 | 
                list.add(m.get("weight").toString()); 
 | 
                list.add(m.get("money").toString()); 
 | 
                list.add(m.get("rate").toString()); 
 | 
                list.add(m.get("weightError").toString()); 
 | 
                list.add(m.get("moneyError").toString()); 
 | 
                rows.add(list); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        //导出 
 | 
        export(rows,response); 
 | 
  
 | 
        OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) 
 | 
                .methodName(Constants.SYS_MODUL_NAME).operateAction("分类导出").build(); 
 | 
        mqUtil.sendApp(build); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |