소스 검색

售后开放接口

yzc 1 년 전
부모
커밋
dd220dcad8

+ 2 - 0
hx-admin/src/main/resources/application-dev.yml

@@ -105,6 +105,8 @@ mail:
   # 调用邮箱服务url前缀
   urlPrefix:
   abroadUrlPrefix:
+tenant:
+    tenantId: jxsttest
 
 hx:
   httpUrl: http://localhost:9898/

+ 2 - 0
hx-admin/src/main/resources/application-prod.yml

@@ -102,6 +102,8 @@ mail:
   # 调用邮箱服务url前缀
   urlPrefix:
   abroadUrlPrefix:
+tenant:
+  tenantId: jxst
 
 hx:
   httpUrl: http://139.159.251.109:81/prod-api/

+ 96 - 0
hx-jxst/src/main/java/com/fjhx/jxst/controller/after/AfterSalesRecordOpenController.java

@@ -0,0 +1,96 @@
+package com.fjhx.jxst.controller.after;
+
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.file.entity.SingDto;
+import com.fjhx.file.entity.SingVo;
+import com.fjhx.file.service.FileInfoService;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.jxst.entity.after.dto.AfterSalesRecordDto;
+import com.fjhx.jxst.service.after.AfterSalesRecordService;
+import com.fjhx.mes.entity.production.dto.ProductionTaskDetailDto;
+import com.fjhx.mes.entity.production.vo.ProductionTaskDetailVo;
+import com.fjhx.mes.service.production.ProductionTaskDetailService;
+import com.fjhx.tenant.entity.dict.dto.DictTenantDataSelectDto;
+import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
+import com.fjhx.tenant.mapper.dict.DictTenantDataMapper;
+import com.ruoyi.common.annotation.TenantIgnore;
+import com.ruoyi.framework.mybatis.holder.TenantHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 售后记录对外开放 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-11-21
+ */
+@TenantIgnore
+@RestController
+@RequestMapping("/open/afterSales")
+public class AfterSalesRecordOpenController {
+
+    @Autowired
+    private AfterSalesRecordService afterSalesRecordService;
+    @Autowired
+    private ProductionTaskDetailService productionTaskDetailService;
+    @Autowired
+    private FileInfoService fileInfoService;
+    @Autowired
+    private DictTenantDataMapper dictTenantDataMapper;
+
+    @Value("${tenant.tenantId}")
+    private String tenantId;
+
+    /**
+     * 获取sn信息
+     */
+    @PostMapping("/snInfo")
+    public ProductionTaskDetailVo snInfo(@RequestBody ProductionTaskDetailDto productionTaskDetailDto) {
+        ProductionTaskDetailVo productionTaskDetailVo = productionTaskDetailService.snInfo(productionTaskDetailDto.getProductSn());
+        return productionTaskDetailVo;
+    }
+
+    /**
+     * 售后记录新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AfterSalesRecordDto afterSalesRecordDto) {
+        afterSalesRecordDto.setTenantId(tenantId);
+        afterSalesRecordService.add(afterSalesRecordDto);
+        ObsFileUtil.saveFile(afterSalesRecordDto.getFileList(), afterSalesRecordDto.getId());
+    }
+
+    /**
+     * 售后类型字典列表
+     *
+     * @return
+     */
+    @GetMapping("/afterSalesTypeList")
+    public List<DictTenantDataVo> afterSalesTypeList() {
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        DictTenantDataSelectDto dto = new DictTenantDataSelectDto();
+        dto.setDictCode("after_sales_type");
+        dto.setTenantId(tenantId);
+        List<DictTenantDataVo> afterSalesType = dictTenantDataMapper.getList(dto);
+        DynamicDataSourceContextHolder.poll();
+        return afterSalesType;
+    }
+
+    /**
+     * 获取前端直传签名
+     */
+    @PostMapping("/fileInfo/getSing")
+    public SingVo getSing(@Validated @RequestBody SingDto dto) {
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        SingVo sing = fileInfoService.getSing(dto);
+        DynamicDataSourceContextHolder.poll();
+        return sing;
+    }
+}

+ 6 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/after/dto/AfterSalesRecordDto.java

@@ -1,5 +1,6 @@
 package com.fjhx.jxst.entity.after.dto;
 
+import com.fjhx.file.entity.ObsFile;
 import com.fjhx.jxst.entity.after.po.AfterSalesRecord;
 import com.fjhx.jxst.entity.after.po.AfterSalesRecordDetail;
 import lombok.Getter;
@@ -22,4 +23,9 @@ public class AfterSalesRecordDto extends AfterSalesRecord {
      */
     private List<AfterSalesRecordDetailDto> afterSalesRecordDetailList;
 
+    /**
+     * 附件列表
+     */
+    private List<ObsFile> fileList;
+
 }

+ 20 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/after/po/AfterSalesRecord.java

@@ -50,4 +50,24 @@ public class AfterSalesRecord extends BasePo {
      */
     private Long productId;
 
+    /**
+     * 售后类型
+     */
+    private String type;
+
+    /**
+     * 联系人名称
+     */
+    private String contactName;
+
+    /**
+     * 联系方式
+     */
+    private String contactInfo;
+
+    /**
+     * 租户id
+     */
+    private String tenantId;
+
 }

+ 22 - 14
hx-jxst/src/main/java/com/fjhx/jxst/service/after/impl/AfterSalesRecordServiceImpl.java

@@ -1,22 +1,28 @@
 package com.fjhx.jxst.service.after.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.jxst.entity.after.dto.AfterSalesRecordDetailDto;
+import com.fjhx.jxst.entity.after.dto.AfterSalesRecordDto;
+import com.fjhx.jxst.entity.after.dto.AfterSalesRecordSelectDto;
 import com.fjhx.jxst.entity.after.po.AfterSalesRecord;
 import com.fjhx.jxst.entity.after.po.AfterSalesRecordDetail;
+import com.fjhx.jxst.entity.after.vo.AfterSalesRecordVo;
 import com.fjhx.jxst.mapper.after.AfterSalesRecordMapper;
 import com.fjhx.jxst.service.after.AfterSalesRecordDetailService;
 import com.fjhx.jxst.service.after.AfterSalesRecordService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.jxst.utils.CodeEnum;
 import com.fjhx.mes.entity.bom.po.BomDetail;
 import com.fjhx.mes.entity.bom.po.BomInfo;
 import com.fjhx.mes.entity.bom.vo.BomDetailVo;
+import com.fjhx.mes.entity.production.po.ProductionTaskDetail;
 import com.fjhx.mes.entity.production.vo.ProductionTaskDetailVo;
 import com.fjhx.mes.entity.work.po.WorkOrder;
 import com.fjhx.mes.entity.work.po.WorkOrderBom;
@@ -25,15 +31,9 @@ import com.fjhx.mes.service.bom.BomInfoService;
 import com.fjhx.mes.service.production.ProductionTaskDetailService;
 import com.fjhx.mes.service.work.WorkOrderBomService;
 import com.fjhx.mes.service.work.WorkOrderService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.jxst.entity.after.vo.AfterSalesRecordVo;
-import com.fjhx.jxst.entity.after.dto.AfterSalesRecordSelectDto;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.fjhx.jxst.entity.after.dto.AfterSalesRecordDto;
-import cn.hutool.core.bean.BeanUtil;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -130,13 +130,21 @@ public class AfterSalesRecordServiceImpl extends ServiceImpl<AfterSalesRecordMap
         return result;
     }
 
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     @Override
-    public void add(AfterSalesRecordDto afterSalesRecordDto) {
-        Assert.notEmpty(afterSalesRecordDto.getProductId(), "产品id不能为空");
-        Assert.notEmpty(afterSalesRecordDto.getProductSn(), "产品sn不能为空");
-        afterSalesRecordDto.setCode(CodeEnum.AFTER_SALES.getCode());
-        this.save(afterSalesRecordDto);
+    public void add(AfterSalesRecordDto dto) {
+        Assert.notEmpty(dto.getProductSn(), "产品sn不能为空");
+
+        //获取产品信息
+        ProductionTaskDetail productionTaskDetail = productionTaskDetailService.getOne(q -> q
+                .eq(ProductionTaskDetail::getProductSn, dto.getProductSn())
+        );
+        Assert.notEmpty(productionTaskDetail, "查询不到该sn信息");
+        dto.setProductId(productionTaskDetail.getProductId());
+
+        //赋值单号
+        dto.setCode(CodeEnum.AFTER_SALES.getCode());
+        this.save(dto);
     }
 
     @DSTransactional

+ 2 - 1
hx-jxst/src/main/java/com/fjhx/jxst/utils/CodeEnum.java

@@ -6,6 +6,7 @@ import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjhx.jxst.service.after.AfterSalesRecordService;
 import com.fjhx.jxst.service.sales.SalesContractService;
 import com.ruoyi.common.exception.ServiceException;
 import lombok.Getter;
@@ -19,7 +20,7 @@ public enum CodeEnum {
     // 销售合同
     SALES_CONTRACT("SC", "yyMM-", "code", 3, SalesContractService.class),
     // 销售合同
-    AFTER_SALES("SB", "yyMM-", "code", 3, SalesContractService.class);
+    AFTER_SALES("AS", "yyMM-", "code", 3, AfterSalesRecordService.class);
 
     CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {
         this.prefix = prefix;