2
0

10 Commits 1f10f29de4 ... 4fdab7ede6

Autor SHA1 Nachricht Datum
  ms-blue 4fdab7ede6 Merge remote-tracking branch 'origin/master' into master_liushuang vor 1 Monat
  13660505945 7417437c21 Merge remote-tracking branch 'origin/master_liaozeyong' vor 1 Monat
  廖泽勇 e03131db16 盘点任务筛选bug调整 vor 1 Monat
  廖泽勇 8fb3439c8e Merge branch 'master_huangjunjie' of http://121.40.253.172:3000/pengyue/jsh_erp into master_liaozeyong vor 1 Monat
  廖泽勇 3aed9da6e9 盘点详情-任务明细bug调整 vor 1 Monat
  huang dde4cc03eb Merge branch 'master_liaozeyong' of http://121.40.253.172:3000/pengyue/jsh_erp into master_huangjunjie vor 1 Monat
  huang 2e3a4db5c2 修改库存,pda库存查询 vor 1 Monat
  廖泽勇 b96451a696 版本更新添加 vor 1 Monat
  13660505945 849e44df28 Merge remote-tracking branch 'origin/xq' vor 1 Monat
  13660505945 5bdb86ca39 Merge remote-tracking branch 'origin/xq' vor 1 Monat
29 geänderte Dateien mit 345 neuen und 40 gelöschten Zeilen
  1. 25 0
      docs/new_sql.sql
  2. 73 6
      src/main/java/com/jsh/erp/controller/pda/PdaController.java
  3. 14 1
      src/main/java/com/jsh/erp/controller/stocktaking/StocktakingController.java
  4. 5 1
      src/main/java/com/jsh/erp/datasource/dto/TaskStocktakingQueryDTO.java
  5. 29 0
      src/main/java/com/jsh/erp/datasource/entities/ApkVersion.java
  6. 4 4
      src/main/java/com/jsh/erp/datasource/entities/InventoryLog.java
  7. 2 0
      src/main/java/com/jsh/erp/datasource/entities/MaterialExtend.java
  8. 5 5
      src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java
  9. 9 0
      src/main/java/com/jsh/erp/datasource/mappers/ApkVersionMapper.java
  10. 2 0
      src/main/java/com/jsh/erp/datasource/mappers/MaterialExtendMapper.java
  11. 25 0
      src/main/java/com/jsh/erp/datasource/pda/dto/PDAInventoryDTO.java
  12. 2 0
      src/main/java/com/jsh/erp/datasource/pda/vo/PDATaskStocktakingItemVO.java
  13. 1 1
      src/main/java/com/jsh/erp/datasource/pda/vo/PDATaskStocktakingVO.java
  14. 30 0
      src/main/java/com/jsh/erp/datasource/pda/vo/PDATypeTree.java
  15. 6 0
      src/main/java/com/jsh/erp/datasource/vo/TaskStocktakingItemVO.java
  16. 1 1
      src/main/java/com/jsh/erp/filter/LogCostFilter.java
  17. 8 0
      src/main/java/com/jsh/erp/service/ApkVersionService.java
  18. 1 1
      src/main/java/com/jsh/erp/service/MaterialExtendService.java
  19. 9 5
      src/main/java/com/jsh/erp/service/MaterialService.java
  20. 17 0
      src/main/java/com/jsh/erp/service/impl/ApkVersionServiceImpl.java
  21. 3 2
      src/main/java/com/jsh/erp/service/impl/DepotItemServiceImpl.java
  22. 5 5
      src/main/java/com/jsh/erp/service/impl/MaterialExtendServiceImpl.java
  23. 8 2
      src/main/java/com/jsh/erp/service/impl/MaterialServiceImpl.java
  24. 31 0
      src/main/java/com/jsh/erp/utils/FileUtils.java
  25. 1 1
      src/main/resources/mapper_xml/DepotHeadMapper.xml
  26. 4 0
      src/main/resources/mapper_xml/MaterialExtendMapper.xml
  27. 19 1
      src/main/resources/mapper_xml/MaterialMapperEx.xml
  28. 2 0
      src/main/resources/mapper_xml/TaskStocktakingItemMapper.xml
  29. 4 4
      src/main/resources/mapper_xml/TaskStocktakingMapper.xml

+ 25 - 0
docs/new_sql.sql

@@ -87,3 +87,28 @@ CREATE TABLE `task_stocktaking_item` (
     `status` int DEFAULT '1' COMMENT '盘点状态(1.未盘,2.盘盈,3.盘亏 4.无差异)',
     PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='盘点任务关联商品表';
+
+-- 库存修改日志表
+DROP TABLE IF EXISTS `jsh_inventory_log`;
+CREATE TABLE `jsh_inventory_log` (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '商品修改' COMMENT '操作类型',
+  `item_id` bigint DEFAULT NULL COMMENT '单据、盘点子表id',
+  `material_id` bigint DEFAULT NULL COMMENT '商品id',
+  `material_extend_id` bigint DEFAULT NULL COMMENT '商品子表id',
+  `original_stock` int DEFAULT NULL COMMENT '原始库存',
+  `current_stock` int DEFAULT NULL COMMENT '当前库存',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `update_user` bigint DEFAULT NULL COMMENT '更新用户',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='库存修改日志表';
+
+CREATE TABLE `apk_version` (
+    `id` bigint NOT NULL COMMENT '主键ID',
+    `url` varchar(255) DEFAULT NULL COMMENT '下载地址',
+    `version` varchar(255) DEFAULT NULL COMMENT '版本号',
+    `name` varchar(255) DEFAULT NULL COMMENT '名称',
+    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+    `delete_flag` tinyint DEFAULT NULL COMMENT '是否删除',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

+ 73 - 6
src/main/java/com/jsh/erp/controller/pda/PdaController.java

@@ -13,6 +13,7 @@ import com.jsh.erp.datasource.entities.MaterialVo4Unit;
 import com.jsh.erp.datasource.entities.Supplier;
 import com.jsh.erp.datasource.entities.*;
 import com.jsh.erp.datasource.pda.dto.PDADepotHeadDTO;
+import com.jsh.erp.datasource.pda.dto.PDAInventoryDTO;
 import com.jsh.erp.datasource.pda.dto.PDATaskStocktakingDTO;
 import com.jsh.erp.datasource.pda.dto.PDATaskStocktakingItemDTO;
 import com.jsh.erp.datasource.pda.vo.PDADepotHeadVO;
@@ -24,13 +25,21 @@ import com.jsh.erp.datasource.vo.TaskStocktakingVO;
 import com.jsh.erp.datasource.vo.TreeNode;
 import com.jsh.erp.query.LambdaQueryWrapperX;
 import com.jsh.erp.service.*;
+import com.jsh.erp.utils.FileUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
 import java.math.BigDecimal;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Date;
 import java.util.List;
 
@@ -66,6 +75,9 @@ public class PdaController extends BaseController {
     @Resource
     private MaterialExtendService materialExtendService;
 
+    @Resource
+    private ApkVersionService apkVersionService;
+
     /**
      * 采购入库
      * @return
@@ -176,7 +188,6 @@ public class PdaController extends BaseController {
     @ApiOperation("开始任务")
     @GetMapping("/startTask/{id}")
     public AjaxResult startTask(@PathVariable("id") Long id){
-
         taskStocktakingService.update(new UpdateWrapper<TaskStocktaking>()
                 .set("task_status", 2)
                 .eq("id", id));
@@ -232,7 +243,6 @@ public class PdaController extends BaseController {
         return AjaxResult.success();
     }
 
-
     @ApiOperation("负责人下拉列表")
     @GetMapping("/creatorSpinnerList/{taskId}")
     public AjaxResult creatorSpinnerList(@PathVariable("taskId") Long taskId) {
@@ -267,12 +277,69 @@ public class PdaController extends BaseController {
         return AjaxResult.success();
     }
 
-    @ApiOperation("商品存货查询")
-    @GetMapping("/inventoryInquiry/{type}/{keyword}")
-    public TableDataInfo inventoryInquiry(@PathVariable("type") String type,@PathVariable("keyword") String keyword){
+    @PostMapping("/inventoryInquiry")
+    @ApiOperation("存货查询-商品存货查询")
+    public TableDataInfo inventoryInquiry(@RequestBody PDAInventoryDTO pdaInventoryDTO){
         startPage();
-        List<PDADepotItemVO> list = materialService.inventoryInquiry(type , keyword);
+        List<PDADepotItemVO> list = materialService.inventoryInquiry(pdaInventoryDTO);
         return getDataTable(list);
     }
 
+    @ApiOperation("存货查询-库位树查询")
+    @GetMapping("/inventoryPositionTree")
+    public AjaxResult inventoryPositionTree() throws Exception {
+        return AjaxResult.success(materialService.selectPosition());
+    }
+
+    @ApiOperation("存货查询-类型树查询")
+    @GetMapping("/inventoryTypeTree")
+    public AjaxResult inventoryTypeTree() throws Exception {
+        return AjaxResult.success(materialCategoryService.getMaterialCategoryTree(null));
+    }
+
+
+    @ApiOperation("下载安装包")
+    @PostMapping("/downloadApk")
+    public void downloadApk(@RequestBody ApkVersion apkVersion, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // 将文件路径转换为 Path 对象
+        Path path = Paths.get(apkVersion.getUrl()).toAbsolutePath().normalize();
+        File file = path.toFile();
+        String fileUrl = apkVersion.getUrl();
+        // 检查文件是否存在
+        if (!file.exists() || !file.isFile()) {
+            return;
+        }
+        InputStream inputStream = null;
+        OutputStream outputStream = null;
+        inputStream = new BufferedInputStream(new FileInputStream(fileUrl));
+        outputStream = response.getOutputStream();
+        byte[] buf = new byte[1024];
+        int len;
+        while ((len = inputStream.read(buf)) > 0) {
+            outputStream.write(buf, 0, len);
+        }
+        response.flushBuffer();
+        if (inputStream != null) {
+            try {
+                inputStream.close();
+            } catch (IOException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+        if (outputStream != null) {
+            try {
+                outputStream.close();
+            } catch (IOException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+    }
+
+    @ApiOperation("查询版本信息")
+    @GetMapping("/selectVersion")
+    public AjaxResult selectVersion() {
+        ApkVersion apkVersion = apkVersionService.getOne(new LambdaQueryWrapperX<ApkVersion>().orderByDesc(ApkVersion::getId).last("limit 1"));
+        return AjaxResult.success(apkVersion);
+    }
+
 }

+ 14 - 1
src/main/java/com/jsh/erp/controller/stocktaking/StocktakingController.java

@@ -9,11 +9,14 @@ import com.jsh.erp.datasource.dto.TaskStocktakingDTO;
 import com.jsh.erp.datasource.dto.TaskStocktakingItemDTO;
 import com.jsh.erp.datasource.dto.TaskStocktakingItemQueryDTO;
 import com.jsh.erp.datasource.dto.TaskStocktakingQueryDTO;
+import com.jsh.erp.datasource.entities.MaterialExtend;
 import com.jsh.erp.datasource.entities.TaskStocktaking;
 import com.jsh.erp.datasource.entities.TaskStocktakingItem;
 import com.jsh.erp.datasource.entities.User;
 import com.jsh.erp.datasource.vo.SpinnerVO;
 import com.jsh.erp.datasource.vo.TaskStocktakingVO;
+import com.jsh.erp.query.LambdaQueryWrapperX;
+import com.jsh.erp.service.MaterialExtendService;
 import com.jsh.erp.service.TaskStocktakingItemService;
 import com.jsh.erp.service.TaskStocktakingService;
 import com.jsh.erp.service.UserService;
@@ -41,6 +44,9 @@ public class StocktakingController extends BaseController {
     @Resource
     private TaskStocktakingItemService taskStocktakingItemService;
 
+    @Resource
+    private MaterialExtendService materialExtendService;
+
     @ApiOperation("盘点任务列表")
     @PostMapping("/list")
     public TableDataInfo list(@RequestBody TaskStocktakingQueryDTO taskStocktakingQueryDTO){
@@ -170,9 +176,16 @@ public class StocktakingController extends BaseController {
 
     @ApiOperation("任务更新库存")
     @GetMapping("/taskUpdateStock/{ids}")
-    public AjaxResult updateStock(@PathVariable("ids") Long[] ids) {
+    public AjaxResult updateStock(@PathVariable("ids") Long[] ids) throws Exception {
         for (Long id : ids) {
             taskStocktakingService.update(new UpdateWrapper<TaskStocktaking>().set("task_status", 5).eq("id", id));
+            List<TaskStocktakingItem> list = taskStocktakingItemService.list(new LambdaQueryWrapperX<TaskStocktakingItem>().eq(TaskStocktakingItem::getTaskStocktakingId,id));
+            for (TaskStocktakingItem taskStocktakingItem : list) {
+                MaterialExtend materialExtend = materialExtendService.getMaterialExtend(taskStocktakingItem.getMaterialItemId());
+                materialExtend.setInventory(taskStocktakingItem.getNewInventory());
+                materialExtend.setPosition(taskStocktakingItem.getNewPosition());
+                materialExtendService.updateInventory("盘点",taskStocktakingItem.getId(),materialExtend);
+            }
         }
         return AjaxResult.success();
     }

+ 5 - 1
src/main/java/com/jsh/erp/datasource/dto/TaskStocktakingQueryDTO.java

@@ -1,7 +1,11 @@
 package com.jsh.erp.datasource.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
 
+@Data
+@Accessors(chain = true)
 public class TaskStocktakingQueryDTO {
 
     @ApiModelProperty("任务状态 1.未开始,2.进行中,3.已完成,4.已取消")
@@ -14,7 +18,7 @@ public class TaskStocktakingQueryDTO {
     private Long depotId;
 
     @ApiModelProperty("创建人")
-    private String createName;
+    private Long createBy;
 
 
 }

+ 29 - 0
src/main/java/com/jsh/erp/datasource/entities/ApkVersion.java

@@ -0,0 +1,29 @@
+package com.jsh.erp.datasource.entities;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ApkVersion {
+
+    @ApiModelProperty(value = "主键id")
+    private Long id;
+
+    @ApiModelProperty(value = "版本号")
+    private String version;
+
+    @ApiModelProperty(value = "下载地址")
+    private String url;
+
+    @ApiModelProperty(value = "版本名称")
+    private String name;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "是否删除")
+    private boolean deleteFlag;
+
+}

+ 4 - 4
src/main/java/com/jsh/erp/datasource/entities/InventoryLog.java

@@ -16,11 +16,11 @@ public class InventoryLog {
     @ApiModelProperty("主键id")
     private Long id;
 
-    @ApiModelProperty("单据主表id")
-    private Long depotHeadId;
+    @ApiModelProperty("操作类型")
+    private String type;
 
-    @ApiModelProperty("单据子表id")
-    private Long depotItemId;
+    @ApiModelProperty("单据、盘点子表id")
+    private Long itemId;
 
     @ApiModelProperty("商品id")
     private Long materialId;

+ 2 - 0
src/main/java/com/jsh/erp/datasource/entities/MaterialExtend.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -13,6 +14,7 @@ import java.util.Date;
  */
 @Data
 @TableName("jsh_material_extend")
+@Accessors
 public class MaterialExtend {
 
     @ApiModelProperty("主键id")

+ 5 - 5
src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java

@@ -102,19 +102,19 @@ public class MaterialVo4Unit extends Material{
     private String depotName;
 
     @ApiModelProperty("实际出入库数量")
-    private BigDecimal actualQuantityInStorage;
+    private String actualQuantityInStorage = "";
 
     @ApiModelProperty("出入库差异")
-    private BigDecimal warehousingVariance;
+    private String warehousingVariance = "";
 
     @ApiModelProperty("出入库差异原因")
-    private String reasonOfDifference;
+    private String reasonOfDifference = "";
 
     @ApiModelProperty("出入库用户")
-    private Long warehousingUser;
+    private String warehousingUser = "";
 
     @ApiModelProperty("出入库时间")
-    private Date warehousingTime;
+    private String warehousingTime = "";
 
     @ApiModelProperty("多单位集合")
     private List<UnitListVo> unitList;

+ 9 - 0
src/main/java/com/jsh/erp/datasource/mappers/ApkVersionMapper.java

@@ -0,0 +1,9 @@
+package com.jsh.erp.datasource.mappers;
+
+
+import com.jsh.erp.datasource.entities.ApkVersion;
+
+public interface ApkVersionMapper extends BaseMapperX<ApkVersion> {
+
+
+}

+ 2 - 0
src/main/java/com/jsh/erp/datasource/mappers/MaterialExtendMapper.java

@@ -52,4 +52,6 @@ public interface MaterialExtendMapper extends BaseMapperX<MaterialExtend>{
     BigDecimal getInventorySumByDepotAndMid(@Param("depotList") List<Long> depotList,
                                             @Param("mid") long mid);
 
+    List<String> selectPosition();
+
 }

+ 25 - 0
src/main/java/com/jsh/erp/datasource/pda/dto/PDAInventoryDTO.java

@@ -0,0 +1,25 @@
+package com.jsh.erp.datasource.pda.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 存货查询接口
+ */
+@Data
+public class PDAInventoryDTO {
+
+    @ApiModelProperty("查询类型")
+    private String type;
+
+    @ApiModelProperty("商品种类ID")
+    private Long categoryId;
+
+    @ApiModelProperty("库位")
+    private String position;
+
+    @ApiModelProperty("关键字")
+    private String keyword;
+
+}

+ 2 - 0
src/main/java/com/jsh/erp/datasource/pda/vo/PDATaskStocktakingItemVO.java

@@ -1,5 +1,6 @@
 package com.jsh.erp.datasource.pda.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
@@ -35,6 +36,7 @@ public class PDATaskStocktakingItemVO {
     private String createName;
 
     @ApiModelProperty("盘点时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date operTime;
 
     @ApiModelProperty("库存数")

+ 1 - 1
src/main/java/com/jsh/erp/datasource/pda/vo/PDATaskStocktakingVO.java

@@ -22,7 +22,7 @@ public class PDATaskStocktakingVO {
     private String depotName;
 
     @ApiModelProperty("创建人名称")
-    private String createByName;
+    private String createName;
 
     @ApiModelProperty("负责人名称")
     private String creatorName;

+ 30 - 0
src/main/java/com/jsh/erp/datasource/pda/vo/PDATypeTree.java

@@ -0,0 +1,30 @@
+package com.jsh.erp.datasource.pda.vo;
+
+import com.jsh.erp.datasource.vo.TreeNode;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * PDA库位类型树
+ */
+@Data
+public class PDATypeTree {
+
+    private Long id;
+
+    private Long key;
+
+    private String value;
+
+    /**
+     * title显示的文本
+     * */
+    private String label;
+
+    /**
+     * children 子节点
+     * */
+    private List<PDATypeTree> children;
+
+}

+ 6 - 0
src/main/java/com/jsh/erp/datasource/vo/TaskStocktakingItemVO.java

@@ -30,6 +30,12 @@ public class TaskStocktakingItemVO {
     @ApiModelProperty("商品单位")
     private String commodityUnit;
 
+    @ApiModelProperty("库位")
+    private String position;
+
+    @ApiModelProperty("批次号")
+    private String batchNumber;
+
     @ApiModelProperty("生产日期")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date productionDate;

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

@@ -55,7 +55,7 @@ public class LogCostFilter implements Filter {
             return;
         }
         if (requestUrl != null && (requestUrl.contains("/doc.html") ||
-            requestUrl.contains("/user/pdaLogin") ||
+            requestUrl.contains("/user/pdaLogin") || requestUrl.contains("/pda/downloadApk") || requestUrl.contains("/pda/selectVersion") ||
             requestUrl.contains("/user/login") || requestUrl.contains("/user/register") || requestUrl.contains("/user/randomImage")
             ||requestUrl.contains("/open-api"))) {
             chain.doFilter(request, response);

+ 8 - 0
src/main/java/com/jsh/erp/service/ApkVersionService.java

@@ -0,0 +1,8 @@
+package com.jsh.erp.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jsh.erp.datasource.entities.ApkVersion;
+
+public interface ApkVersionService extends IService<ApkVersion> {
+
+}

+ 1 - 1
src/main/java/com/jsh/erp/service/MaterialExtendService.java

@@ -58,5 +58,5 @@ public interface MaterialExtendService extends IService<MaterialExtend> {
     /**
      * 修改子商品库存
      */
-    void updateInventory(Long depotHeadId, Long depotItemId,MaterialExtend materialExtend) throws Exception;
+    void updateInventory(String type, Long id,MaterialExtend materialExtend) throws Exception;
 }

+ 9 - 5
src/main/java/com/jsh/erp/service/MaterialService.java

@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jsh.erp.datasource.entities.*;
+import com.jsh.erp.datasource.pda.dto.PDAInventoryDTO;
 import com.jsh.erp.datasource.pda.vo.PDADepotItemVO;
 import com.jsh.erp.datasource.vo.MaterialCurrentStock4SystemSku;
+import com.jsh.erp.datasource.pda.vo.PDATypeTree;
 import com.jsh.erp.datasource.vo.MaterialWarnListVo;
 import com.jsh.erp.utils.BaseResponseInfo;
 import org.springframework.transaction.annotation.Transactional;
@@ -175,8 +177,6 @@ public interface MaterialService extends IService<Material> {
 
     List<MaterialVo4Unit> getMaterialBySystemSku(List<String> systemSkuList);
 
-    List<MaterialCurrentStock4SystemSku> getMaterialCurrentPriceByIdList(List<Long> idList);
-
     /**
      * 获取商品提醒
      * @return
@@ -188,9 +188,13 @@ public interface MaterialService extends IService<Material> {
 
     /**
      * PDA库存查询
-     * @param type 库存类别 有/无/全部
-     * @param keyword 关键字
+     * pdaInventoryDTO
      * @return
      */
-    List<PDADepotItemVO> inventoryInquiry(String type,String keyword);
+    List<PDADepotItemVO> inventoryInquiry(PDAInventoryDTO pdaInventoryDTO);
+
+    /**
+     * 查询库位树
+     */
+    List<PDATypeTree> selectPosition();
 }

+ 17 - 0
src/main/java/com/jsh/erp/service/impl/ApkVersionServiceImpl.java

@@ -0,0 +1,17 @@
+package com.jsh.erp.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jsh.erp.datasource.entities.ApkVersion;
+import com.jsh.erp.datasource.mappers.ApkVersionMapper;
+import com.jsh.erp.service.ApkVersionService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class ApkVersionServiceImpl extends ServiceImpl<ApkVersionMapper, ApkVersion> implements ApkVersionService {
+
+}

+ 3 - 2
src/main/java/com/jsh/erp/service/impl/DepotItemServiceImpl.java

@@ -768,11 +768,11 @@ public class DepotItemServiceImpl extends ServiceImpl<DepotItemMapper, DepotItem
                 if(BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())){
                     //表单入库,修改商品库存
                     materialExtend.setInventory(materialExtend.getInventory().add(depotItem.getBasicNumber()));
-                    materialExtendService.updateInventory(depotHead.getId(),depotItem.getId(),materialExtend);
+                    materialExtendService.updateInventory("单据",depotItem.getId(),materialExtend);
                 }else if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())){
                     //表单入库,修改商品库存
                     materialExtend.setInventory(materialExtend.getInventory().subtract(depotItem.getBasicNumber()));
-                    materialExtendService.updateInventory(depotHead.getId(),depotItem.getId(),materialExtend);
+                    materialExtendService.updateInventory("单据",depotItem.getId(),materialExtend);
                 }
                 this.insertDepotItemWithObj(depotItem);
                 //更新当前库存
@@ -1646,4 +1646,5 @@ public class DepotItemServiceImpl extends ServiceImpl<DepotItemMapper, DepotItem
         }
         return materialOther;
     }
+
 }

+ 5 - 5
src/main/java/com/jsh/erp/service/impl/MaterialExtendServiceImpl.java

@@ -306,7 +306,7 @@ public class MaterialExtendServiceImpl extends ServiceImpl<MaterialExtendMapper,
         int res =0;
         try{
             //修改库存
-            updateInventory(null,null,materialExtend);
+            updateInventory("商品修改",null,materialExtend);
             res= materialExtendMapper.updateByPrimaryKeySelective(materialExtend);
         }catch(Exception e){
             JshException.writeFail(logger, e);
@@ -495,7 +495,7 @@ public class MaterialExtendServiceImpl extends ServiceImpl<MaterialExtendMapper,
      * 修改子商品库存
      */
     @Override
-    public synchronized void updateInventory(Long depotHeadId, Long depotItemId, MaterialExtend materialExtend) throws Exception {
+    public synchronized void updateInventory(String type, Long id, MaterialExtend materialExtend) throws Exception {
         if (materialExtend.getInventory() != null){
             User user = userService.getCurrentUser();
             InventoryLog log = new InventoryLog();
@@ -506,10 +506,10 @@ public class MaterialExtendServiceImpl extends ServiceImpl<MaterialExtendMapper,
             log.setOriginalStock(materialExtendMapper.selectByPrimaryKey(materialExtend.getId()).getInventory().intValue());
             Integer i = materialExtend.getInventory().intValue();
             log.setCurrentStock(i);
-            log.setDepotHeadId(depotHeadId);
-            log.setDepotItemId(depotItemId);
+            log.setItemId(id);
+            log.setType(type);
             inventoryLogService.save(log);
-            update(new UpdateWrapper<MaterialExtend>().set("inventory",materialExtend.getInventory()).eq("id",materialExtend.getId()));;
+            update(new UpdateWrapper<MaterialExtend>().set("inventory",materialExtend.getInventory()).set("position",materialExtend.getPosition()).eq("id",materialExtend.getId()));;
         }
     }
     /**

+ 8 - 2
src/main/java/com/jsh/erp/service/impl/MaterialServiceImpl.java

@@ -9,13 +9,17 @@ import com.jsh.erp.constants.BusinessConstants;
 import com.jsh.erp.constants.ExceptionConstants;
 import com.jsh.erp.datasource.entities.*;
 import com.jsh.erp.datasource.mappers.*;
+import com.jsh.erp.datasource.pda.dto.PDAInventoryDTO;
 import com.jsh.erp.datasource.pda.vo.PDADepotItemVO;
 import com.jsh.erp.datasource.vo.MaterialCurrentStock4SystemSku;
+import com.jsh.erp.datasource.pda.vo.PDATypeTree;
 import com.jsh.erp.datasource.vo.MaterialVoSearch;
 import com.jsh.erp.datasource.vo.MaterialWarnListVo;
+import com.jsh.erp.datasource.vo.TreeNode;
 import com.jsh.erp.exception.BusinessRunTimeException;
 import com.jsh.erp.exception.JshException;
 import com.jsh.erp.query.LambdaQueryWrapperX;
+import com.jsh.erp.query.QueryWrapperX;
 import com.jsh.erp.service.*;
 import com.jsh.erp.utils.*;
 import jxl.Sheet;
@@ -211,11 +215,14 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i
                             //设置初始库
                             insertInitialStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number), lowSafeStock, highSafeStock);
                             //设置当前库
-                            insertCurrentStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number));
+                            //insertCurrentStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number));
+                            //更新当前库存
+                            depotItemService.updateCurrentStockFun(mId, depotId);
                         }
                     }
                 }
             }
+
             logService.insertLog("商品",
                     new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(m.getName()).toString(), request);
             return 1;
@@ -238,7 +245,6 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i
     @Transactional(value = "transactionManager", rollbackFor = Exception.class)
     public int updateMaterial(JSONObject obj, HttpServletRequest request) throws Exception{
         Material material = JSONObject.parseObject(obj.toJSONString(), Material.class);
-
         try{
             //修改商品属性
             materialMapper.updateByPrimaryKeySelective(material);

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

@@ -1,6 +1,8 @@
 package com.jsh.erp.utils;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.*;
+import java.net.URLEncoder;
 import java.util.*;
 
 /**
@@ -317,4 +319,33 @@ public class FileUtils {
 		fileName = fileName.replace("=","").replace(",","").replace("&","");
 		return fileName;
 	}
+
+	public static String setFileDownloadHeader(HttpServletRequest request, String fileName)
+			throws UnsupportedEncodingException
+	{
+		final String agent = request.getHeader("USER-AGENT");
+		String filename = fileName;
+		if (agent.contains("MSIE"))
+		{
+			// IE浏览器
+			filename = URLEncoder.encode(filename, "utf-8");
+			filename = filename.replace("+", " ");
+		}
+		else if (agent.contains("Firefox"))
+		{
+			// 火狐浏览器
+			filename = new String(fileName.getBytes(), "ISO8859-1");
+		}
+		else if (agent.contains("Chrome"))
+		{
+			// google浏览器
+			filename = URLEncoder.encode(filename, "utf-8");
+		}
+		else
+		{
+			// 其它浏览器
+			filename = URLEncoder.encode(filename, "utf-8");
+		}
+		return filename;
+	}
 }

+ 1 - 1
src/main/resources/mapper_xml/DepotHeadMapper.xml

@@ -277,7 +277,7 @@
         receiver_phone,
       </if>
       <if test="receiverAddress != null">
-        receiver_address,
+        receiver_address
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">

+ 4 - 0
src/main/resources/mapper_xml/MaterialExtendMapper.xml

@@ -481,4 +481,8 @@
     AND ifnull(me.delete_Flag,'0') !='1'
   </select>
 
+  <select id="selectPosition"  resultType="String">
+    SELECT DISTINCT position FROM jsh_material_extend WHERE position IS NOT NULL AND ifnull(delete_Flag,'0') !='1'
+  </select>
+
 </mapper>

+ 19 - 1
src/main/resources/mapper_xml/MaterialMapperEx.xml

@@ -858,7 +858,25 @@
         left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
         left JOIN jsh_depot d on me.depot_id = d.id and ifnull(d.delete_Flag,'0') !='1'
         left JOIN jsh_supplier s on me.supplier_id = s.id and ifnull(s.delete_Flag,'0') !='1'
-        where m.enabled=1 and me.id is not null
+        where m.enabled = 1
+        and me.id is not null
+        <if test="keyword != null and keyword !=''">
+            <bind name="bindKey" value="'%'+materialParam+'%'"/>
+            and me.batch_number like #{bindKey} or m.name like #{bindKey}
+        </if>
+        <if test="position != null and position !=''">
+            <bind name="bindPosition" value="'%'+position+'%'"/>
+            and me.position like #{bindPosition}
+        </if>
+        <if test="categoryId != null">
+            and m.category_id = #{category_id}
+        </if>
+        <if test="type == 'have'">
+            and me.inventory > 0
+        </if>
+        <if test="type == 'none'">
+            and me.inventory &lt;= 0
+        </if>
         and ifnull(me.delete_flag,'0') !='1'
     </select>
 

+ 2 - 0
src/main/resources/mapper_xml/TaskStocktakingItemMapper.xml

@@ -61,6 +61,8 @@
             tsi.id AS id,
             mc.`name` AS category_name,
             m.`name` AS material_name,
+            me.position AS position,
+            me.batch_number AS batch_number,
             m.system_sku AS system_sku,
             me.commodity_unit AS commodity_unit,
             me.production_date AS production_date,

+ 4 - 4
src/main/resources/mapper_xml/TaskStocktakingMapper.xml

@@ -26,7 +26,7 @@
         <where>
             ts.delete_flag = 0
             <if test="number != null and number != ''">
-                AND (ts.task_name LIKE CONCAT('%',#{taskName},'%') OR ts.number LIKE CONCAT('%',#{number},'%'))
+                AND (ts.task_name LIKE CONCAT('%',#{number},'%') OR ts.number LIKE CONCAT('%',#{number},'%'))
             </if>
             <if test="taskStatus != null and taskStatus != 0">
                 AND ts.task_status = #{taskStatus}
@@ -62,7 +62,7 @@
         <where>
             ts.delete_flag = 0
             <if test="number != null and number != ''">
-                AND ts.number LIKE CONCAT('%',#{number},'%')
+                AND (ts.number LIKE CONCAT('%',#{number},'%') OR ts.task_name LIKE CONCAT('%',#{number},'%'))
             </if>
             <if test="taskStatus != null and taskStatus != 0">
                 AND ts.task_status = #{taskStatus}
@@ -70,8 +70,8 @@
             <if test="depotId != null and depotId !=''">
                 AND ts.depot_id = #{depotId}
             </if>
-            <if test="createName != null and createName !=''">
-                AND ju.username LIKE CONCAT('%',#{createName},'%')
+            <if test="createBy != null and createBy !=''">
+                AND ts.create_by = #{createBy}
             </if>
         GROUP BY
             ts.id