package doumeemes.api.ext; 
 | 
  
 | 
import doumeemes.api.BaseController; 
 | 
import doumeemes.core.annotation.excel.ExcelExporter; 
 | 
import doumeemes.core.annotation.pr.PreventRepeat; 
 | 
import doumeemes.core.model.ApiResponse; 
 | 
import doumeemes.core.model.PageData; 
 | 
import doumeemes.core.model.PageWrap; 
 | 
import doumeemes.core.utils.Constants; 
 | 
import doumeemes.dao.business.dto.QueryUnitExtDTO; 
 | 
import doumeemes.dao.business.model.Bom; 
 | 
import doumeemes.dao.business.model.BomDetail; 
 | 
import doumeemes.dao.business.model.Material; 
 | 
import doumeemes.dao.business.model.MaterialDistribute; 
 | 
import doumeemes.dao.business.vo.UnitExtListVO; 
 | 
import doumeemes.dao.ext.bean.MaterialDetailBean; 
 | 
import doumeemes.dao.ext.dto.QueryCategoryUnionExtDTO; 
 | 
import doumeemes.dao.ext.dto.QueryMaterialExtDTO; 
 | 
import doumeemes.dao.ext.vo.MaterialExtListVO; 
 | 
import doumeemes.service.business.*; 
 | 
import doumeemes.service.ext.CategoryUnionExtService; 
 | 
import doumeemes.service.ext.MaterialDistributeExtService; 
 | 
import doumeemes.service.ext.MaterialExtService; 
 | 
import io.swagger.annotations.Api; 
 | 
import io.swagger.annotations.ApiImplicitParam; 
 | 
import io.swagger.annotations.ApiImplicitParams; 
 | 
import io.swagger.annotations.ApiOperation; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.apache.shiro.authz.annotation.RequiresPermissions; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
import org.springframework.web.multipart.MultipartFile; 
 | 
import org.springframework.web.multipart.MultipartHttpServletRequest; 
 | 
import org.springframework.web.multipart.commons.CommonsMultipartResolver; 
 | 
  
 | 
import javax.servlet.http.HttpServletRequest; 
 | 
import javax.servlet.http.HttpServletResponse; 
 | 
import java.util.ArrayList; 
 | 
import java.util.Date; 
 | 
import java.util.Iterator; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * 物料基本信息接口 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2022/04/20 10:59 
 | 
 */ 
 | 
@RestController 
 | 
@RequestMapping("/ext/materialExt") 
 | 
@Api(tags = "物料基本信息接口") 
 | 
public class MaterialExtController extends BaseController { 
 | 
  
 | 
    @Autowired 
 | 
    private MaterialExtService materialExtService; 
 | 
     
 | 
    @Autowired 
 | 
    private MaterialService materialService; 
 | 
  
 | 
    @Autowired 
 | 
    private CategoryUnionExtService categoryUnionExtService; 
 | 
  
 | 
    @Autowired 
 | 
    private UnitExtService unitExtService; 
 | 
  
 | 
    @Autowired 
 | 
    private MaterialDistributeService materialDistributeService; 
 | 
  
 | 
  
 | 
    @Autowired 
 | 
    private MaterialDistributeExtService materialDistributeExtService; 
 | 
  
 | 
  
 | 
    @Autowired 
 | 
    private BomService bomService; 
 | 
  
 | 
    @Autowired 
 | 
    private BomDetailService bomDetailService; 
 | 
  
 | 
  
 | 
  
 | 
    @PreventRepeat 
 | 
    @ApiOperation("新建") 
 | 
    @PostMapping("/create") 
 | 
    @RequiresPermissions("ext:materialext:create") 
 | 
    public ApiResponse create(@RequestBody Material material) { 
 | 
        Integer result=materialService.create(material); 
 | 
        if(result==-1){ 
 | 
            return ApiResponse.failed("主组织内物料编码不能重复"); 
 | 
        }else if(result==-2){ 
 | 
            return ApiResponse.failed("主组织内物料名称不能重复"); 
 | 
        } 
 | 
        return ApiResponse.success(result); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("根据ID删除") 
 | 
    @GetMapping("/delete/{id}") 
 | 
    @RequiresPermissions("ext:materialext:delete") 
 | 
    public ApiResponse deleteById(@PathVariable Integer id) { 
 | 
        Material material=   materialService.findById(id); 
 | 
        material.setDeleted(Constants.ONE); 
 | 
        materialService.updateById(material); 
 | 
        return ApiResponse.success(null); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("批量删除") 
 | 
    @GetMapping("/delete/batch") 
 | 
    @RequiresPermissions("ext:materialext:delete") 
 | 
    public ApiResponse deleteByIds(@RequestParam String ids) { 
 | 
        String [] idArray = ids.split(","); 
 | 
        List<Material> idList = new ArrayList<>(); 
 | 
        for (String id : idArray) { 
 | 
            Material material=   materialService.findById(Integer.valueOf(id)); 
 | 
            material.setDeleted(Constants.ONE); 
 | 
            idList.add(material); 
 | 
        } 
 | 
        materialService.updateByIdInBatch(idList); 
 | 
        return ApiResponse.success(null); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("根据ID修改") 
 | 
    @PostMapping("/updateById") 
 | 
    @RequiresPermissions("ext:materialext:update") 
 | 
    public ApiResponse updateById(@RequestBody Material material) { 
 | 
        Integer result=materialService.updateById(material); 
 | 
  
 | 
        if(result==-1){ 
 | 
            return ApiResponse.failed("主组织内物料编码不能重复"); 
 | 
        }else if(result==-2){ 
 | 
            return ApiResponse.failed("主组织内物料名称不能重复"); 
 | 
        } 
 | 
        return ApiResponse.success(result); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("分页查询") 
 | 
    @PostMapping("/page") 
 | 
    @RequiresPermissions("ext:materialext:query") 
 | 
    public ApiResponse<PageData<MaterialExtListVO>> findPage (@RequestBody PageWrap<QueryMaterialExtDTO> pageWrap) { 
 | 
        return ApiResponse.success(materialExtService.findPage(pageWrap)); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("导出Excel") 
 | 
    @PostMapping("/exportExcel") 
 | 
    @RequiresPermissions("ext:materialext:exportExcel") 
 | 
    public void exportExcel (@RequestBody PageWrap<QueryMaterialExtDTO> pageWrap, HttpServletResponse response) { 
 | 
        ExcelExporter.build(MaterialExtListVO.class).export(materialExtService.findPage(pageWrap).getRecords(), "物料基本信息", response); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("根据ID查询") 
 | 
    @GetMapping("/{id}") 
 | 
    @RequiresPermissions("ext:materialext:query") 
 | 
    public ApiResponse<MaterialDetailBean> findById(@PathVariable Integer id) { 
 | 
        return ApiResponse.success(materialExtService.findDetailById(id)); 
 | 
    } 
 | 
  
 | 
  
 | 
    @ApiOperation("获取当前主组织分类为物料的数据集合") 
 | 
    @GetMapping("/getCategoryUnionListByOrg") 
 | 
    public ApiResponse getCategoryUnionListByOrg() { 
 | 
        QueryCategoryUnionExtDTO categoryUnion=new QueryCategoryUnionExtDTO(); 
 | 
        categoryUnion.setDeleted(Constants.ZERO); 
 | 
        categoryUnion.setRootDepartId(getLoginUser().getRootDepartment().getId()); 
 | 
        categoryUnion.setBmodelCateType("0"); 
 | 
       // categoryUnion.setMmodelCateType("0"); 
 | 
      //  categoryUnion.setCmodelCateType("0"); 
 | 
        return ApiResponse.success(categoryUnionExtService.getCategoryUnionListByOrg(categoryUnion)); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @ApiOperation("主单位集合") 
 | 
    @PostMapping("/getUnitListByOrg") 
 | 
    public ApiResponse<List<UnitExtListVO>> getUnitListByOrg () { 
 | 
        QueryUnitExtDTO pageWrap=new QueryUnitExtDTO(); 
 | 
        pageWrap.setDeleted(Constants.ZERO); 
 | 
        pageWrap.setRootDepartId(getLoginUser().getRootDepartment().getId()); 
 | 
        pageWrap.setType(Constants.ZERO); 
 | 
        pageWrap.setStatus(Constants.ONE); 
 | 
        return ApiResponse.success(unitExtService.getUnitListByOrg(pageWrap)); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("物料分配") 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(value = "物料ids,逗号分割", name = "materialIds", paramType = "query", required = true, dataType = "Integer"), 
 | 
            @ApiImplicitParam(value = "公司级组织ids", name = "departIds", paramType = "query", required = true, dataType = "Integer") 
 | 
    }) 
 | 
    @GetMapping("/distributionMaterial") 
 | 
    @RequiresPermissions("ext:materialext:distributionMaterial") 
 | 
    public ApiResponse distributionMaterial(@RequestParam String materialIds, @RequestParam String departIds) { 
 | 
        if(StringUtils.isEmpty(materialIds)||StringUtils.isEmpty(departIds)){ 
 | 
            return ApiResponse.failed("参数不正确!"); 
 | 
        } 
 | 
       return materialDistributeService.insert(materialIds,departIds); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @ApiOperation("物料状态变更(失效)") 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(value = "物料ids", name = "ids", paramType = "query", required = true, dataType = "String"), 
 | 
            @ApiImplicitParam(value = "状态0.无效 1.有效", name = "status", paramType = "query", required = true, dataType = "String") 
 | 
    }) 
 | 
    @GetMapping("/updateMateriaStatus") 
 | 
    @RequiresPermissions("ext:materialext:updateMateriaStatus") 
 | 
    public ApiResponse updateMateriaStatus (@RequestParam String ids,@RequestParam String status) { 
 | 
        if(StringUtils.isEmpty(ids)||StringUtils.isEmpty(status)){ 
 | 
           return ApiResponse.failed("参数不正确"); 
 | 
        } 
 | 
        return materialService.updateMateriaStatus(ids ,status); 
 | 
    } 
 | 
  
 | 
  
 | 
    @ApiOperation("物料详情子组织状态变更") 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true, dataType = "String"), 
 | 
            @ApiImplicitParam(value = "状态0.无效 1.有效", name = "status", paramType = "query", required = true, dataType = "String") 
 | 
    }) 
 | 
    @GetMapping("/updateChildMateriaStatus") 
 | 
    @RequiresPermissions("ext:materialext:updateChildMateriaStatus") 
 | 
    public ApiResponse updateChildMateriaStatus (@RequestParam String id,@RequestParam String status) { 
 | 
        if(StringUtils.isEmpty(id)||StringUtils.isEmpty(status)){ 
 | 
            return ApiResponse.failed("参数不正确"); 
 | 
        } 
 | 
  
 | 
  
 | 
        MaterialDistribute materialDistribute=  materialDistributeService.findById(Integer.valueOf(id)); 
 | 
        materialDistribute.setStatus(Integer.valueOf(status)); 
 | 
        materialDistribute.setMaterialId(Integer.valueOf(id)); 
 | 
        if(StringUtils.equals(status,"0")){ 
 | 
            //无效 
 | 
            materialDistribute.setInvalidTime(new Date()); 
 | 
        } 
 | 
        if(StringUtils.equals(status,"1")){ 
 | 
            //有效 
 | 
            materialDistribute.setValidTime(new Date()); 
 | 
        } 
 | 
  
 | 
        if(StringUtils.equals(status,"0")){ 
 | 
            //查询BOM是否关联物料已关联不允许失效 
 | 
            BomDetail bomDetail=new BomDetail(); 
 | 
            bomDetail.setDeleted(Constants.ZERO); 
 | 
            bomDetail.setMaterialId(materialDistribute.getMaterialId()); 
 | 
            List<BomDetail> bdList= bomDetailService.findList(bomDetail); 
 | 
            Bom bom=new Bom(); 
 | 
            bom.setStatus(1); 
 | 
            bom.setDeleted(Constants.ZERO); 
 | 
            List<Bom> blist= bomService.findList(bom); 
 | 
            if(bdList.size()>0||blist.size()>0){ 
 | 
                return ApiResponse.failed("已关联BOM不允许失效"); 
 | 
            } 
 | 
        } 
 | 
        materialDistributeService.updateById(materialDistribute); 
 | 
        return ApiResponse.success(null); 
 | 
    } 
 | 
  
 | 
  
 | 
    @ApiOperation("查询所有的物料") 
 | 
    @PostMapping("/getListByCondition") 
 | 
    @RequiresPermissions("ext:materialext:query") 
 | 
    public ApiResponse<List<MaterialExtListVO>> getListByCondition (@RequestBody QueryMaterialExtDTO queryMaterialExtDTO ) { 
 | 
        return ApiResponse.success(materialExtService.getListByCondition(queryMaterialExtDTO)); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 导入物料 
 | 
     * 
 | 
     * @param request 
 | 
     * @param response 
 | 
     * @throws Exception 
 | 
     */ 
 | 
    @ApiOperation(value = "导入物料", notes = "导入物料", httpMethod = "POST", position = 6) 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(name = "folder", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), 
 | 
    }) 
 | 
    @PostMapping(value = "/importmaterial", headers = "content-type=multipart/form-data") 
 | 
    public ApiResponse importmaterial(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { 
 | 
        CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver(); 
 | 
        if (multipartResovler.isMultipart(request)) { 
 | 
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 
 | 
            Iterator<String> it = multipartRequest.getFileNames(); 
 | 
            while (it.hasNext()) { 
 | 
                MultipartFile file = multipartRequest.getFile((String) it.next());// file 
 | 
                materialExtService.importmaterial(file); 
 | 
                break; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return ApiResponse.success( null); 
 | 
    } 
 | 
} 
 |