package com.gk.firework.Controller;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.InputStream;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.gk.firework.Controller.Base.BaseController;
|
import com.gk.firework.Domain.*;
|
import com.gk.firework.Domain.Enum.Element;
|
import com.gk.firework.Domain.Enum.EnterpriseSafetySupervision;
|
import com.gk.firework.Domain.Enum.ErrorCode;
|
import com.gk.firework.Domain.Utils.*;
|
import com.gk.firework.Domain.Vo.DirectionDetail;
|
import com.gk.firework.Domain.Vo.FireworkDeal;
|
import com.gk.firework.Domain.Vo.ProductThresholdVo;
|
import com.gk.firework.Domain.Vo.ProductVo;
|
import com.gk.firework.Service.*;
|
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.beans.factory.annotation.Value;
|
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.FieldError;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.math.BigDecimal;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author jingjy
|
*/
|
@Api(tags = "产品信息接口")
|
@RequestMapping("/product")
|
@RestController
|
public class ProductController extends BaseController {
|
@Value("${productPath}")
|
private String productPath; //配置文件配置的物理保存地址
|
private ProductService productService;
|
private StockService stockService;
|
private UserService userService;
|
private EnterpriseService enterpriseService;
|
private ProductThresholdService productThresholdService;
|
private ProductCategoryService productCategoryService;
|
private ProductPriceService productPriceService;
|
private ExcelExportService excelExportService;
|
|
private static final Byte ADD_OPTION = 1;
|
private static final Byte EDIT_OPTION = 2;
|
private static final Byte DEL_OPTION = 3;
|
@Autowired
|
public ProductController(ProductService productService,StockService stockService, UserService userService,
|
EnterpriseService enterpriseService,ProductThresholdService productThresholdService,
|
ProductCategoryService productCategoryService,ProductPriceService productPriceService,
|
ExcelExportService excelExportService ) {
|
this.productService = productService;
|
this.stockService = stockService;
|
this.userService = userService;
|
this.enterpriseService = enterpriseService;
|
this.productThresholdService = productThresholdService;
|
this.productCategoryService = productCategoryService;
|
this.productPriceService = productPriceService;
|
this.excelExportService = excelExportService;
|
}
|
|
/**
|
* 查询全部的产品信息
|
*
|
* @param name 产品名;
|
* @param directionCode :流向码(十位);
|
* @param manufacturer :生产厂家
|
* @return List<ProductInfo> 产品信息的集合
|
*/
|
@GetMapping("/info")
|
public Msg getProductInfo(@RequestParam(value = "name", required = false) String name,
|
@RequestParam(value = "directionCode", required = false) String directionCode,
|
@RequestParam(value = "manufacturer", required = false) String manufacturer,
|
@RequestParam(value = "type", required = false) String type,
|
@RequestParam(value = "secondaryType", required = false) String secondaryType,
|
@RequestParam(value = "isOld", required = false) String isOld,
|
@RequestParam(defaultValue = "0") Integer pageIndex,
|
@RequestParam(defaultValue = "10") Integer pageSize,
|
String sort, String order) {
|
Msg msg = new Msg(true);
|
|
PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order);
|
Map<String, Object> condition = new HashMap<>(4);
|
if (StringUtils.isNotBlank(name)) {
|
condition.put("name", name);
|
}
|
if (StringUtils.isNotBlank(directionCode)) {
|
condition.put("directionCode", directionCode);
|
}
|
if (StringUtils.isNotBlank(manufacturer)) {
|
condition.put("manufacturer", manufacturer);
|
}
|
if (StringUtils.isNotBlank(type)) {
|
condition.put("type", type);
|
}
|
if (StringUtils.isNotBlank(secondaryType)) {
|
condition.put("secondaryType", secondaryType);
|
}
|
if (StringUtils.isNotBlank(isOld)) {
|
condition.put("isOld", isOld);
|
}
|
UserInfo userInfo = userService.getById(getUser().getId());
|
if (userInfo.getCompanyid() != null){
|
Enterprise enterprise = enterpriseService.getById(userInfo.getCompanyid());
|
if (enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
|
condition.put("manufacturer", enterprise.getEnterprisename());
|
}else {
|
condition.put("companynumber", enterprise.getEnterprisenumber());
|
}
|
}
|
|
pageInfo.setCondition(condition);
|
productService.selectDataGrid(pageInfo);
|
msg.setResult(pageInfo);
|
return msg;
|
}
|
|
/**
|
* 查询全部的产品信息编码
|
*
|
* @return List<String> 产品编码的集合
|
*/
|
@GetMapping("/codes")
|
public Msg getProductCodes(){
|
List<String>list = productService.getAllProductCodes();
|
return success(list);
|
}
|
|
/**
|
* 查询全部的产品信息
|
*
|
* @param name 产品名;
|
* @param directionCode :流向码(十位);
|
* @param manufacturer :生产厂家
|
* @return List<ProductInfo> 产品信息的集合
|
*/
|
@GetMapping("/exportInfo")
|
public Msg exportProduct(@RequestParam(value = "name", required = false) String name,
|
@RequestParam(value = "directionCode", required = false) String directionCode,
|
@RequestParam(value = "manufacturer", required = false) String manufacturer,
|
@RequestParam(value = "type", required = false) String type,
|
@RequestParam(value = "secondaryType", required = false) String secondaryType) {
|
Msg msg = new Msg(true);
|
Map<String, Object> condition = new HashMap<>(4);
|
if (StringUtils.isNotBlank(name)) {
|
condition.put("name", name);
|
}
|
if (StringUtils.isNotBlank(directionCode)) {
|
condition.put("directionCode", directionCode);
|
}
|
if (StringUtils.isNotBlank(manufacturer)) {
|
condition.put("manufacturer", manufacturer);
|
}
|
if (StringUtils.isNotBlank(type)) {
|
condition.put("type", type);
|
}
|
if (StringUtils.isNotBlank(secondaryType)) {
|
condition.put("secondaryType", secondaryType);
|
}
|
UserInfo userInfo = userService.getById(getUser().getId());
|
if (userInfo.getCompanyid() != null){
|
Enterprise enterprise = enterpriseService.getById(userInfo.getCompanyid());
|
if (enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
|
condition.put("manufacturer", enterprise.getEnterprisename());
|
}else {
|
condition.put("companynumber", enterprise.getEnterprisenumber());
|
}
|
}
|
|
List<ProductInfo> productInfos = productService.selectProductInfo(condition);
|
msg.setResult(productInfos);
|
return msg;
|
}
|
|
@PostMapping("/updatePrice")
|
public Msg updatePrice( @RequestBody ProductInfo productInfo) {
|
Msg msg = new Msg(true);
|
if (productInfo == null || StringUtils.isBlank(productInfo.getDirectionCode())
|
|| productInfo.getDirectionCode().length() < FireworkDeal.DIRECTION_ITEM){
|
msg.setCode("999");
|
msg.setMessage("流向码异常,修改失败");
|
return msg;
|
}
|
ProductInfo productInfoExist = productService.selectByDirection(productInfo.getDirectionCode());
|
if (productInfoExist == null) {
|
msg.setCode("999");
|
msg.setMessage("产品信息流向码不存在,修改失败!");
|
return msg;
|
}
|
|
String companynumber = "";
|
UserInfo userInfo = userService.getById(getUser().getId());
|
if (userInfo.getCompanyid() != null){
|
Enterprise enterprise = enterpriseService.getById(userInfo.getCompanyid());
|
if (!enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
|
companynumber = enterprise.getEnterprisenumber();
|
}
|
}
|
if (StringUtils.isBlank(companynumber)){
|
msg.setCode("999");
|
msg.setMessage("非经营企业无法修改价格!");
|
return msg;
|
}
|
|
ProductPriceInfo productPriceInfo = productPriceService.selectByCode(companynumber,productInfo.getDirectionCode());
|
if (productPriceInfo != null){
|
productPriceInfo.setPrice(productInfo.getSalePrice());
|
productPriceInfo.setUpdated(new Date());
|
productPriceInfo.setUpdator(userInfo.getUsername());
|
productPriceService.updateById(productPriceInfo);
|
}else {
|
ProductPriceInfo productPrice = new ProductPriceInfo();
|
productPrice.setCompanynumber(companynumber);
|
productPrice.setItemcode(productInfo.getDirectionCode());
|
productPrice.setPrice(productInfo.getSalePrice());
|
productPrice.setUpdated(new Date());
|
productPrice.setUpdator(userInfo.getUsername());
|
productPriceService.save(productPrice);
|
}
|
return msg;
|
}
|
|
@PostMapping("/importEditPrice")
|
@ApiOperation(value = "导入修改价格",response = Msg.class)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "file",value = "文件",required = true),
|
})
|
public Msg addSelfCheckList(MultipartFile file){
|
Msg msg = new Msg();
|
msg.setCode("200");
|
msg.setMessage("success");
|
|
String filesave ="";
|
try {
|
SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddHHmmssSSS" );
|
if (file == null)
|
{
|
msg.setCode("404");
|
msg.setMessage("未找到上传文件");
|
return msg;
|
}
|
|
long size = file.getSize();
|
if(0 == size)
|
{
|
msg.setCode("404");
|
msg.setMessage("上传文件大小为空");
|
return msg;
|
}
|
|
if(!FileOptUtils.isDirExists(productPath)){
|
msg.setCode("500");
|
msg.setMessage("发生错误或不为目录");
|
return msg;
|
}
|
|
String companynumber = "";
|
UserInfo userInfo = userService.getById(getUser().getId());
|
if (userInfo.getCompanyid() != null){
|
Enterprise enterprise = enterpriseService.getById(userInfo.getCompanyid());
|
if (!enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
|
companynumber = enterprise.getEnterprisenumber();
|
}
|
}
|
if (StringUtils.isBlank(companynumber)){
|
msg.setCode("999");
|
msg.setMessage("非经营企业无法修改价格!");
|
return msg;
|
}
|
|
filesave = productPath + getUser().getUsername() + "_" + sdf.format(new Date()) +".xlsx";
|
|
file.transferTo(new File(filesave));
|
InputStream in = new FileInputStream(filesave);
|
String name = file.getOriginalFilename();
|
Boolean isExcel2007 = name.substring(name.lastIndexOf(".") + 1).endsWith("xlsx")? true:false;
|
BooleanReason blret = excelExportService.imporEditPriceExcel(in,companynumber,getUser().getUsername(),isExcel2007);
|
if(blret.getValue().equals(false))
|
{
|
msg.setCode("500");
|
msg.setMessage(blret.getResultmsg());
|
return msg;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
msg.setCode("500");
|
msg.setMessage("导入发生错误");
|
return msg;
|
}
|
|
return msg;
|
}
|
|
@PostMapping("/add")
|
public Msg addProduct(@Validated @RequestBody ProductInfo productInfo, BindingResult bindingResult) {
|
if (bindingResult.hasErrors()) {
|
StringBuilder stringBuilder = new StringBuilder();
|
for (String s : bindingResult.getFieldErrors().stream()
|
.map(FieldError::getDefaultMessage).collect(Collectors.toList())) {
|
stringBuilder.append(s).append(",");
|
}
|
return new Msg(ErrorCode.ERROR_10002,stringBuilder.toString());
|
}
|
|
if (StringUtils.isBlank(productInfo.getDirectionCode()) || productInfo.getDirectionCode().length() != 10){
|
return new Msg(ErrorCode.ERROR_10004,"流向码格式错误,新增失败!");
|
}
|
|
List<ProductInfo> productInfosExist = productService.selectByProduct(productInfo);
|
if (productInfosExist != null && productInfosExist.size() != 0) {
|
return new Msg(ErrorCode.ERROR_50003,"新增产品信息流向码已存在,无法添加!");
|
}
|
|
Enterprise enterprise = enterpriseService.selectEnterpriseByNumber(productInfo.getManufacturer());
|
if (enterprise == null || !enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
|
return new Msg(ErrorCode.ERROR_50002,"企业信息不存在 或 该企业不为生产企业!");
|
}
|
|
Byte isOld = 1;
|
productInfo.setCompanyNumber(enterprise.getEnterprisenumber());
|
productInfo.setManufacturer(enterprise.getEnterprisename());
|
productInfo.setCreatedDate(new Date());
|
productInfo.setCreatedBy(getUser().getUsername());
|
productInfo.setIsOld(isOld);
|
Msg thresholdMsg = isFitThreshold(productInfo);
|
if (!thresholdMsg.getCode().equals(ErrorCode.SUCCESS.getCode())){
|
return thresholdMsg;
|
}
|
boolean i = productService.save(productInfo);
|
|
if (!i) {
|
return new Msg(ErrorCode.ERROR_40001,"新增失败,请重新新增!");
|
}
|
|
return success();
|
}
|
@PostMapping("/addNew")
|
public Msg addNewProduct(@Validated @RequestBody ProductInfo productInfo, BindingResult bindingResult) {
|
Msg msg = new Msg(true);
|
|
if (bindingResult.hasErrors()) {
|
StringBuilder stringBuilder = new StringBuilder();
|
for (String s : bindingResult.getFieldErrors().stream()
|
.map(FieldError::getDefaultMessage).collect(Collectors.toList())) {
|
stringBuilder.append(s);
|
stringBuilder.append(",");
|
}
|
msg.setCode("999");
|
msg.setMessage(stringBuilder.toString());
|
return msg;
|
}
|
|
|
Enterprise enterprise = enterpriseService.selectEnterpriseByNumber(productInfo.getManufacturer());
|
if (enterprise == null || !enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
|
msg.setCode("999");
|
msg.setMessage("企业信息不存在 或 该企业不为生产企业!");
|
return msg;
|
}
|
|
//生成十位流向码
|
String itemCode = "";
|
ProductCategory productCategory = productCategoryService.selectCategoryByLevelAndName(productInfo.getLevel(),
|
productInfo.getSecondaryType());
|
|
if (productCategory == null || StringUtils.isBlank(productCategory.getBitcode())){
|
msg.setCode("999");
|
msg.setMessage("产品类别错误,新增失败!");
|
return msg;
|
}
|
|
int explosiveContent = productInfo.getExplosiveContent().setScale(0,BigDecimal.ROUND_UP).intValue();
|
String explosive = "FFF";
|
if (explosiveContent <= 4095){
|
explosive = String.format("%03x",explosiveContent);
|
}
|
|
String randomStr = Element.random(Element.class).getValue().toString()+Element.random(Element.class).getValue().toString()
|
+Element.random(Element.class).getValue().toString()+Element.random(Element.class).getValue().toString();
|
|
if (StringUtils.isBlank(enterprise.getTwobitcode())){
|
msg.setCode("999");
|
msg.setMessage("两位企业编码为空,请联系管理员添加!");
|
return msg;
|
}
|
itemCode = productCategory.getBitcode() + explosive + enterprise.getTwobitcode() + randomStr;
|
productInfo.setDirectionCode(itemCode.toUpperCase());
|
|
List<ProductInfo> productInfosExist = productService.selectByProduct(productInfo);
|
if (productInfosExist != null && productInfosExist.size() != 0) {
|
msg.setCode("999");
|
msg.setMessage("新增产品信息流向码已存在,无法添加!");
|
return msg;
|
}
|
|
BigDecimal totalExplosive = new BigDecimal(productInfo.getSpecification()).
|
multiply(productInfo.getExplosiveContent());
|
|
Msg thresholdMsg = isFitThreshold(productInfo);
|
if (!thresholdMsg.getCode().equals(ErrorCode.SUCCESS.getCode())){
|
return thresholdMsg;
|
}
|
|
productInfo.setExplosiveContent(totalExplosive);
|
productInfo.setCompanyNumber(enterprise.getEnterprisenumber());
|
productInfo.setManufacturer(enterprise.getEnterprisename());
|
productInfo.setCreatedDate(new Date());
|
productInfo.setCreatedBy(getUser().getUsername());
|
|
|
boolean i = productService.save(productInfo);
|
|
if (!i) {
|
msg.setCode("999");
|
msg.setMessage("新增失败,请重新新增!");
|
return msg;
|
}
|
|
return msg;
|
}
|
|
@PostMapping("/update")
|
public Msg updateProduct( @RequestBody ProductInfo productInfo) {
|
Msg msg = new Msg(true);
|
if (productInfo == null || StringUtils.isBlank(productInfo.getDirectionCode())
|
|| productInfo.getDirectionCode().length() < FireworkDeal.DIRECTION_ITEM){
|
msg.setCode("999");
|
msg.setMessage("流向码异常,删除失败");
|
return msg;
|
}
|
ProductInfo productInfoExist = productService.selectByDirection(productInfo.getDirectionCode());
|
if (productInfoExist == null) {
|
msg.setCode("999");
|
msg.setMessage("产品信息流向码不存在,修改失败!");
|
return msg;
|
}
|
ProductInfo productInfoNew = new ProductInfo();
|
productInfoNew.setId(productInfoExist.getId());
|
productInfoNew.setPurchasePrice(productInfo.getPurchasePrice());
|
productInfoNew.setSalePrice(productInfo.getSalePrice());
|
productInfoNew.setModifiedDate(new Date());
|
productInfoNew.setModifiedBy(getUser().getUsername());
|
|
boolean i = productService.updateById(productInfoNew);
|
|
if (!i) {
|
msg.setCode("999");
|
msg.setMessage("修改失败,请重新修改!");
|
return msg;
|
}
|
return msg;
|
}
|
|
@PostMapping("/delete")
|
public Msg deleteProduct(@RequestBody ProductInfo productInfo) {
|
if (productInfo == null || StringUtils.isBlank(productInfo.getDirectionCode())
|
|| productInfo.getDirectionCode().length() < FireworkDeal.DIRECTION_ITEM){
|
return new Msg(ErrorCode.ERROR_10004,"流向码异常,删除失败");
|
}
|
|
ProductInfo productInfoExist = productService.selectByDirection(productInfo.getDirectionCode());
|
if (productInfoExist == null) {
|
return new Msg(ErrorCode.ERROR_50001,"产品信息流向码不存在,删除失败");
|
}
|
boolean flag = productService.isProductUsed(productInfoExist.getId());
|
if (flag){
|
return new Msg(ErrorCode.ERROR_999,"当前产品已经签订合同或已经入库,无法删除");
|
}
|
ProductInfo productInfoNew = new ProductInfo();
|
productInfoNew.setId(productInfoExist.getId());
|
productInfoNew.setModifiedDate(new Date());
|
productInfoNew.setModifiedBy(getUser().getUsername());
|
productInfoNew.setIsDel((byte) 1);
|
boolean i = productService.updateById(productInfoNew);
|
|
if (!i) {
|
return new Msg(ErrorCode.ERROR_40001,"删除失败,请重新删除");
|
}
|
|
return success();
|
}
|
|
@GetMapping("/get")
|
public Msg getProductByCode(@RequestParam(value = "directionCode") String directionCode) {
|
Msg msg = new Msg(true);
|
|
if (StringUtils.isBlank(directionCode)) {
|
msg.setCode("999");
|
msg.setMessage("流向码为空,无法查询相关信息!");
|
return msg;
|
}
|
|
DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(directionCode);
|
if (directionDetail == null) {
|
msg.setCode("999");
|
msg.setMessage("流向码不符合规则,请重新输入!");
|
return msg;
|
}
|
|
ProductInfo productInfo = new ProductInfo();
|
productInfo.setDirectionCode(directionDetail.getItemCode());
|
UserInfo userInfo = userService.getById(getUser().getId());
|
if (userInfo.getCompanyid() != null){
|
Enterprise enterprise = enterpriseService.getById(userInfo.getCompanyid());
|
if (!enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
|
productInfo.setCompanyNumber(enterprise.getEnterprisenumber());
|
}
|
}
|
List<ProductInfo> productInfos = productService.selectByProduct(productInfo);
|
|
if (productInfos == null || productInfos.size() == 0) {
|
msg.setCode("999");
|
msg.setMessage("未找到相应的产品信息!");
|
return msg;
|
}
|
|
if (productInfos.size() > 1) {
|
msg.setCode("999");
|
msg.setMessage("错误:存在多个对应的产品信息!");
|
return msg;
|
}
|
|
ProductVo productVo = BeanUtils.copy(productInfos.get(0), ProductVo.class);
|
productVo.setDirectionCode(directionCode);
|
productVo.setItemCode(directionDetail.getItemCode());
|
productVo.setDateCode(directionDetail.getDateCode());
|
productVo.setSerialNo(directionDetail.getSerialNo());
|
List<ProductVo> productVos = new ArrayList<>();
|
if (directionDetail.getBoxNo() != null) {
|
productVo.setBoxNo(directionDetail.getBoxNo());
|
FireworkDeal.getProductVos(directionCode, directionDetail, directionDetail, productVos, productVo);
|
} else {
|
productVos.add(productVo);
|
}
|
|
msg.setResult(productVos);
|
return msg;
|
}
|
|
@GetMapping("/gets")
|
public Msg getProductsByCodes(@RequestParam String directionCode,@RequestParam String endCode){
|
Msg msg = new Msg(true);
|
if (StringUtils.isBlank(directionCode)|| StringUtils.isBlank(endCode)) {
|
msg.setCode("999");
|
msg.setMessage("流向码为空,无法查询相关信息!");
|
return msg;
|
}
|
if (directionCode.length()!= 19 || endCode.length() != 5) {
|
msg.setCode("999");
|
msg.setMessage("流向码不符合规则,请重新输入!");
|
return msg;
|
}
|
/*DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(directionCode);
|
DirectionDetail directionDetail2 = FireworkDeal.dealDirectionCode(directionCode.substring(0,14)+endCode);*/
|
|
List<ProductVo>productVos = new ArrayList<>();
|
ProductVo productVo = productService.selectVoByDirection(directionCode);
|
try {
|
Integer first = Integer.parseInt(directionCode.substring(14,19));
|
Integer last = Integer.parseInt(endCode);
|
if (first > last){
|
Integer temp = first;
|
first = last;
|
last = temp;
|
}
|
for (int i = first; i <= last; i++){
|
ProductVo productVoCopy = BeanUtils.copy(productVo, ProductVo.class);
|
productVoCopy.setDirectionCode(directionCode.substring(0, 14) + String.format("%05d", i));
|
productVos.add(productVoCopy);
|
}
|
}catch (Exception e){
|
msg.setCode("999");
|
msg.setMessage("流向码不符合规则,请重新输入!");
|
return msg;
|
}
|
|
return success(productVos);
|
}
|
|
@GetMapping("/getSingle")
|
public Msg getSingleProductByCode(@RequestParam(value = "directionCode") String directionCode) {
|
Msg msg = new Msg(true);
|
|
if (StringUtils.isBlank(directionCode)) {
|
msg.setCode("999");
|
msg.setMessage("流向码为空,无法查询相关信息!");
|
return msg;
|
}
|
|
DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(directionCode);
|
if (directionDetail == null) {
|
msg.setCode("999");
|
msg.setMessage("流向码不符合规则,请重新输入!");
|
return msg;
|
}
|
|
ProductInfo productInfo = new ProductInfo();
|
productInfo.setDirectionCode(directionDetail.getItemCode());
|
List<ProductInfo> productInfos = productService.selectByProduct(productInfo);
|
|
if (productInfos == null || productInfos.size() == 0) {
|
msg.setCode("999");
|
msg.setMessage("未找到相应的产品信息!");
|
return msg;
|
}
|
|
if (productInfos.size() > 1) {
|
msg.setCode("999");
|
msg.setMessage("错误:存在多个对应的产品信息!");
|
return msg;
|
}
|
|
ProductVo productVo = BeanUtils.copy(productInfos.get(0), ProductVo.class);
|
productVo.setDirectionCode(directionCode);
|
productVo.setItemCode(directionDetail.getItemCode());
|
productVo.setDateCode(directionDetail.getDateCode());
|
productVo.setSerialNo(directionDetail.getSerialNo());
|
|
msg.setResult(productVo);
|
return msg;
|
}
|
|
@PostMapping("/explain")
|
public Msg getProductListByCodes(@RequestBody JSONObject object) {
|
Msg msg = new Msg(true);
|
JSONArray jsonArray = object.getJSONArray("data");
|
String userName = object.getString("userName");
|
List<ProductVo>productVos = new ArrayList<>();
|
for (int i = 0; i < jsonArray.size(); i++) {
|
// 遍历 jsonArray 数组,把每一个对象转成 json 对象
|
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
String directionCode = jsonObject.getString("directionCode");
|
DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(directionCode);
|
if (FireworkDeal.is22Characters(directionCode)){
|
ProductVo productVo = productService.selectVoByDirection(directionCode);
|
FireworkDeal.getProductVos(directionCode, directionDetail, directionDetail, productVos,productVo);
|
}else if (FireworkDeal.is19Characters(directionCode)){
|
ProductVo productVo = productService.selectVoByDirection(directionCode);
|
productVos.add(productVo);
|
}
|
}
|
UserInfo userInfo = userService.selectByUser(userName);
|
if (userInfo == null){
|
msg.setCode("999");
|
msg.setMessage("未找到用户信息!");
|
return msg;
|
}
|
|
//移除重复元素
|
List<ProductVo> productVoList = ProductVo.removeListDuplicateObject(productVos);
|
stockService.setProductEntryStatus(productVoList,userInfo);
|
msg.setResult(productVoList);
|
|
return msg;
|
}
|
|
@PostMapping("/removeDuplicate")
|
public Msg removeDuplicateListElement(@RequestBody JSONArray array) {
|
Msg msg = new Msg(true);
|
List<ProductVo>productVos = new ArrayList<>();
|
for (int i = 0; i < array.size(); i++) {
|
// 遍历 jsonArray 数组,把每一个对象转成 json 对象
|
JSONObject jsonObject = array.getJSONObject(i);
|
String directionCode = jsonObject.getString("directionCode");
|
DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(directionCode);
|
if (FireworkDeal.is22Characters(directionCode)){
|
ProductVo productVo = productService.selectVoByDirection(directionCode);
|
FireworkDeal.getProductVos(directionCode, directionDetail, directionDetail, productVos,productVo);
|
}else if (FireworkDeal.is19Characters(directionCode)){
|
ProductVo productVo = productService.selectVoByDirection(directionCode);
|
productVos.add(productVo);
|
}
|
}
|
//移除重复元素
|
List<ProductVo> productVoList = ProductVo.removeListDuplicateObject(productVos);
|
msg.setResult(productVoList);
|
|
return msg;
|
}
|
|
@GetMapping(value = "getThreshold")
|
public Msg getProductThreshold(){
|
Msg msg = new Msg(true);
|
ProductThresholdInfo productThresholdInfo = productThresholdService.getOne(new LambdaQueryWrapper<>());
|
if (productThresholdInfo == null){
|
msg.setCode(ErrorCode.ERROR_999.getCode());
|
msg.setMessage("未找到产品阈值设置");
|
return msg;
|
}
|
String levels = productThresholdInfo.getLevel();
|
List<String>list = StringUtils.toList(levels);
|
ProductThresholdVo productThresholdVo = BeanUtils.copy(productThresholdInfo, ProductThresholdVo.class);
|
productThresholdVo.setLevels(list);
|
msg.setResult(productThresholdVo);
|
return msg;
|
}
|
|
@PostMapping(value = "setThreshold")
|
public Msg setProductThreshold(@RequestBody JSONObject jsonObject){
|
Msg msg = new Msg(true);
|
ProductThresholdInfo productThresholdInfo = productThresholdService.getOne(new LambdaQueryWrapper<>());
|
String explosiveContent = jsonObject.getString("explosiveContent") == null?"1000":jsonObject.getString("explosiveContent");
|
String boxNumber = jsonObject.getString("boxNumber") == null?"999":jsonObject.getString("boxNumber");
|
String levels = jsonObject.getString("levels") == null?"":jsonObject.getString("levels");
|
productThresholdInfo.setExplosivecontent(new BigDecimal(explosiveContent));
|
productThresholdInfo.setBoxnumber(Integer.parseInt(boxNumber));
|
productThresholdInfo.setLevel(levels);
|
boolean i = productThresholdService.updateById(productThresholdInfo);
|
return msg;
|
}
|
|
@GetMapping("/categorise")
|
public Msg getProductCategories(@RequestParam("name")String name){
|
Msg msg = new Msg(true);
|
List<ProductCategory> categories = productCategoryService.selectAllOrByName(name);
|
msg.setResult(categories);
|
return msg;
|
}
|
|
@PostMapping("/addCategory")
|
public Msg addCategory(@RequestBody ProductCategory category){
|
Msg msg = new Msg(true);
|
Msg checkMsg = checkCategory(category,ADD_OPTION);
|
if(!checkMsg.getCode().equals(ErrorCode.SUCCESS.getCode())){
|
return checkMsg;
|
}
|
productCategoryService.save(category);
|
return msg;
|
}
|
|
@PostMapping("/editCategory")
|
public Msg editCategory(@RequestBody ProductCategory category){
|
Msg msg = new Msg(true);
|
Msg checkMsg = checkCategory(category,EDIT_OPTION);
|
if(!checkMsg.getCode().equals(ErrorCode.SUCCESS.getCode())){
|
return checkMsg;
|
}
|
productCategoryService.updateById(category);
|
return msg;
|
}
|
|
@PostMapping("/delCategory")
|
public Msg deleteCategory(@RequestBody ProductCategory category){
|
Msg msg = new Msg(true);
|
Msg checkMsg = checkCategory(category,DEL_OPTION);
|
if(!checkMsg.getCode().equals(ErrorCode.SUCCESS.getCode())){
|
return checkMsg;
|
}
|
productCategoryService.removeById(category.getId());
|
return msg;
|
}
|
|
@GetMapping("/majorTree")
|
public List<Tree> majorTree(){
|
List<Tree> trees = new ArrayList<>();
|
byte type = 1;
|
List<ProductCategory> categories = productCategoryService.selectCategoryByType(type);
|
for (ProductCategory category :categories) {
|
Tree tree = new Tree();
|
tree.setText(category != null ? category.getName() : null);
|
tree.setAttributes(category != null ? category.getName() : null);
|
trees.add(tree);
|
}
|
return trees;
|
}
|
|
@GetMapping("/secondaryTree")
|
public List<Tree> secondaryTree(@RequestParam("major")String major){
|
List<Tree> trees = new ArrayList<>();
|
if (StringUtils.isBlank(major)){
|
return trees;
|
}
|
List<ProductCategory> categories = productCategoryService.selectCategoryByMajorType(major);
|
for (ProductCategory category :categories) {
|
Tree tree = new Tree();
|
tree.setText(category != null ? category.getName() : null);
|
tree.setAttributes(category != null ? category.getName() : null);
|
trees.add(tree);
|
}
|
return trees;
|
}
|
|
@GetMapping("/permitLevelTree")
|
public List<Tree> permitLevelTree(@RequestParam("secondary")String secondary){
|
List<Tree> trees = new ArrayList<>();
|
if (StringUtils.isBlank(secondary)){
|
return trees;
|
}
|
ProductCategory productCategory = new ProductCategory();
|
productCategory.setType((byte)2);
|
productCategory.setName(secondary);
|
List<ProductCategory> categories = productCategoryService.selectCategoryByTypeAndName(productCategory);
|
if (categories == null ){
|
return trees;
|
}
|
for (ProductCategory category : categories){
|
Tree tree = new Tree();
|
tree.setText(category.getLevel());
|
tree.setAttributes(category.getLevel());
|
trees.add(tree);
|
}
|
return trees;
|
}
|
|
private Msg checkCategory(ProductCategory category,Byte option){
|
Msg msg = new Msg("999","");
|
if (category == null){
|
msg.setMessage("操作失败:未找到对应的类别信息");
|
return msg;
|
}
|
if (category.getName() == null){
|
msg.setMessage("类别名称不能未空");
|
return msg;
|
}
|
if (category.getType() == null){
|
msg.setMessage("类型不能未空");
|
return msg;
|
}
|
if (category.getType() == 2 && StringUtils.isBlank(category.getParentname())){
|
msg.setMessage("选择小类对应大类不能未空");
|
return msg;
|
}
|
if (option.equals(ADD_OPTION)){
|
List<ProductCategory> categoryExist = productCategoryService.selectCategoryByTypeAndName(category);
|
if (categoryExist != null && categoryExist.size()>0){
|
msg.setMessage("当前类别名称已存在");
|
return msg;
|
}
|
}else {
|
List<ProductCategory> categoryExist = productCategoryService.selectCategoryByTypeAndName(category);
|
if (categoryExist == null || categoryExist.size() == 0){
|
msg.setMessage("未找到当前类别名称");
|
return msg;
|
}
|
}
|
msg.setCode("200");
|
return msg;
|
}
|
|
private Msg isFitThreshold(ProductInfo productInfo) {
|
Msg msg = new Msg(ErrorCode.ERROR_999.getCode(),"");
|
ProductThresholdInfo productThresholdInfo = productThresholdService.getOne(new LambdaQueryWrapper<>());
|
if (productInfo.getExplosiveContent().compareTo(productThresholdInfo.getExplosivecontent()) > 0){
|
msg.setMessage("含药量最大为:"+productThresholdInfo.getExplosivecontent()+",超过限制,录入失败!");
|
return msg;
|
}
|
if (productInfo.getBoxNumber() > productThresholdInfo.getBoxnumber()){
|
msg.setMessage("箱数最大为:"+productThresholdInfo.getBoxnumber()+"超过限制,录入失败!");
|
return msg;
|
}
|
if (productThresholdInfo.getLevel().contains(productInfo.getLevel())){
|
msg.setMessage("当前产品级别为限制录入级别,录入失败!");
|
return msg;
|
}
|
msg.setCode(ErrorCode.SUCCESS.getCode());
|
return msg;
|
}
|
|
|
@PostMapping("/import/old-system")
|
public Msg importDataByExcel(MultipartFile file) {
|
productService.importDataByExcel(file, getUser());
|
return success();
|
}
|
|
|
}
|