package doumeemes.api.ext;
|
|
import doumeemes.api.BaseController;
|
import doumeemes.core.annotation.excel.ExcelExporter;
|
import doumeemes.core.annotation.pr.PreventRepeat;
|
import doumeemes.core.annotation.trace.Trace;
|
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 = "物料基本信息接口")
|
@Trace(withRequestResult = false,withRequestParameters = false)
|
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);
|
}
|
}
|