Kaynağa Gözat

2024年4月12日09:13:31

纪新园 1 yıl önce
ebeveyn
işleme
93982050e3
20 değiştirilmiş dosya ile 688 ekleme ve 56 silme
  1. BIN
      doc/~$环境使用手册.docx
  2. 22 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TCorpsController.java
  3. 24 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TGoodsController.java
  4. 31 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TWarehouseController.java
  5. 14 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseInStockController.java
  6. 4 3
      ruoyi-admin/src/main/resources/application-druid.yml
  7. 1 1
      ruoyi-admin/src/main/resources/application.yml
  8. 34 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TWarehouseImport.java
  9. 49 0
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/domain/TCorpsImport.java
  10. 65 0
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/domain/TGoodsImport.java
  11. 2 0
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/ITCorpsService.java
  12. 3 0
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/ITGoodsService.java
  13. 3 0
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/ITWarehouseService.java
  14. 65 20
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TCorpsServiceImpl.java
  15. 58 13
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TGoodsServiceImpl.java
  16. 55 5
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TWarehouseServiceImpl.java
  17. 12 0
      ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/domain/TWhgenleg.java
  18. 2 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java
  19. 234 9
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java
  20. 10 3
      ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

BIN
doc/~$环境使用手册.docx


+ 22 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TCorpsController.java

@@ -2,6 +2,7 @@ package com.ruoyi.web.controller.warehouse.basicData;
 
 import com.alibaba.fastjson.JSONArray;
 import com.ruoyi.basicData.domain.TCorps;
+import com.ruoyi.basicData.domain.TCorpsImport;
 import com.ruoyi.basicData.service.ITCorpsService;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
@@ -14,10 +15,13 @@ import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.shipping.excel.TWarehousebillsCntritemsExcel;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -146,4 +150,22 @@ public class TCorpsController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] fIds) {
         return tCorpsService.deleteTCorpsByIds(fIds);
     }
+    /**
+     * 下载客户信息导入模板
+     */
+    @GetMapping("/importCorpsTemplate")
+    public AjaxResult importCorpsTemplate()
+    {
+        ExcelUtil<TCorpsImport> util = new ExcelUtil<TCorpsImport>(TCorpsImport.class);
+        return util.exportExcel(new ArrayList<>(),"客户信息数据模板");
+    }
+
+    /**
+     * 导入【客户信息】Excel
+     */
+    @PostMapping(value = "/importCorps")
+    public AjaxResult importCorps(@RequestParam("file") MultipartFile file)
+    {
+        return tCorpsService.importCorps(file);
+    }
 }

+ 24 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TGoodsController.java

@@ -1,6 +1,8 @@
 package com.ruoyi.web.controller.warehouse.basicData;
 
+import com.ruoyi.basicData.domain.TCorpsImport;
 import com.ruoyi.basicData.domain.TGoods;
+import com.ruoyi.basicData.domain.TGoodsImport;
 import com.ruoyi.basicData.service.ITGoodsService;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
@@ -13,7 +15,9 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -103,4 +107,24 @@ public class TGoodsController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] fIds) {
         return tGoodsService.deleteTGoodsByIds(fIds);
     }
+
+
+    /**
+     * 下载商品信息导入模板
+     */
+    @GetMapping("/importGoodsTemplate")
+    public AjaxResult importGoodsTemplate()
+    {
+        ExcelUtil<TGoodsImport> util = new ExcelUtil<>(TGoodsImport.class);
+        return util.exportExcel(new ArrayList<>(),"商品信息数据模板");
+    }
+
+    /**
+     * 导入【商品信息】Excel
+     */
+    @PostMapping(value = "/importGoods")
+    public AjaxResult importGoods(@RequestParam("file") MultipartFile file)
+    {
+        return tGoodsService.importGoods(file);
+    }
 }

+ 31 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TWarehouseController.java

@@ -2,6 +2,7 @@ package com.ruoyi.web.controller.warehouse.basicData;
 
 
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.ruoyi.basicData.domain.TCorpsImport;
 import com.ruoyi.basicData.service.ITWarehouseService;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
@@ -9,6 +10,7 @@ import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.TWarehouse;
+import com.ruoyi.common.core.domain.entity.TWarehouseImport;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.StringUtils;
@@ -24,7 +26,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -64,6 +68,16 @@ public class TWarehouseController extends BaseController {
     }
 
     /**
+     * 查询仓库列表
+     */
+    @GetMapping("/listPage")
+    public AjaxResult listPage(TWarehouse tWarehouse) {
+         startPage();
+        List<TWarehouse> list = tWarehouseService.selectTWarehouseList(tWarehouse);
+        return AjaxResult.success(list);
+    }
+
+    /**
      * 仓库懒加载列表
      */
     @PreAuthorize("@ss.hasPermi('basicdata:warehouse:list')")
@@ -258,5 +272,22 @@ public class TWarehouseController extends BaseController {
         return AjaxResult.success(tWarehouseService.buildDeptTreeSelect(tWarehouses));
     }
 
+    /**
+     * 下载仓库信息导入模板
+     */
+    @GetMapping("/importTWarehouseTemplate")
+    public AjaxResult importTWarehouseTemplate()
+    {
+        ExcelUtil<TWarehouseImport> util = new ExcelUtil<>(TWarehouseImport.class);
+        return util.exportExcel(new ArrayList<>(),"仓库信息数据模板");
+    }
 
+    /**
+     * 导入【仓库信息】Excel
+     */
+    @PostMapping(value = "/importTWarehouse")
+    public AjaxResult importTWarehouse(@RequestParam("file") MultipartFile file,@RequestParam("parentId") Long parentId)
+    {
+        return tWarehouseService.importTWarehouse(file,parentId);
+    }
 }

+ 14 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseInStockController.java

@@ -89,9 +89,10 @@ public class TWarehouseInStockController extends BaseController {
         String filePath = "";
         try {
             // 文件名
-            String fileName = "入库模板.xlsx";
+//            String fileName = "入库模板.xlsx";
+            String fileName = "入库模板-绿辰.xlsx";
             // 请求地址以及文件名转换
-            String url = "http://121.36.212.131:8080/file/" + URLEncoder.encode(fileName, "UTF-8");
+            String url = "https://ck.hturing.com/profile/" + URLEncoder.encode(fileName, "UTF-8");
             // 下载文件并返回文件名
             filePath = downLoadFromUrl(url, fileName, RuoYiConfig.getDownloadPath());
         } catch (Exception e) {
@@ -193,6 +194,17 @@ public class TWarehouseInStockController extends BaseController {
     }
 
     /**
+     * 导入【入库明细箱信息】Excel
+     * 待完成
+     */
+    @PostMapping(value = "/importInstockV1")
+    public AjaxResult importInstockV1(@RequestParam("file") MultipartFile file,@RequestParam(value = "fWarehouseid",required = false) Long fWarehouseid
+            ,@RequestParam(value = "billId",required = false) Long billId) {
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.importLibraryInformationV1(file,fWarehouseid,billId,loginUser);
+    }
+
+    /**
      * 入库暂存
      */
     @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")

+ 4 - 3
ruoyi-admin/src/main/resources/application-druid.yml

@@ -11,11 +11,12 @@ spring:
 #        url: jdbc:mysql://124.70.179.5:3306/JinGang?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
         #url: jdbc:mysql://119.3.74.195:3306/LianHuaShengYun?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
         #url: jdbc:mysql://119.3.74.195:3306/jhy?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
-        url: jdbc:mysql://114.115.238.226:3306/had?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+#        url: jdbc:mysql://114.115.238.226:3306/had?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 #        大木
 #        url: jdbc:mysql://123.60.138.20:3306/ruoyi?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 #        url: jdbc:mysql://123.60.138.20:3306/sengneng?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
-#        url: jdbc:mysql://localhost:3306/shanneng-test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+        url: jdbc:mysql://123.60.138.20:3306/lvchen?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+#        url: jdbc:mysql://192.168.8.113:3306/shanneng-text2-utf8?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 
         username: root
         password: daasan7ujm^YHN
@@ -82,4 +83,4 @@ spring:
           config:
             multi-statement-allow: true
   gaode:
-    key: 0fcf8a24813ef6b0da9d511149390f8a
+    key: 0fcf8a24813ef6b0da9d511149390f8a

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -24,7 +24,7 @@ ruoyi:
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8010
+  port: 9099
   servlet:
     # 应用的访问路径
     context-path: /

+ 34 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TWarehouseImport.java

@@ -0,0 +1,34 @@
+package com.ruoyi.common.core.domain.entity;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 仓库对象 t_warehouse
+ *
+ * @author ruoyi
+ * @date 2021-01-07fGoodsType
+ */
+@Data
+public class TWarehouseImport extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    @Excel(name = "编号")
+    private String fNo;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String fName;
+
+    /**
+     * 简称
+     */
+    @Excel(name = "简称")
+    private String fCname;
+}

+ 49 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/domain/TCorpsImport.java

@@ -0,0 +1,49 @@
+package com.ruoyi.basicData.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+
+/**
+ * 客户详情对象 t_corps
+ *
+ * @author ruoyi
+ * @date 2020-12-11
+ */
+@Data
+public class TCorpsImport extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 客户类别(拼接起来的)
+     */
+    @Excel(name = "客户类别")
+    private String fTypename;
+
+    /**
+     * 编号
+     */
+    @Excel(name = "编号")
+    private String fNo;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String fName;
+
+    /**
+     * 简称
+     */
+    @Excel(name = "简称")
+    private String fCname;
+
+    /**
+     * 电话
+     */
+    @Excel(name = "电话")
+    private String fTel;
+
+
+}

+ 65 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/domain/TGoodsImport.java

@@ -0,0 +1,65 @@
+package com.ruoyi.basicData.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 商品详情对象 t_goods
+ *
+ * @author ruoyi
+ * @date 2020-12-11
+ */
+@Data
+public class TGoodsImport extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    @Excel(name = "编号")
+    private String fNo;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String fName;
+
+    /**
+     * 规格
+     */
+    @Excel(name = "规格")
+    private String fSpecs;
+
+    /**
+     * 账册序号
+     */
+    @Excel(name = "备案序号")
+    private String fEmsSeqNo;
+    /**
+     * 海关编码
+     */
+    @Excel(name = "海关编码")
+    private String fHscode;
+
+    /**
+     * 申报单位(申报计量单位)
+     */
+    @Excel(name = "申报单位")
+    private String fWmsDclUnit;
+
+    /**
+     * 法定单位(法定计量单位)
+     */
+    @Excel(name = "法定单位")
+    private String fWmsLawUnit;
+
+    /**
+     * 包装类型,存储id 显示名称 下拉选择类型,一个商品名称对应一个包装类型,对应t_package的f_id
+     */
+    @Excel(name = "包装类型")
+    private String fPackageid;
+
+
+}

+ 2 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/ITCorpsService.java

@@ -3,6 +3,7 @@ package com.ruoyi.basicData.service;
 import com.ruoyi.basicData.domain.TCorps;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginUser;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 import java.util.Map;
@@ -143,4 +144,5 @@ public interface ITCorpsService {
      */
     public List<Map<String, Object>> biCustomerList();
 
+    AjaxResult importCorps(MultipartFile file);
 }

+ 3 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/ITGoodsService.java

@@ -2,6 +2,7 @@ package com.ruoyi.basicData.service;
 
 import com.ruoyi.basicData.domain.TGoods;
 import com.ruoyi.common.core.domain.AjaxResult;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 import java.util.Map;
@@ -78,4 +79,6 @@ public interface ITGoodsService {
      * @return
      */
     public List<Map<String,Object>> getGoodName();
+
+    AjaxResult importGoods(MultipartFile file);
 }

+ 3 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/ITWarehouseService.java

@@ -13,6 +13,7 @@ import com.ruoyi.warehouseBusiness.domain.vo.WarehouseInfoVO;
 import com.ruoyi.warehouseBusiness.request.InventoryQueryRequest;
 import com.ruoyi.warehouseBusiness.response.InventoryQueryResponse;
 import com.ruoyi.warehouseBusiness.response.InventoryQueryTwoResponse;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 import java.util.Map;
@@ -316,4 +317,6 @@ public interface ITWarehouseService {
      * 根据用户绑定的仓库查询仓库下拉
      */
     List<TWarehouse> nominateTreeselect(TWarehouse tWarehouse);
+
+    AjaxResult importTWarehouse(MultipartFile file,Long parentId);
 }

+ 65 - 20
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TCorpsServiceImpl.java

@@ -3,6 +3,7 @@ package com.ruoyi.basicData.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.basicData.domain.TCorps;
+import com.ruoyi.basicData.domain.TCorpsImport;
 import com.ruoyi.basicData.domain.TCustomerContact;
 import com.ruoyi.basicData.mapper.TCorpsMapper;
 import com.ruoyi.basicData.mapper.TCustomerContactMapper;
@@ -10,13 +11,13 @@ import com.ruoyi.basicData.service.ITCorpsService;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.domain.SysUserRole;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.SysRoleMapper;
@@ -26,10 +27,12 @@ import com.ruoyi.warehouseBusiness.domain.TEnclosure;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
 import com.ruoyi.warehouseBusiness.mapper.TEnclosureMapper;
 import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.*;
 
@@ -80,7 +83,7 @@ public class TCorpsServiceImpl implements ITCorpsService {
             return AjaxResult.error("未找到信息");
         }
         map.put("corp", tCorps);
-       // List<TCustomerContact> customerContactList = tCustomerContactMapper.selectList(new EntityWrapper<TCustomerContact>().eq("f_pid", fId));
+        // List<TCustomerContact> customerContactList = tCustomerContactMapper.selectList(new EntityWrapper<TCustomerContact>().eq("f_pid", fId));
         TCustomerContact tCustomerContact = new TCustomerContact();
         tCustomerContact.setfPid(fId);
         map.put("customerContact", tCustomerContactMapper.selectTCustomerContactList(tCustomerContact));
@@ -108,7 +111,7 @@ public class TCorpsServiceImpl implements ITCorpsService {
     @Override
     public List<TCorps> selectTCorpsList(TCorps tCorps) {
         if (StringUtils.isNotEmpty(tCorps.getfTypeid())) {
-            tCorps.setfTypeid("\""+tCorps.getfTypeid()+"\"");
+            tCorps.setfTypeid("\"" + tCorps.getfTypeid() + "\"");
         }
         return tCorpsMapper.selectTCorpsList(tCorps);
     }
@@ -120,13 +123,14 @@ public class TCorpsServiceImpl implements ITCorpsService {
 
     @Override
     public AjaxResult selectAgreementCorpListNoParams() {
-        Map<String,Object> map = new HashMap<>();
-        map.put("corpList",tCorpsMapper.selectAgreementCorpListNoData());
+        Map<String, Object> map = new HashMap<>();
+        map.put("corpList", tCorpsMapper.selectAgreementCorpListNoData());
         return AjaxResult.success(map);
     }
 
     /**
-     *  车队使用,查询客户、司机信息、车队信息
+     * 车队使用,查询客户、司机信息、车队信息
+     *
      * @param fId
      * @return
      */
@@ -136,7 +140,8 @@ public class TCorpsServiceImpl implements ITCorpsService {
     }
 
     /**
-     *  车队使用,查询客户、车队信息
+     * 车队使用,查询客户、车队信息
+     *
      * @param tCorps
      * @return
      */
@@ -167,16 +172,16 @@ public class TCorpsServiceImpl implements ITCorpsService {
             corps.setCreateTime(new Date());
             corps.setfStatus("0");
             tCorpsMapper.insertTCorps(corps);
-            fPid=corps.getfId();
+            fPid = corps.getfId();
         } else {
-            fPid=corps.getfId();
+            fPid = corps.getfId();
             corps.setUpdateBy(user.getUserName());
             corps.setUpdateTime(new Date());
-            if(corps.getfStatus().equals("1")){
-                TWarehouseBills tWarehouseBill =new TWarehouseBills();
+            if (corps.getfStatus().equals("1")) {
+                TWarehouseBills tWarehouseBill = new TWarehouseBills();
                 tWarehouseBill.setfCorpid(corps.getfId());
-                List<TWarehouseBills>   tWarehouseBillList=tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
-                if(tWarehouseBillList!=null && !tWarehouseBillList.isEmpty()){
+                List<TWarehouseBills> tWarehouseBillList = tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
+                if (tWarehouseBillList != null && !tWarehouseBillList.isEmpty()) {
                     return AjaxResult.error("客户在库存总账有记录不可变更状态");
                 }
             }
@@ -306,10 +311,10 @@ public class TCorpsServiceImpl implements ITCorpsService {
     @Override
     @Transactional
     public AjaxResult updateTCorps(TCorps tCorps) {
-        TWarehouseBills tWarehouseBill =new TWarehouseBills();
+        TWarehouseBills tWarehouseBill = new TWarehouseBills();
         tWarehouseBill.setfCorpid(tCorps.getfId());
-        List<TWarehouseBills>   tWarehouseBillList=tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
-        if(tWarehouseBillList!=null && !tWarehouseBillList.isEmpty()){
+        List<TWarehouseBills> tWarehouseBillList = tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
+        if (tWarehouseBillList != null && !tWarehouseBillList.isEmpty()) {
             return AjaxResult.error("客户在库存总账有记录不可变更状态");
         }
         tCorps.setUpdateTime(DateUtils.getNowDate());
@@ -329,11 +334,11 @@ public class TCorpsServiceImpl implements ITCorpsService {
         //return tCorpsMapper.deleteTCorpsByIds(fIds);
         // 查询仓库主表 是否有客户存在
         int i = 1;
-        for(Long id:fIds){
-            TWarehouseBills tWarehouseBill =new TWarehouseBills();
+        for (Long id : fIds) {
+            TWarehouseBills tWarehouseBill = new TWarehouseBills();
             tWarehouseBill.setfCorpid(id);
-            List<TWarehouseBills>   tWarehouseBillList=tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
-            if(tWarehouseBillList!=null && !tWarehouseBillList.isEmpty()){
+            List<TWarehouseBills> tWarehouseBillList = tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
+            if (tWarehouseBillList != null && !tWarehouseBillList.isEmpty()) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return AjaxResult.error("客户第" + i + "行仓库有货物不可删除");
             }
@@ -433,4 +438,44 @@ public class TCorpsServiceImpl implements ITCorpsService {
         return tCorpsMapper.biCustomerList(external);
     }
 
+    @Override
+    public AjaxResult importCorps(MultipartFile file) {
+        ExcelUtil<TCorpsImport> util = new ExcelUtil<>(TCorpsImport.class);
+        try {
+            LoginUser loginUser = SecurityUtils.getLoginUser();
+            List<TCorpsImport> tCorpsImportList = util.importExcel(file.getInputStream());
+            if (tCorpsImportList.isEmpty()) {
+                throw new RuntimeException("导入数据为空");
+            }
+            for (TCorpsImport item : tCorpsImportList) {
+                TCorps corps = new TCorps();
+                BeanUtils.copyProperties(item, corps);
+                if (UserConstants.NOT_UNIQUE.equals(this.checkUFNoUnique(corps))) {
+                    return AjaxResult.error("新增信息'" + corps.getfNo() + "'失败,编号已存在");
+                } else if (UserConstants.NOT_UNIQUE.equals(this.checkUFNnameUnique(corps))) {
+                    return AjaxResult.error("新增信息'" + corps.getfName() + "'失败,名称已存在");
+                } else if (UserConstants.NOT_UNIQUE.equals(this.checkUFCnameUnique(corps))) {
+                    return AjaxResult.error("新增信息'" + corps.getfCname() + "'失败,简称已存在");
+                }
+                corps.setDeptId("100");
+                SysUser user = loginUser.getUser();
+                TCorps tCorps1 = tCorpsMapper.checkFNoUnique(corps.getfNo());
+                if (tCorps1 == null) {
+                    corps.setCreateBy(user.getUserName());
+                    corps.setCreateTime(new Date());
+                    corps.setfStatus("0");
+                    tCorpsMapper.insertTCorps(corps);
+                } else {
+                    corps.setfId(tCorps1.getfId());
+                    corps.setUpdateBy(user.getUserName());
+                    corps.setUpdateTime(new Date());
+                    tCorpsMapper.updateTCorps(corps);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return AjaxResult.success();
+    }
+
 }

+ 58 - 13
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TGoodsServiceImpl.java

@@ -2,24 +2,30 @@ package com.ruoyi.basicData.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.ruoyi.basicData.domain.TGoods;
+import com.ruoyi.basicData.domain.TGoodsImport;
 import com.ruoyi.basicData.mapper.TGoodsMapper;
 import com.ruoyi.basicData.service.ITGoodsService;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.reportManagement.domain.TWhgenleg;
 import com.ruoyi.reportManagement.mapper.TWhgenlegMapper;
-import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
 import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -72,7 +78,7 @@ public class TGoodsServiceImpl implements ITGoodsService {
     public int insertTGoods(TGoods tGoods) {
         tGoods.setCreateTime(DateUtils.getNowDate());
         tGoods.setCreateBy(SecurityUtils.getUsername());
-        if (ObjectUtils.isNull(tGoods.getStockWarning())){
+        if (ObjectUtils.isNull(tGoods.getStockWarning())) {
             tGoods.setStockWarning(new BigDecimal(0));
         }
         return tGoodsMapper.insertTGoods(tGoods);
@@ -86,23 +92,23 @@ public class TGoodsServiceImpl implements ITGoodsService {
      */
     @Override
     public AjaxResult updateTGoods(TGoods tGoods) {
-        if(tGoods.getfStatus()!=null && tGoods.getfStatus().equals("1")){
-            TWarehousebillsitems tWarehousebillsitems =new TWarehousebillsitems();
+        if (tGoods.getfStatus() != null && tGoods.getfStatus().equals("1")) {
+            TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
             tWarehousebillsitems.setfGoodsid(tGoods.getfId());
-            List<TWarehousebillsitems> warehousebillsitemsList1 =tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
-            if(warehousebillsitemsList1!=null && !warehousebillsitemsList1.isEmpty()){
+            List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
+            if (warehousebillsitemsList1 != null && !warehousebillsitemsList1.isEmpty()) {
                 return AjaxResult.error("商品在库存总账有记录不可变更状态");
             }
         }
         TWhgenleg tWhgenleg = new TWhgenleg();
         tWhgenleg.setfGoodsid(tGoods.getfId());
-        List<TWhgenleg> selectTWhgenlegList =tWhgenlegMapper.selectTWhgenlegV2(tWhgenleg);
+        List<TWhgenleg> selectTWhgenlegList = tWhgenlegMapper.selectTWhgenlegV2(tWhgenleg);
         for (TWhgenleg selectTWhgenleg : selectTWhgenlegList) {
-            if (ObjectUtils.isNotNull(selectTWhgenleg) && selectTWhgenleg.getfQtyblc() != 0){
+            if (ObjectUtils.isNotNull(selectTWhgenleg) && selectTWhgenleg.getfQtyblc() != 0) {
                 return AjaxResult.error("该商品存在未出库库存,禁止修改");
             }
         }
-        if (ObjectUtils.isNull(tGoods.getStockWarning())){
+        if (ObjectUtils.isNull(tGoods.getStockWarning())) {
             tGoods.setStockWarning(new BigDecimal(0));
         }
         tGoods.setUpdateTime(DateUtils.getNowDate());
@@ -122,11 +128,11 @@ public class TGoodsServiceImpl implements ITGoodsService {
     public AjaxResult deleteTGoodsByIds(Long[] fIds) {
         // return tGoodsMapper.deleteTGoodsByIds(fIds);
         int i = 1;
-        for(Long id:fIds){
-            TWarehousebillsitems tWarehousebillsitems =new TWarehousebillsitems();
+        for (Long id : fIds) {
+            TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
             tWarehousebillsitems.setfGoodsid(id);
-            List<TWarehousebillsitems> warehousebillsitemsList1 =tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
-            if(warehousebillsitemsList1!=null && !warehousebillsitemsList1.isEmpty()){
+            List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
+            if (warehousebillsitemsList1 != null && !warehousebillsitemsList1.isEmpty()) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return AjaxResult.error("商品第" + i + "行 仓库有货物不可删除");
             }
@@ -169,4 +175,43 @@ public class TGoodsServiceImpl implements ITGoodsService {
     public List<Map<String, Object>> getGoodName() {
         return tGoodsMapper.getGoodName();
     }
+
+    @Override
+    public AjaxResult importGoods(MultipartFile file) {
+        ExcelUtil<TGoodsImport> util = new ExcelUtil<>(TGoodsImport.class);
+        try {
+            LoginUser loginUser = SecurityUtils.getLoginUser();
+            List<TGoodsImport> tCorpsImportList = util.importExcel(file.getInputStream());
+            if (tCorpsImportList.isEmpty()) {
+                throw new RuntimeException("导入数据为空");
+            }
+            for (TGoodsImport item : tCorpsImportList) {
+                TGoods goods = new TGoods();
+                BeanUtils.copyProperties(item, goods);
+                if (UserConstants.NOT_UNIQUE.equals(this.checkUFNoUnique(goods))) {
+                    return AjaxResult.error("新增商品'" + goods.getfNo() + "'失败,编号已存在");
+                } else if (UserConstants.NOT_UNIQUE.equals(this.checkUFNnameUnique(goods))) {
+                    return AjaxResult.error("新增商品'" + goods.getfName() + "'失败,名称已存在");
+                }
+                SysUser user = loginUser.getUser();
+                TGoods tGoods1 = tGoodsMapper.checkFNoUnique(goods.getfNo());
+                if (tGoods1 == null) {
+                    goods.setCreateTime(DateUtils.getNowDate());
+                    goods.setCreateBy(SecurityUtils.getUsername());
+                    if (ObjectUtils.isNull(goods.getStockWarning())) {
+                        goods.setStockWarning(new BigDecimal(0));
+                    }
+                    tGoodsMapper.insertTGoods(goods);
+                } else {
+                    goods.setfId(tGoods1.getfId());
+                    goods.setUpdateBy(user.getUserName());
+                    goods.setUpdateTime(new Date());
+                    tGoodsMapper.updateTGoods(goods);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return AjaxResult.success();
+    }
 }

+ 55 - 5
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TWarehouseServiceImpl.java

@@ -17,11 +17,13 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.TreeSelect;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.TWarehouse;
+import com.ruoyi.common.core.domain.entity.TWarehouseImport;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.CustomException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.mapper.TWarehouseUserMapper;
 import com.ruoyi.system.service.ISysDictDataService;
 import com.ruoyi.warehouseBusiness.domain.TAnnex;
@@ -40,6 +42,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
@@ -536,24 +539,24 @@ public class TWarehouseServiceImpl implements ITWarehouseService {
                                                                String materialQuality,
                                                                String level,
                                                                Integer pageNo,
-                                                               Integer pageSize,String lockStatus) {
+                                                               Integer pageSize, String lockStatus) {
         if ("null".equals(warehouseCode)) {
             warehouseCode = null;
         }
         return tWarehouseMapper.queryGoodsAccountByPageV1(warehouseCode, ownerSocialIdentifier, ownerCode, ownerName, goodsName, specifications,
-                producing, materialQuality, level, pageNo, pageSize,lockStatus);
+                producing, materialQuality, level, pageNo, pageSize, lockStatus);
     }
 
     @Override
     public List<Map<String, Object>> queryGoodsAccountDetailByPageV1(String warehouseCode, String ownerName, String ownerCode, String ownerSocialIdentifier, String goodsName, String specifications,
                                                                      String producing, String materialQuality, String level, String receiptDoc, String billOfLading,
-                                                                     String areaName, String areaCode, String slotName, String slotCode,String goodsCode, Integer pageNo, Integer pageSize,String lockStatus) {
+                                                                     String areaName, String areaCode, String slotName, String slotCode, String goodsCode, Integer pageNo, Integer pageSize, String lockStatus) {
         if ("null".equals(warehouseCode)) {
             warehouseCode = null;
         }
 
         List<Map<String, Object>> maps = tWarehouseMapper.queryGoodsAccountDetailByPageV1(warehouseCode, ownerName, ownerCode, ownerSocialIdentifier, goodsName, specifications,
-                producing, materialQuality, level, receiptDoc, billOfLading, areaName, areaCode, slotName, slotCode,goodsCode, pageNo, pageSize,lockStatus);
+                producing, materialQuality, level, receiptDoc, billOfLading, areaName, areaCode, slotName, slotCode, goodsCode, pageNo, pageSize, lockStatus);
 
         for (Map<String, Object> map : maps) {
             if (map.get("storesTime") != null) {
@@ -680,7 +683,8 @@ public class TWarehouseServiceImpl implements ITWarehouseService {
                 inventoryQueryRequest.getCurrentOwnerSocialIdentifier(),
                 inventoryQueryRequest.getWarehouseSerialNumbers());
     }
-/**
+
+    /**
      * 获取仓库详细信息
      */
     @Override
@@ -770,6 +774,52 @@ public class TWarehouseServiceImpl implements ITWarehouseService {
     }
 
     @Override
+    public AjaxResult importTWarehouse(MultipartFile file, Long parentId) {
+        ExcelUtil<TWarehouseImport> util = new ExcelUtil<>(TWarehouseImport.class);
+        try {
+            List<TWarehouseImport> tCorpsImportList = util.importExcel(file.getInputStream());
+            if (tCorpsImportList.isEmpty()) {
+                throw new RuntimeException("导入数据为空");
+            }
+            for (TWarehouseImport item : tCorpsImportList) {
+                TWarehouse tWarehouse = new TWarehouse();
+                BeanUtils.copyProperties(item, tWarehouse);
+                if (UserConstants.NOT_UNIQUE.equals(this.checkNameUnique(tWarehouse))) {
+                    return AjaxResult.error("新增仓库'" + tWarehouse.getfNo() + "'失败,仓库已存在");
+                }
+                TWarehouse tWarehouse1 = tWarehouseMapper.getWarehouseByNo(tWarehouse.getfNo());
+                if (tWarehouse1 == null) {
+                    TWarehouse info = tWarehouseMapper.selectTWarehouseById(parentId);
+                    // 如果父节点不为正常状态,则不允许新增子节点
+                    if (!UserConstants.DEPT_NORMAL.equals(info.getfStatus())) {
+                        throw new CustomException("部门停用,不允许新增");
+                    }
+                    tWarehouse.setAncestors(info.getAncestors() + "," + parentId);
+                    // 所有节点转换成中文拼接
+                    String fWarehouseInformation = warehouseName(info.getAncestors() + "," + parentId, tWarehouse.getfName());
+                    tWarehouse.setfWarehouseInformation(fWarehouseInformation);
+                    tWarehouse.setfStatus("0");
+                    tWarehouseMapper.insertTWarehouse(tWarehouse);
+
+                    updateParentGross(tWarehouse.getAncestors());
+                } else {
+                    // 登录用户
+                    String username = SecurityUtils.getUsername();
+                    tWarehouse.setfId(tWarehouse1.getfId());
+                    tWarehouse.setUpdateBy(username);
+                    tWarehouseMapper.updateTWarehouse(tWarehouse);
+
+                    updateParentGross(tWarehouse.getAncestors());
+                    annexMapper.deleteByPid(tWarehouse.getfId(), AnnexActEnum.WAREHOUSE.getType());
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
     public String checkUFNoUnique(TWarehouse tWarehouse) {
         TWarehouse tWarehouse1 = tWarehouseMapper.checkFNoUnique(tWarehouse.getfNo());
         if (StringUtils.isNotNull(tWarehouse1) && !tWarehouse1.getfId().equals(tWarehouse.getfId())) {

+ 12 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/domain/TWhgenleg.java

@@ -60,6 +60,10 @@ public class TWhgenleg extends BaseEntity {
      */
     private Long fWarehouseLocationid;
 
+    /** 仓库/库区/库位 */
+    @Excel(name = "仓库/库区/库位")
+    private String fWarehouseInformation;
+
     /**
      * 货物品名,t_goods 中的no或 name,模糊查找选择后,存储f_id,显示name
      */
@@ -303,6 +307,14 @@ public class TWhgenleg extends BaseEntity {
      */
     private String checklists;
 
+    public String getfWarehouseInformation() {
+        return fWarehouseInformation;
+    }
+
+    public void setfWarehouseInformation(String fWarehouseInformation) {
+        this.fWarehouseInformation = fWarehouseInformation;
+    }
+
     public String getWarehouseInformation() {
         return warehouseInformation;
     }

+ 2 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java

@@ -969,4 +969,6 @@ public interface ITWarehouseBillsService {
      * @return
      */
     AjaxResult masterSuppressThePreservationOfGoods(TWarehouseBills warehouseBills);
+
+    AjaxResult importLibraryInformationV1(MultipartFile file, Long fWarehouseid,Long billId, LoginUser loginUser);
 }

+ 234 - 9
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -3,7 +3,6 @@ package com.ruoyi.warehouseBusiness.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -32,7 +31,6 @@ import com.ruoyi.common.utils.*;
 import com.ruoyi.common.utils.ip.AddressUtils;
 import com.ruoyi.common.utils.poi.DrawExcel;
 import com.ruoyi.common.utils.poi.ExcelUtils;
-import com.ruoyi.common.utils.sign.Md5Utils;
 import com.ruoyi.finance.domain.TFeeDo;
 import com.ruoyi.finance.mapper.TFeeDoMapper;
 import com.ruoyi.quotation.domain.TSeaprice;
@@ -725,6 +723,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         TWhgenleg tWhgenleg = new TWhgenleg();
         if (WarehouseTypeEnum.SJRK.getType().equals(warehouseBills.getfBilltype())) {
             tWhgenleg.setfOriginalbilldate(warehousebillsitems.getfBsdate());
+            tWhgenleg.setfWarehouseInformation(warehousebillsitems.getfWarehouseInformation());
             if (StringUtils.isNotEmpty(warehouseBills.getfCustomno())) {
                 tWhgenleg.setfCustomno(warehouseBills.getfCustomno());
             }
@@ -741,6 +740,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         if (WarehouseTypeEnum.HQZY.getType().equals(warehouseBills.getfBilltype()) || WarehouseTypeEnum.CKDB.getType().equals(warehouseBills.getfBilltype()) ||
                 WarehouseTypeEnum.HWTG.getType().equals(warehouseBills.getfBilltype())) {
             tWhgenleg.setfOriginalbilldate(warehousebillsitems.getfOriginalbilldate());
+            tWhgenleg.setfWarehouseInformation(warehousebillsitems.getfWarehouseInformation());
             if (WarehouseTypeEnum.CKDB.getType().equals(warehouseBills.getfBilltype()) || WarehouseTypeEnum.HWTG.getType().equals(warehouseBills.getfBilltype())) {
                 tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
             } else {
@@ -861,6 +861,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         Long timestamp = DateUtils.getTimestamp(new Date());
         warehouseBills.setfDateChanged(timestamp.toString() + (int) (Math.random() * 900) + 100);
         TWarehousebillsitems itemInFo = tWarehousebillsitemsMapper.selectItemQtyByFPid(warehouseBills.getfId());
+        TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(warehouseBills.getfWarehouseid());
         warehouseBills.setfQty(itemInFo.getfQty());
         warehouseBills.setfNetweight(itemInFo.getfNetweight());
         warehouseBills.setfGrossweight(itemInFo.getfGrossweight());
@@ -949,6 +950,13 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     wbItem.setfBillingway(warehouseBills.getfBillingway());
                     wbItem.setfMblno(warehouseBills.getfMblno());// 入库更新库存前执行update更新明细的提单号等于主表的提单号
                 }
+                if (WarehouseTypeEnum.CKDB.getType().equals(billsType) || WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
+                    TWarehouse tWarehouse1 = tWarehouseMapper.selectTWarehouseById(wbItem.getfTransferWarehouselocid());
+                    wbItem.setfWarehouseInformation(tWarehouse.getfName() + "/" + tWarehouse1.getfName());
+                } else {
+                    TWarehouse tWarehouse1 = tWarehouseMapper.selectTWarehouseById(wbItem.getfWarehouselocid());
+                    wbItem.setfWarehouseInformation(tWarehouse.getfName() + "/" + tWarehouse1.getfName());
+                }
                 if (null != wbItem.getfId()) {
                     wbItem.setUpdateTime(wbItem.getfBsdate());
                     wbItem.setUpdateBy(loginUser.getUser().getUserName());
@@ -966,11 +974,11 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     wbItem.setfPid(fPid);
                     wbItem.setCreateBy(loginUser.getUser().getUserName());
                     wbItem.setCreateTime(new Date());
-                    tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
                     if (!warehouseStatus) {
                         // 添加状态log
                         insertTWarehousebillsLog(wbItem, 10L);
                     }
+                    tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
                 }
 
                 // 获取前端是否传递电子标签数据
@@ -1701,8 +1709,13 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
         List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
         int line = 0;
+        TWarehouse tWarehouseZ = tWarehouseMapper.selectTWarehouseById(warehouseBills.getfWarehouseid());
         for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
             line++;
+            TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(wbItem.getfWarehouselocid());
+            if (tWarehouse != null) {
+                wbItem.setfWarehouseInformation(tWarehouseZ.getfName() + "/" + tWarehouse.getfName());
+            }
             if ("SJRK".equals(billsType) || "SJCK".equals(billsType) || WarehouseTypeEnum.CKDB.getType().equals(billsType) || WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
                 // 除了入库其他模块不需要更新主表的 仓储费计费日期到明细表,其他模块 应从库存总账把仓储费计费日期 赋给明细表
                 if ("SJRK".equals(billsType)) {
@@ -10422,9 +10435,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         reqBody.put("storageName", a.getStorageName());
         reqBody.put("storageContractCode", a.getStorageContractCode());
         List<SkuItem> skuItemList = a.getSkuItemList();
-        if (skuItemList.size() > 0) {
+        if (!skuItemList.isEmpty()) {
             TWarehouseBills tWarehouseBills = warehouseBillsMapper.selectBYOriginalBillNo(skuItemList.get(0).getEnterCode());
-            if (tWarehouseBills != null){
+            if (tWarehouseBills != null) {
                 if (ObjectUtils.isNull(tWarehouseBills.getfBsdate())) {
                     throw new RuntimeException("入库日期不能为空");
                 }
@@ -10436,7 +10449,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 }
                 DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 reqBody.put("storagePayTime", df1.format(tWarehouseBills.getfChargedate()));
-            }else{
+            } else {
                 reqBody.put("storageContractStart", a.getStorageContractStart());// 改
                 reqBody.put("storagePayTime", a.getStoragePayTime());//改
             }
@@ -10514,7 +10527,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 sysDictData.setDictValue(vo.getSpu());
 
                 //是否保税
-                reqBody.put("whetherBonded", a.getWhetherBonded());
+                goodsMaps.put("taxType", a.getWhetherBonded());
                 goodsMaps.put("spuId", vo.getSpu());
                 goodsMaps.put("skuId", vo.getSku());
                 goodsMaps.put("skuName", goods.getfName());
@@ -10599,8 +10612,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         // 公钥
         String appKey = "D0fJZ22Gn4BTE7qd";
         // 请求地址
-        String url = "https://sdpftz-console-test.pub.jdtiot.com/open/wms/receiptDistributeGoodsResult";
-//        String url = "https://sdpftz-console.ai-warehouse.com/open/wms/receiptDistributeGoodsResult";
+//        String url = "https://sdpftz-console-test.pub.jdtiot.com/open/wms/receiptDistributeGoodsResult";
+        String url = "https://sdpftz-console.ai-warehouse.com/open/wms/receiptDistributeGoodsResult";
 
         String appSecret = "Qrgx3tn2tGqdIkvwIK0rcdckdYDG3caF";
 
@@ -10675,6 +10688,218 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         return new AjaxResult(200, "保存成功");
     }
 
+    @Override
+    public AjaxResult importLibraryInformationV1(MultipartFile file, Long fWarehouseid, Long billId, LoginUser loginUser) {
+        List<TWarehousebillsitems> itemList = new ArrayList<>();
+        InputStream inputStream = null;
+        TWarehouse tWarehouseZ = tWarehouseMapper.selectTWarehouseById(fWarehouseid);
+        try {
+            inputStream = file.getInputStream();
+            String originalFilename = file.getOriginalFilename();
+            Workbook workbook = null;
+            if (originalFilename.endsWith("xls")) {
+                workbook = WorkbookFactory.create(inputStream);
+            } else if (originalFilename.endsWith("xlsx")) {
+                workbook = new XSSFWorkbook(inputStream);
+            } else {
+                return AjaxResult.error("文件后缀异常");
+            }
+            Sheet sheet = workbook.getSheetAt(0);
+            int line = 0;
+            for (Row rows : sheet) {
+                line++;
+                if (rows.getRowNum() == 0) {
+                    continue;
+                }
+                System.out.println("*****" + rows.getPhysicalNumberOfCells());
+                TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems();
+                for (int a = 0; a <= rows.getPhysicalNumberOfCells(); a++) {
+                    System.out.println("============" + rows.getCell(a));
+                    if (StringUtils.isNull(rows.getCell(a))) {
+                        continue;
+                    }
+                    Cell cell = rows.getCell(a);
+                    String value = filter(sheet.getRow(0), CellReference.convertNumToColString(cell.getColumnIndex()));
+                    switch (value) {
+                        case "货物名称":
+                            // 设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                TGoods tGoods = tGoodsMapper.getGoodsByName(cell.getStringCellValue());
+                                if (ObjectUtils.isNotNull(tGoods)) {
+                                    warehousebillsitems.setfGoodsid(tGoods.getfId());
+                                }
+                            }
+                            break;
+                        case "备案序号":
+                            // 设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                warehousebillsitems.setfBusinessType(5L);
+                                warehousebillsitems.setfMarks(cell.getStringCellValue());
+                            }
+                            break;
+                        case "件数":
+                            //设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                warehousebillsitems.setfPlanqty(Long.valueOf(cell.getStringCellValue()));
+                            }
+                            break;
+                        case "毛重":
+                            //设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                warehousebillsitems.setfPlangrossweight(new BigDecimal(cell.getStringCellValue()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                            }
+                            break;
+                        case "净重":
+                            //设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                warehousebillsitems.setfPlannetweight(new BigDecimal(cell.getStringCellValue()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                            }
+                            break;
+                        case "入库日期":
+                            //设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                                Date date = sdf.parse(cell.getStringCellValue());
+                                warehousebillsitems.setfBsdate(date);
+                            }
+                            break;
+                      /*  case "仓库":
+                            // 设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                    warehousebillsitems.setfWarehouseInformation(cell.getStringCellValue());
+                            }
+                            break;*/
+                        case "库位":
+                            // 设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue()) && ObjectUtils.isNotNull(fWarehouseid)) {
+                                TWarehouse tWarehouse = tWarehouseMapper.selectByPidANDName(cell.getStringCellValue(), fWarehouseid);
+                                if (ObjectUtils.isNotNull(tWarehouse)) {
+//                                    if (ObjectUtils.isNotNull(tWarehouse.getAncestors())) {
+//                                        String[] arrs = tWarehouse.getAncestors().split(",");
+//                                        String text = "";
+//                                        for (String arr : arrs) {
+//                                            tWarehouseMapper.selectTWarehouseById();
+//                                        }
+//                                    }
+                                    warehousebillsitems.setfWarehouselocid(tWarehouse.getfId());
+                                    warehousebillsitems.setfWarehouseInformation(tWarehouseZ.getfName() + "/" + tWarehouse.getfName());
+                                } else {
+                                    warehousebillsitems.setfWarehouselocid(null);
+                                    warehousebillsitems.setfWarehouseInformation(null);
+                                }
+                            }
+                            break;
+                        case "规格":
+                            //设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                warehousebillsitems.setfPackagespecs(cell.getStringCellValue());
+                            }
+                            break;
+                        case "批次号":
+                            //设置单元格类型
+                            cell.setCellType(CellType.STRING);
+                            if (StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                warehousebillsitems.setfLocalcntrno(cell.getStringCellValue());
+                            }
+                            break;
+                    }
+                }
+                if (warehousebillsitems.getfGoodsid() != null) {
+                    itemList.add(warehousebillsitems);
+                }
+            }
+        } catch (IOException e) {
+            return AjaxResult.error("上传文件失败,请检查文件是否损坏");
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        StringBuilder errinfo = new StringBuilder();
+        int line = 1;
+        for (TWarehousebillsitems li : itemList) {
+            if (ObjectUtil.isEmpty(li.getfBusinessType())) {
+                errinfo.append("第").append(line).append("行备案序号为空,");
+            }
+            if (li.getfGoodsid() == null) {
+                errinfo.append("第").append(line).append("行货物名称为空,");
+            }
+            if (li.getfWarehouselocid() == null) {
+                errinfo.append("第").append(line).append("行库位为空,");
+            }
+            if (StringUtils.isNull(li.getfPlanqty())) {
+                errinfo.append("第").append(line).append("行预计件数为空,");
+            } else {
+                li.setfQty(li.getfPlanqty());
+            }
+            if (StringUtils.isNull(li.getfPlangrossweight())) {
+                errinfo.append("第").append(line).append("行预计毛重为空,");
+            } else {
+                li.setfGrossweight(li.getfPlangrossweight());
+            }
+            if (StringUtils.isNull(li.getfPlannetweight())) {
+                errinfo.append("第").append(line).append("行预计净重为空,");
+            } else {
+                li.setfNetweight(li.getfPlannetweight());
+            }
+            line++;
+        }
+        if (StringUtils.isEmpty(errinfo.toString())) {
+            TWarehouseBills warehouseBills = warehouseBillsMapper.selectTWarehousebillsById(billId);
+            Date mixDate = new Date();
+            if (CollectionUtils.isNotEmpty(itemList)) {
+                Date minDate = itemList.get(0).getfBsdate();
+                for (int i = 0; i < itemList.size(); i++) {
+                    Date date = itemList.get(i).getfBsdate();
+                    if (minDate.after(date)) {
+                        minDate = date;
+                    }
+                }
+                mixDate = minDate;
+            }
+            String billsType = "SJRK";
+            for (TWarehousebillsitems wbItem : itemList) {
+                // 仓储计费日期
+                wbItem.setfBilltype(billsType);
+                if (!this.getFchargedate(billId, wbItem.getfBsdate())) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("入库日期不能小于最小仓储费计算日期");
+                }
+                if ("1".equals(warehouseBills.getfChargetype())) {
+                    wbItem.setfChargedate(wbItem.getfBsdate());
+                } else if ("0".equals(warehouseBills.getfChargetype())) {
+                    Date fchargedate = tWarehousebillsitemsMapper.getFchargedate(billId);
+                    if (fchargedate != null) {
+                        wbItem.setfChargedate(fchargedate);
+                    } else {
+                        wbItem.setfChargedate(mixDate);
+                    }
+                }
+                wbItem.setfBillingway(warehouseBills.getfBillingway());
+                wbItem.setfMblno(warehouseBills.getfMblno());// 入库更新库存前执行update更新明细的提单号等于主表的提单号
+                TWarehouse tWarehouse1 = tWarehouseMapper.selectTWarehouseById(wbItem.getfWarehouselocid());
+                wbItem.setfWarehouseInformation(tWarehouseZ.getfName() + "/" + tWarehouse1.getfName());
+                // 添加主表 业务单号
+                wbItem.setfBillno(warehouseBills.getfBillno());
+                wbItem.setfBillstatus(10L);
+                wbItem.setfPid(billId);
+                wbItem.setCreateBy(loginUser.getUser().getUserName());
+                wbItem.setCreateTime(new Date());
+                tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
+            }
+            return AjaxResult.success(itemList);
+        } else {
+            return AjaxResult.success(errinfo.toString(), itemList);
+        }
+    }
+
     /**
      * RSA 签名
      *

+ 10 - 3
ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

@@ -54,6 +54,7 @@
         <result property="unlockTime" column="unlock_time"/>
         <result property="wrNumber" column="wr_number"/>
         <result property="checklists" column="checklists"/>
+        <result property="fWarehouseInformation" column="f_warehouse_information"/>
     </resultMap>
 
     <resultMap type="CalculateStorageFeesInfoVO" id="StorageFeesInfoResult">
@@ -103,7 +104,7 @@
          f_pregrossweight, f_warehouseid, f_prenetweight, f_bsdate, f_chargedate, f_volumnD, f_qtyD, f_billingway, f_grossweightD, f_netweightD, f_volumnC,
           f_qtyC, f_grossweightC, f_qtyblc, f_grossweightblc, f_netweightC, f_netweightblc, f_cntrno, f_status, del_flag, f_marks, create_by,
            create_time, update_by, f_volumnblc, update_time, remark, f_business_type, f_originalbilldate, f_localcntrno,f_customno,f_ems_seq_no,
-               lock_status, belong_to, lock_time, unlock_time, wr_number,checklists from t_whgenleg
+               lock_status, belong_to, lock_time, unlock_time, wr_number,checklists,f_warehouse_information from t_whgenleg
     </sql>
 
     <select id="selectTWhgenlegList" parameterType="TWhgenleg" resultMap="TWhgenlegResult">
@@ -255,6 +256,7 @@
             <if test="unlockTime != null">unlock_time,</if>
             <if test="wrNumber != null">wr_number,</if>
             <if test="checklists != null">checklists,</if>
+            <if test="fWarehouseInformation != null">f_warehouse_information,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="fAccyear != null">#{fAccyear},</if>
@@ -304,6 +306,7 @@
             <if test="unlockTime != null">#{unlockTime},</if>
             <if test="wrNumber != null">#{wrNumber},</if>
             <if test="checklists != null">#{checklists},</if>
+            <if test="fWarehouseInformation != null">#{fWarehouseInformation},</if>
         </trim>
     </insert>
 
@@ -357,6 +360,7 @@
             <if test="unlockTime != null">unlock_time = #{unlockTime},</if>
             <if test="wrNumber != null">wr_number = #{wrNumber},</if>
             <if test="checklists != null and checklists != ''">checklists = #{checklists},</if>
+            <if test="fWarehouseInformation != null and fWarehouseInformation != ''">f_warehouse_information = #{fWarehouseInformation},</if>
         </trim>
         where f_id = #{fId}
     </update>
@@ -752,7 +756,8 @@
             leg.f_warehouseid AS fWarehouseId,
             DATE_FORMAT( leg.create_time, '%Y-%m-%d' ) AS createTime,
             DATE_FORMAT( leg.f_originalbilldate, '%Y-%m-%d' ) AS fOriginalbilldate,
-            leg.f_cntrno AS fCntrno
+            leg.f_cntrno AS fCntrno,
+            leg.f_warehouse_information AS fWarehouseInformation
         FROM
             t_whgenleg leg
             left join sys_user u on leg.create_by = u.user_name
@@ -858,7 +863,8 @@
         leg.belong_to As belongTo,
         leg.lock_time As lockTime,
         leg.unlock_time As unlockTime,
-        leg.wr_number As wrNumber
+        leg.wr_number As wrNumber,
+        leg.f_warehouse_information as fWarehouseInformation
 
         FROM
             t_whgenleg leg
@@ -877,6 +883,7 @@
             dict.status = '0'
             AND dict1.status = '0'
             AND leg.f_qtyD != 0
+            and leg.del_flag = '0'
             <if test="isMblno != null and isMblno == 0 ">
                 AND leg.f_qtyblc != 0
                 AND leg.f_grossweightblc != 0