Browse Source

Merge remote-tracking branch 'origin/master_liaozeyong'

13660505945 1 day ago
parent
commit
cccff700f7

+ 71 - 0
src/main/java/com/jsh/erp/controller/pda/PdaController.java

@@ -0,0 +1,71 @@
+package com.jsh.erp.controller.pda;
+
+import com.jsh.erp.base.AjaxResult;
+import com.jsh.erp.base.BaseController;
+import com.jsh.erp.base.TableDataInfo;
+import com.jsh.erp.datasource.dto.DepotHeadDTO;
+import com.jsh.erp.datasource.entities.DepotHead;
+import com.jsh.erp.datasource.entities.DepotItem;
+import com.jsh.erp.query.LambdaQueryWrapperX;
+import com.jsh.erp.service.DepotHeadService;
+import com.jsh.erp.service.DepotItemService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping(value = "/pda")
+@Api(tags = {"PDA接口"})
+public class PdaController extends BaseController {
+
+    @Resource
+    private DepotHeadService depotHeadService;
+
+    private DepotItemService depotItemService;
+
+    /**
+     * 采购入库
+     * @return
+     */
+    @PostMapping ("/purchaseInventory")
+    @ApiOperation(value = "采购入库")
+    public TableDataInfo purchaseInventory(@RequestBody DepotHeadDTO depotHeadDTO) {
+        startPage();
+        List<DepotHead> list = depotHeadService.list(new LambdaQueryWrapperX<DepotHead>()
+                .eq(DepotHead::getSubType, "采购订单")
+                .eqIfPresent(DepotHead::getNumber, depotHeadDTO.getNumber())
+                .betweenIfPresent(DepotHead::getCreateTime, depotHeadDTO.getBeginTime(), depotHeadDTO.getEndTime())
+                .eqIfPresent(DepotHead::getStatus, depotHeadDTO.getStatus())
+//                .eq(DepotHead::getStatus, "1")
+        );
+        return getDataTable(list);
+    }
+
+    @PostMapping("/saleOrder")
+    @ApiOperation(value = "检货任务")
+    public TableDataInfo saleOrder(@RequestBody DepotHeadDTO depotHeadDTO) {
+        startPage();
+        List<DepotHead> list = depotHeadService.list(new LambdaQueryWrapperX<DepotHead>()
+                .eq(DepotHead::getSubType, "销售订单")
+                .eqIfPresent(DepotHead::getNumber, depotHeadDTO.getNumber())
+                .betweenIfPresent(DepotHead::getCreateTime, depotHeadDTO.getBeginTime(), depotHeadDTO.getEndTime())
+                .eqIfPresent(DepotHead::getStatus, depotHeadDTO.getStatus())
+//                .eq(DepotHead::getStatus, "1")
+        );
+        return getDataTable(list);
+    }
+
+    @GetMapping("/orderDetail/{id}")
+    @ApiOperation("订单明细")
+    public TableDataInfo orderDetail(@PathVariable("id") Long id) {
+        startPage();
+        List<DepotItem> list = depotItemService.list(new LambdaQueryWrapperX<DepotItem>().eq(DepotItem::getHeaderId, id));
+        return getDataTable(list);
+    }
+
+
+
+}

+ 20 - 0
src/main/java/com/jsh/erp/datasource/dto/DepotHeadDTO.java

@@ -0,0 +1,20 @@
+package com.jsh.erp.datasource.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DepotHeadDTO {
+
+    @ApiModelProperty("开始时间")
+    private String beginTime;
+
+    @ApiModelProperty("结束时间")
+    private String endTime;
+
+    @ApiModelProperty("单据编号")
+    private String number;
+
+    @ApiModelProperty("状态")
+    private String status;
+}

+ 9 - 0
src/main/java/com/jsh/erp/datasource/entities/DepotHead.java

@@ -113,6 +113,15 @@ public class DepotHead {
     @ApiModelProperty("凭证图片")
     private String voucherPicture;
 
+    @ApiModelProperty("二维码图片地址")
+    private String qrcodeUrl;
+
+    @ApiModelProperty("商品数量")
+    private int goodsQuantity;
+
+    @ApiModelProperty("商品总类数量")
+    private int goodsTypeCount;
+
     public Long getId() {
         return id;
     }

+ 2 - 0
src/main/java/com/jsh/erp/filter/LogCostFilter.java

@@ -14,6 +14,7 @@ import java.io.IOException;
 @WebFilter(filterName = "LogCostFilter", urlPatterns = {"/*"},
         initParams = {@WebInitParam(name = "filterPath",
                       value = "/user/login#" +
+                              "user/pdaLogin#" +
                               "/user/weixinLogin#" +
                               "/user/weixinBind#" +
                               "/user/registerUser#" +
@@ -54,6 +55,7 @@ public class LogCostFilter implements Filter {
             return;
         }
         if (requestUrl != null && (requestUrl.contains("/doc.html") ||
+            requestUrl.contains("/user/pdaLogin") ||
             requestUrl.contains("/user/login") || requestUrl.contains("/user/register") || requestUrl.contains("/user/randomImage"))) {
             chain.doFilter(request, response);
             return;

+ 32 - 0
src/main/java/com/jsh/erp/service/impl/DepotHeadServiceImpl.java

@@ -2,6 +2,7 @@ package com.jsh.erp.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jsh.erp.constants.BusinessConstants;
 import com.jsh.erp.constants.ExceptionConstants;
@@ -13,6 +14,7 @@ import com.jsh.erp.datasource.vo.*;
 import com.jsh.erp.exception.BusinessRunTimeException;
 import com.jsh.erp.exception.JshException;
 import com.jsh.erp.service.*;
+import com.jsh.erp.util.QRCodeGenerator;
 import com.jsh.erp.utils.ExcelUtils;
 import com.jsh.erp.utils.PageUtils;
 import com.jsh.erp.utils.StringUtil;
@@ -78,6 +80,8 @@ public class DepotHeadServiceImpl extends ServiceImpl<DepotHeadMapper, DepotHead
     DepotItemMapperEx depotItemMapperEx;
     @Resource
     private LogService logService;
+    @Resource
+    private QRCodeGenerator qrCodeGenerator;
 
     @Override
     public DepotHead getDepotHead(long id)throws Exception {
@@ -1115,6 +1119,20 @@ public class DepotHeadServiceImpl extends ServiceImpl<DepotHeadMapper, DepotHead
                         String.format(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_MSG, 4));
             }
         }
+        //生成订单二维码
+        String qrCodeUrl = qrCodeGenerator.generateQRCodeImage(depotHead.getNumber());
+        depotHead.setQrcodeUrl(qrCodeUrl);
+        //
+        JSONArray rowArr = JSONArray.parseArray(rows);
+        //商品数量
+        int operNumber = 0;
+        for (int i = 0; i < rowArr.size(); i++) {
+            JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i));
+            operNumber = operNumber + rowObj.getInteger("operNumber");
+        }
+        depotHead.setGoodsQuantity(operNumber);
+        //商品总类
+        depotHead.setGoodsTypeCount(rowArr.size());
         //添加主表
         depotHeadMapper.insertSelective(depotHead);
         /**入库和出库处理预付款信息*/
@@ -1216,6 +1234,20 @@ public class DepotHeadServiceImpl extends ServiceImpl<DepotHeadMapper, DepotHead
                         String.format(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_MSG, 4));
             }
         }
+        //生成订单二维码
+        String qrCodeUrl = qrCodeGenerator.generateQRCodeImage(depotHead.getNumber());
+        depotHead.setQrcodeUrl(qrCodeUrl);
+        //
+        JSONArray rowArr = JSONArray.parseArray(rows);
+        //商品数量
+        int operNumber = 0;
+        for (int i = 0; i < rowArr.size(); i++) {
+            JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i));
+            operNumber = operNumber + rowObj.getInteger("operNumber");
+        }
+        depotHead.setGoodsQuantity(operNumber);
+        //商品总类
+        depotHead.setGoodsTypeCount(rowArr.size());
         //修改单据主表
         depotHeadMapper.updateByPrimaryKeySelective(depotHead);
         //如果存在多账户结算需要将原账户的id置空

+ 14 - 5
src/main/java/com/jsh/erp/util/QRCodeGenerator.java

@@ -2,12 +2,14 @@ package com.jsh.erp.util;
 
 import com.google.zxing.BarcodeFormat;
 import com.google.zxing.EncodeHintType;
-import com.google.zxing.WriterException;
 import com.google.zxing.client.j2se.MatrixToImageWriter;
 import com.google.zxing.common.BitMatrix;
 import com.google.zxing.qrcode.QRCodeWriter;
-import com.jsh.erp.base.AjaxResult;
+import com.jsh.erp.utils.OssUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
+import java.io.File;
 import java.nio.file.FileSystems;
 import java.nio.file.Path;
 import java.util.HashMap;
@@ -16,8 +18,14 @@ import java.util.Map;
 /**
  * 二维码生成器
  */
+@Component
 public class QRCodeGenerator {
 
+    @Value(value="${file.path}")
+    private String filePath;
+
+    OssUtils ossUtils;
+
     /**
      * 生成二维码图片
      * @param text 二维码内容
@@ -43,9 +51,10 @@ public class QRCodeGenerator {
     public String generateQRCodeImage(String text) throws Exception {
         int width = 300;
         int height = 300;
-        String filePath = "filePath";
-        generateQRCodeImage(text, width, height, filePath);
-        return filePath;
+        String filePathContent = filePath + "/"+text+".png";
+        generateQRCodeImage(text, width, height, filePathContent);
+        File file = new File(filePathContent);
+        return ossUtils.uploadFile(file);
     }
 
 }

+ 31 - 0
src/main/java/com/jsh/erp/utils/OssUtils.java

@@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -51,6 +52,36 @@ public class OssUtils {
         }
     }
 
+    /**
+     * 上传File类型文件
+     * @param file
+     * @return
+     */
+    public String uploadFile(File file) {
+
+        // 创建OSSClient实例。
+        OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secretAccessKey);
+        //设置文件名
+        String fileName = new DateTime().toString("yyyy/MM/dd")
+                + UUID.randomUUID().toString().replace("-", "")
+                + file.getName();
+
+        try {
+            // 创建PutObject请求。
+            ossClient.putObject(bucketName, fileName, file);
+
+            String url = "https://" + bucketName + "." + endPoint + "/" + fileName;
+            return url;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        } finally {
+            if (ossClient != null) {
+                ossClient.shutdown();
+            }
+        }
+    }
+
     public List<String> uploadArrayFile(MultipartFile[] files) {
         // 创建OSSClient实例。
         OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secretAccessKey);

+ 27 - 0
src/main/resources/mapper_xml/DepotHeadMapper.xml

@@ -259,6 +259,15 @@
       <if test="voucherPicture != null">
         voucher_picture,
       </if>
+      <if test="qrcodeUrl != null">
+        qrcode_url,
+      </if>
+      <if test="goodsQuantity != null">
+        goods_quantity,
+      </if>
+      <if test="goodsTypeCount != null">
+        goods_type_count,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -360,6 +369,15 @@
       <if test="voucherPicture != null">
         #{voucherPicture,jdbcType=VARCHAR},
       </if>
+      <if test="qrcodeUrl != null">
+        #{qrcodeUrl,jdbcType=VARCHAR},
+      </if>
+      <if test="goodsQuantity != null">
+        #{goodsQuantity,jdbcType=INT},
+      </if>
+      <if test="goodsTypeCount != null">
+        #{goodsTypeCount,jdbcType=INT},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.jsh.erp.datasource.entities.DepotHeadExample" resultType="java.lang.Long">
@@ -609,6 +627,15 @@
       <if test="voucherPicture != null">
         voucher_picture = #{voucherPicture,jdbcType=VARCHAR},
       </if>
+      <if test="qrcodeUrl != null">
+        qrcode_url = #{qrcodeUrl,jdbcType=VARCHAR},
+      </if>
+      <if test="goodsQuantity != null">
+        goods_quantity = #{goodsQuantity,jdbcType=INT},
+      </if>
+      <if test="goodsTypeCount != null">
+        goods_type_count = #{goodsTypeCount,jdbcType=INT},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>