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 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> findPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(materialExtService.findPage(pageWrap)); } @ApiOperation("导出Excel") @PostMapping("/exportExcel") @RequiresPermissions("ext:materialext:exportExcel") public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) { ExcelExporter.build(MaterialExtListVO.class).export(materialExtService.findPage(pageWrap).getRecords(), "物料基本信息", response); } @ApiOperation("根据ID查询") @GetMapping("/{id}") @RequiresPermissions("ext:materialext:query") public ApiResponse 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> 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 bdList= bomDetailService.findList(bomDetail); Bom bom=new Bom(); bom.setStatus(1); bom.setDeleted(Constants.ZERO); List 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> 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 it = multipartRequest.getFileNames(); while (it.hasNext()) { MultipartFile file = multipartRequest.getFile((String) it.next());// file materialExtService.importmaterial(file); break; } } return ApiResponse.success( null); } }