You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

221 lines
8.7 KiB

package com.xmomen.module.base.controller;
import java.io.File;
import java.io.IOException;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import com.xmomen.module.base.model.*;
import com.xmomen.module.resource.entity.Resource;
import com.xmomen.module.resource.service.ResourceService;
import com.xmomen.module.resource.service.ResourceUtilsService;
import com.xmomen.module.wx.util.DateUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.xmomen.framework.mybatis.dao.MybatisDao;
import com.xmomen.framework.mybatis.page.Page;
import com.xmomen.framework.web.exceptions.ArgumentValidException;
import com.xmomen.module.base.mapper.ItemMapper;
import com.xmomen.module.base.service.ItemService;
import com.xmomen.module.logger.Log;
@RestController
public class ItemController {
@Autowired
ItemService itemService;
@Autowired
ItemMapper itemMapper;
@Autowired
MybatisDao mybatisDao;
@Autowired
ResourceService resourceService;
/**
* 查询产品信息
*
* @param id
* @return
*/
@RequestMapping(value = "/item", method = RequestMethod.GET)
@Log(actionName = "查询产品信息")
public Page<ItemModel> getMemberList(@RequestParam(value = "limit") Integer limit,
@RequestParam(value = "offset") Integer offset,
@RequestParam(value = "id", required = false) Integer id,
@RequestParam(value = "companyId", required = false) Integer companyId,
@RequestParam(value = "keyword", required = false) String keyword,
@RequestParam(value = "sellStatus", required = false) Integer sellStatus,
@RequestParam(value = "itemType", required = false) Integer itemType,
@RequestParam(value = "sellUnit", required = false) String sellUnit,
@RequestParam(value = "excludeStock", required = false) Integer excludeStock,
@RequestParam(value = "ids", required = false) Integer[] ids,
@RequestParam(value = "exclude_ids", required = false) Integer[] exclude_ids) {
ItemQuery itemQuery = new ItemQuery();
itemQuery.setId(id);
itemQuery.setKeyword(keyword);
if (companyId != null) {
itemQuery.setCompanyId(companyId);
}
if (sellStatus != null) {
itemQuery.setSellStatus(sellStatus);
}
if (itemType != null) {
itemQuery.setItemType(itemType);
}
if (exclude_ids != null) {
itemQuery.setExcludeIds(exclude_ids);
}
if (ids != null) {
itemQuery.setIds(ids);
}
if (excludeStock != null) {
itemQuery.setExcludeStock(excludeStock);
}
if (StringUtils.isNotBlank(sellUnit)) {
itemQuery.setSellUnit(sellUnit);
}
return itemService.queryItemList(itemQuery, offset, limit);
}
/**
* 新增产品
*
* @param createItem
* @param bindingResult
* @throws ArgumentValidException
*/
@RequestMapping(value = "/item", method = RequestMethod.POST)
@Log(actionName = "新增产品")
public void createCompany(@RequestBody @Valid CreateItem createItem, BindingResult bindingResult) throws ArgumentValidException {
if (bindingResult != null && bindingResult.hasErrors()) {
throw new ArgumentValidException(bindingResult);
}
itemService.createItem(createItem);
}
/**
* 修改
*
* @param id
*/
@RequestMapping(value = "/item/{id}", method = RequestMethod.PUT)
@Log(actionName = "修改产品")
public void updateMember(@PathVariable(value = "id") Integer id,
@RequestBody @Valid UpdateItem updateItem, BindingResult bindingResult) throws ArgumentValidException {
if (bindingResult != null && bindingResult.hasErrors()) {
throw new ArgumentValidException(bindingResult);
}
itemService.updateItem(id, updateItem);
}
/**
* 删除
*
* @param id
*/
@RequestMapping(value = "/item/{id}", method = RequestMethod.DELETE)
@Log(actionName = "删除产品信息")
public void deleteMember(@PathVariable(value = "id") Integer id) {
itemService.delete(id);
}
/**
* 查询子产品
*
* @param parentId
* @return
*/
@RequestMapping(value = "/getChildItem", method = RequestMethod.GET)
public List<ItemChildModel> getChildItem(@RequestParam(value = "parentId", required = false) Integer parentId) {
List<ItemChildModel> childItems = new ArrayList<ItemChildModel>();
Map map = new HashMap<String, Object>();
map.put("parentId", parentId);
childItems = mybatisDao.getSqlSessionTemplate().selectList(ItemMapper.ItemMapperNameSpace + "getChildItemList", map);
return childItems;
}
@RequestMapping(value = "/item/picture", method = RequestMethod.POST)
@ResponseBody
public Resource importExcel(HttpServletRequest request, HttpServletResponse response) {
String itemId = request.getParameter("itemId");
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile file = entity.getValue();// 获取上传文件对象
try {
String imagePath = "/itemPicture/" + DateUtils.getNowDateString("yyyy-MM-dd") + "/";
// 文件保存路径
String filePath = request.getSession().getServletContext().getRealPath("/") + imagePath;
File fileDir = new File(filePath);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
String imageName = UUID.randomUUID() + "." + file.getOriginalFilename().split("\\.")[1];
//图片全地址
String imageFullPath = filePath + imageName;
// 转存文件
file.transferTo(new File(imageFullPath));
//上传到FastDFS
String remotePath = ResourceUtilsService.uploadFile(new File(imageFullPath));
if (StringUtils.isNotEmpty(remotePath)) {
//保存资源文件
Resource resource = new Resource();
resource.setEntityId(itemId);
resource.setEntityType("cd_item");
resource.setPath(remotePath);
resource.setIsDefault(0);
resource.setResourceType("PICTURE");
this.resourceService.createResource(resource);
String fullPath = ResourceUtilsService.getWholeHttpPath(resource.getPath());
resource.setPath(fullPath);
return resource;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
/**
* 默认封面图片
*
* @param resourceId 资源目录id
* @return
*/
@RequestMapping(value = "/item/defaultImage", method = RequestMethod.GET)
@ResponseBody
public Boolean defaultImage(
@RequestParam(value = "resourceId") String resourceId) {
this.itemService.defaultImage(resourceId);
return Boolean.TRUE;
}
}