app溯源码溯源

main
masong 2 years ago
parent c785097ed6
commit f55468283a
  1. 33
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/controller/app/product/AppProjectController.java
  2. 33
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/dal/mysql/product/ProductMapper.java
  3. 7
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/service/product/ProductService.java
  4. 59
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/service/product/ProductServiceImpl.java

@ -0,0 +1,33 @@
package com.cjy.traceability.module.traceability.controller.app.product;
import com.cjy.traceability.framework.common.pojo.CommonResult;
import com.cjy.traceability.module.traceability.service.product.ProductService;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Map;
import static com.cjy.traceability.framework.common.pojo.CommonResult.success;
@Tag(name = "溯源 App - 扫码")
@RestController
@RequestMapping("/traceability/product")
public class AppProjectController {
@Resource
private ProductService productService;
/**
* 溯源码 扫码
* @param traceabilityCode
* @return
*/
@GetMapping("/scanTheCode")
public CommonResult<Map<String, Object>> ScanTheCode(@RequestParam("traceabilityCode") String traceabilityCode) {
return success(productService.scanTheCode(traceabilityCode)) ;
}
}

@ -7,7 +7,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cjy.traceability.framework.common.pojo.PageResult;
import com.cjy.traceability.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cjy.traceability.framework.mybatis.core.mapper.BaseMapperX;
import com.cjy.traceability.framework.mybatis.core.query.QueryWrapperX;
import com.cjy.traceability.module.system.api.dict.dto.DictDataRespDTO;
import com.cjy.traceability.module.traceability.dal.dataobject.agriculturalproduct.AgriculturalProductDO;
import com.cjy.traceability.module.traceability.dal.dataobject.product.ProductDO;
import com.cjy.traceability.module.traceability.dal.dataobject.species.SpeciesDO;
import com.cjy.traceability.module.traceability.dal.dataobject.variety.VarietyDO;
import com.github.yulichang.query.MPJQueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import com.cjy.traceability.module.traceability.controller.admin.product.vo.*;
import org.apache.ibatis.annotations.Param;
@ -73,4 +80,30 @@ public interface ProductMapper extends BaseMapperX<ProductDO> {
int updateInStock(@Param("id")Integer id,@Param("inventoryProduction")BigDecimal inventoryProduction );
ProductDO selectProductById(Integer id);
/**
* 根据溯源码查询产品信息
* @param traceabilityCode
* @return
*/
default Map selectProduct(String traceabilityCode){
return selectJoinMap( new MPJLambdaWrapper<ProductDO>()
.selectAs( ProductDO:: getProcessingName, "processingName")
.selectAs(ProductDO :: getProcessingProduction,"processingProduction")
.selectAs(ProductDO :: getProcessingTime,"processingTime")
.selectAs(ProductDO :: getTraceabilityCode,"traceabilityCode")
.selectAs(ProductDO :: getAuthenticationType,"authenticationType")
.selectAs(ProductDO :: getQualityResult,"qualityResult")
.selectAs(ProductDO :: getSourceType, "sourceType")
.selectAs(ProductDO :: getCropperId,"cropperId")
.select(ProductDO :: getBatch)
.selectAs(AgriculturalProductDO :: getProductBreed,"productBreed")
.selectAs(SpeciesDO :: getSpeciesName,"speciesName")
.selectAs(VarietyDO :: getVarietyName,"varietyName")
.leftJoin(AgriculturalProductDO.class,AgriculturalProductDO :: getId,ProductDO :: getCropperId )
.leftJoin(SpeciesDO.class,SpeciesDO :: getId,AgriculturalProductDO :: getProductBreed)
.leftJoin(VarietyDO.class,VarietyDO :: getId,AgriculturalProductDO :: getProductVariety)
.eq(ProductDO :: getTraceabilityCode, traceabilityCode)
);
}
}

@ -58,4 +58,11 @@ public interface ProductService {
*/
List<Map<String,Object>> getAllTraceableProducts(Integer id);
/**
* 溯源码扫码
* @param traceabilityCode - 溯源码
* @return
*/
Map<String,Object> scanTheCode(String traceabilityCode);
}

@ -3,21 +3,26 @@ package com.cjy.traceability.module.traceability.service.product;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.cjy.traceability.module.traceability.controller.admin.product.vo.*;
import com.cjy.traceability.module.traceability.dal.dataobject.product.ProductDO;
import com.cjy.traceability.framework.common.pojo.PageResult;
import com.cjy.traceability.framework.common.util.object.BeanUtils;
import com.cjy.traceability.module.system.api.dict.DictDataApi;
import com.cjy.traceability.module.system.api.user.AdminUserApi;
import com.cjy.traceability.module.traceability.controller.admin.product.vo.ProductPageReqVO;
import com.cjy.traceability.module.traceability.controller.admin.product.vo.ProductSaveReqVO;
import com.cjy.traceability.module.traceability.dal.dataobject.product.ProductDO;
import com.cjy.traceability.module.traceability.dal.mysql.husbandry.HusbandryMapper;
import com.cjy.traceability.module.traceability.dal.mysql.husbandryrecord.HusbandryRecordMapper;
import com.cjy.traceability.module.traceability.dal.mysql.product.ProductMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.cjy.traceability.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cjy.traceability.module.traceability.enums.ErrorCodeConstants.*;
import static com.cjy.traceability.module.traceability.enums.ErrorCodeConstants.PRODUCT_NOT_EXISTS;
/**
* 溯源产品管理 Service 实现类
@ -30,6 +35,12 @@ public class ProductServiceImpl implements ProductService {
@Resource
private ProductMapper productMapper;
@Resource
private DictDataApi dictDataApi;
@Resource
private AdminUserApi adminUserApi;
private HusbandryRecordMapper husbandryRecordMapper;
private HusbandryMapper husbandryMapper;
@Override
public Integer createProduct(ProductSaveReqVO createReqVO) {
@ -72,16 +83,40 @@ public class ProductServiceImpl implements ProductService {
public PageResult<ProductDO> getProductPage(ProductPageReqVO pageReqVO) {
// 必须使用 MyBatis Plus 的分页对象
IPage<ProductDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
productMapper.selectAllData(page,pageReqVO);
productMapper.selectAllData(page, pageReqVO);
//去获取损耗数量
page.getRecords().stream().forEach(item->{
page.getRecords().stream().forEach(item -> {
item.setProductLoss(productMapper.getProductLossByProductId(item.getId()));
});
return new PageResult<>(page.getRecords(), page.getTotal());
}
@Override
public List<Map<String,Object>> getAllTraceableProducts(Integer id) {
public List<Map<String, Object>> getAllTraceableProducts(Integer id) {
return productMapper.getAllTraceableProducts(id);
}
@Override
public Map<String, Object> scanTheCode(String traceabilityCode) {
Map<String, Object> map = new HashMap<>(5);
//1.产品基本信息
Map<String, Object> productMap = productMapper.selectProduct(traceabilityCode);
productMap.put("authenticationType", dictDataApi.getDictData("authentication_type", productMap.get("authenticationType").toString()).getLabel());
productMap.put("qualityResult", dictDataApi.getDictData("quality_result", productMap.get("qualityResult").toString()).getLabel());
map.put("basicInformation", productMap);
//2. 产品农业
if("1".equals(productMap.get("sourceType"))){
List<Map<String,Object>> agriculture = husbandryRecordMapper.getHusbandryRecordListByBatch(Integer.parseInt(productMap.get("cropperId").toString()),Integer.parseInt(productMap.get("batch").toString()));
map.put("agriculture",agriculture);
}else{
}
//判断是自产还是二次加工
// 二次加工则获取原材料农业信息
//3.产品加工
//4. 产品配送
//5. 产品销售
return productMap;
}
}
Loading…
Cancel
Save