Browse Source

Merge remote-tracking branch 'origin/master'

24282 2 years ago
parent
commit
30d21d7f70
27 changed files with 456 additions and 70 deletions
  1. 1 0
      hx-account/src/main/java/com/fjhx/account/entity/account/enums/AccountRequestFundsStatusEnum.java
  2. 47 0
      hx-account/src/main/java/com/fjhx/account/entity/account/enums/PaymentStatusEnum.java
  3. 47 0
      hx-account/src/main/java/com/fjhx/account/entity/account/enums/PaymentTypeEnum.java
  4. 27 2
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountPayment.java
  5. 36 1
      hx-account/src/main/java/com/fjhx/account/flow/AccountRequestFundsFlow.java
  6. 2 2
      hx-account/src/main/java/com/fjhx/account/service/account/AccountRemainderService.java
  7. 2 2
      hx-account/src/main/java/com/fjhx/account/service/account/AccountRunningWaterService.java
  8. 10 1
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountManagementServiceImpl.java
  9. 11 5
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java
  10. 11 3
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRemainderServiceImpl.java
  11. 11 6
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java
  12. 27 25
      hx-account/src/main/resources/mapper/account/AccountPaymentMapper.xml
  13. 1 1
      hx-account/src/main/resources/mapper/account/AccountRequestFundsMapper.xml
  14. 9 0
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java
  15. 14 1
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductSpuServiceImpl.java
  16. 2 1
      hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml
  17. 3 4
      hx-item/src/main/resources/mapper/product/ProductSpuMapper.xml
  18. 7 0
      hx-oa/src/main/java/com/fjhx/oa/entity/schedule/dto/ScheduleInfoSelectDto.java
  19. 6 0
      hx-oa/src/main/java/com/fjhx/oa/service/schedule/impl/ScheduleInfoServiceImpl.java
  20. 3 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/Subscribe.java
  21. 3 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java
  22. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java
  23. 2 1
      hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml
  24. 29 0
      hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockController.java
  25. 3 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/Stock.java
  26. 21 6
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java
  27. 104 9
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

+ 1 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/enums/AccountRequestFundsStatusEnum.java

@@ -5,6 +5,7 @@ import org.apache.commons.collections4.MapUtils;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map;
 
 
+//请款审批状态
 public enum AccountRequestFundsStatusEnum {
 public enum AccountRequestFundsStatusEnum {
     UNDER_REVIEW("10", "审批中"),
     UNDER_REVIEW("10", "审批中"),
     REJECT("20", "驳回"),
     REJECT("20", "驳回"),

+ 47 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/enums/PaymentStatusEnum.java

@@ -0,0 +1,47 @@
+package com.fjhx.account.entity.account.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+//打款状态
+public enum PaymentStatusEnum {
+    UNDER_REVIEW("10", "未打款"),
+    REJECT("20", "已打款"),
+
+    ;
+    private String key;
+
+    private String value;
+
+    private static Map<String, String> map = new LinkedHashMap<>();
+
+    PaymentStatusEnum(String key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<String, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (PaymentStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+}

+ 47 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/enums/PaymentTypeEnum.java

@@ -0,0 +1,47 @@
+package com.fjhx.account.entity.account.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+//打款类型
+public enum PaymentTypeEnum {
+    UNDER_REVIEW("10", "请款"),
+    REJECT("20", "采购付款"),
+
+    ;
+    private String key;
+
+    private String value;
+
+    private static Map<String, String> map = new LinkedHashMap<>();
+
+    PaymentTypeEnum(String key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<String, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (PaymentTypeEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+}

+ 27 - 2
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountPayment.java

@@ -26,9 +26,19 @@ public class AccountPayment extends BasePo {
     private Long accountManagementId;
     private Long accountManagementId;
 
 
     /**
     /**
-     * 请款表ID
+     * 业务表ID
      */
      */
-    private Long accountRequestFundsId;
+    private Long businessId;
+
+    /**
+     * 归属部门ID
+     */
+    private Long departmentId;
+
+    /**
+     * 归属公司ID
+     */
+    private Long corporationId;
 
 
     /**
     /**
      * 打款时间
      * 打款时间
@@ -36,6 +46,11 @@ public class AccountPayment extends BasePo {
     private Date expensesTime;
     private Date expensesTime;
 
 
     /**
     /**
+     * 用款时间
+     */
+    private Date paymentTime;
+
+    /**
      * 币种(字典account_currency)
      * 币种(字典account_currency)
      */
      */
     private String currency;
     private String currency;
@@ -51,8 +66,18 @@ public class AccountPayment extends BasePo {
     private String status;
     private String status;
 
 
     /**
     /**
+     * 付款类型(10:请款  20 采购付款) 字典payment_type
+     */
+    private String type;
+
+    /**
      * 摘要
      * 摘要
      */
      */
     private String remark;
     private String remark;
 
 
+    /**
+     * 款项说明
+     */
+    private String paymentRemark;
+
 }
 }

+ 36 - 1
hx-account/src/main/java/com/fjhx/account/flow/AccountRequestFundsFlow.java

@@ -1,35 +1,48 @@
 package com.fjhx.account.flow;
 package com.fjhx.account.flow;
 
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.account.entity.account.dto.AccountPaymentDto;
 import com.fjhx.account.entity.account.dto.AccountRequestFundsDto;
 import com.fjhx.account.entity.account.dto.AccountRequestFundsDto;
 import com.fjhx.account.entity.account.enums.AccountRequestFundsStatusEnum;
 import com.fjhx.account.entity.account.enums.AccountRequestFundsStatusEnum;
+import com.fjhx.account.entity.account.enums.PaymentStatusEnum;
+import com.fjhx.account.entity.account.enums.PaymentTypeEnum;
+import com.fjhx.account.entity.account.po.AccountPayment;
 import com.fjhx.account.entity.account.po.AccountRequestFunds;
 import com.fjhx.account.entity.account.po.AccountRequestFunds;
 import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
 import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.fjhx.account.entity.account.vo.AccountPaymentVo;
+import com.fjhx.account.service.account.AccountPaymentService;
 import com.fjhx.account.service.account.AccountRequestFundsDetailService;
 import com.fjhx.account.service.account.AccountRequestFundsDetailService;
 import com.fjhx.account.service.account.AccountRequestFundsService;
 import com.fjhx.account.service.account.AccountRequestFundsService;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.core.FlowDelegate;
 import com.obs.services.internal.ServiceException;
 import com.obs.services.internal.ServiceException;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 import oshi.util.FileUtil;
 import oshi.util.FileUtil;
 
 
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
- * 采购流程
+ *  请款流程
  * @Author:caozj
  * @Author:caozj
  * @DATE:2023/4/3 17:38
  * @DATE:2023/4/3 17:38
  */
  */
 @DS(SourceConstant.ACCOUNT)
 @DS(SourceConstant.ACCOUNT)
 @Component
 @Component
 public class AccountRequestFundsFlow extends FlowDelegate {
 public class AccountRequestFundsFlow extends FlowDelegate {
+    @Autowired
+    private AccountPaymentService accountPaymentService;
 
 
     @Override
     @Override
     public String getFlowKey() {
     public String getFlowKey() {
@@ -45,12 +58,14 @@ public class AccountRequestFundsFlow extends FlowDelegate {
      */
      */
     @Override
     @Override
     public Long start(Long flowId, JSONObject submitData) {
     public Long start(Long flowId, JSONObject submitData) {
+//        DynamicDataSourceContextHolder.push(SourceConstant.ACCOUNT);
         AccountRequestFundsService accountRequestFundsService = SpringUtil.getBean(AccountRequestFundsService.class);
         AccountRequestFundsService accountRequestFundsService = SpringUtil.getBean(AccountRequestFundsService.class);
         AccountRequestFundsDetailService accountRequestFundsDetailService = SpringUtil.getBean(AccountRequestFundsDetailService.class);
         AccountRequestFundsDetailService accountRequestFundsDetailService = SpringUtil.getBean(AccountRequestFundsDetailService.class);
         AccountRequestFundsDto accountRequestFundsDto = submitData.toJavaObject( AccountRequestFundsDto.class);
         AccountRequestFundsDto accountRequestFundsDto = submitData.toJavaObject( AccountRequestFundsDto.class);
         accountRequestFundsDto.setStatus(AccountRequestFundsStatusEnum.UNDER_REVIEW.getKey());
         accountRequestFundsDto.setStatus(AccountRequestFundsStatusEnum.UNDER_REVIEW.getKey());
         //添加请款表的信息
         //添加请款表的信息
         accountRequestFundsService.save(accountRequestFundsDto);
         accountRequestFundsService.save(accountRequestFundsDto);
+
         //获取请款详情表的详细信息
         //获取请款详情表的详细信息
         List<AccountRequestFundsDetail> accountRequestFundsDetailList = accountRequestFundsDto.getAccountRequestFundsDetailList();
         List<AccountRequestFundsDetail> accountRequestFundsDetailList = accountRequestFundsDto.getAccountRequestFundsDetailList();
         if(CollectionUtils.isNotEmpty(accountRequestFundsDetailList)){
         if(CollectionUtils.isNotEmpty(accountRequestFundsDetailList)){
@@ -59,9 +74,14 @@ public class AccountRequestFundsFlow extends FlowDelegate {
             //添加请款详情表的信息
             //添加请款详情表的信息
             accountRequestFundsDetailService.saveBatch(accountRequestFundsDetailList);
             accountRequestFundsDetailService.saveBatch(accountRequestFundsDetailList);
         }
         }
+        //删除流程
+        ObsFileUtil.removeFile(accountRequestFundsDto.getId());
         //添加附件信息
         //添加附件信息
         ObsFileUtil.saveFile(accountRequestFundsDto.getFileList(),accountRequestFundsDto.getId());
         ObsFileUtil.saveFile(accountRequestFundsDto.getFileList(),accountRequestFundsDto.getId());
 
 
+
+        //添加打款的数据
+        addPayment(accountRequestFundsDto);
         return accountRequestFundsDto.getId();
         return accountRequestFundsDto.getId();
     }
     }
 
 
@@ -83,4 +103,19 @@ public class AccountRequestFundsFlow extends FlowDelegate {
         accountRequestFunds.setStatus(AccountRequestFundsStatusEnum.PASS.getKey());
         accountRequestFunds.setStatus(AccountRequestFundsStatusEnum.PASS.getKey());
         accountRequestFundsService.updateById(accountRequestFunds);
         accountRequestFundsService.updateById(accountRequestFunds);
     }
     }
+
+    /**
+     * 添加打款表的数据
+     */
+    private void addPayment(AccountRequestFundsDto accountRequestFundsDto){
+        AccountPaymentDto accountPayment = new AccountPaymentDto();
+        accountPayment.setBusinessId(accountRequestFundsDto.getId());
+        accountPayment.setType(PaymentTypeEnum.UNDER_REVIEW.getKey());
+        accountPayment.setStatus(PaymentStatusEnum.UNDER_REVIEW.getKey());
+        accountPayment.setPaymentTime(accountPayment.getPaymentTime());
+        accountPayment.setPaymentRemark(accountRequestFundsDto.getPaymentRemarks());
+        accountPayment.setDepartmentId(accountRequestFundsDto.getDepartmentId());
+        accountPayment.setCorporationId(accountRequestFundsDto.getCorporationId());
+        accountPaymentService.save(accountPayment);
+    }
 }
 }

+ 2 - 2
hx-account/src/main/java/com/fjhx/account/service/account/AccountRemainderService.java

@@ -13,7 +13,7 @@ import com.fjhx.account.entity.account.dto.AccountRemainderDto;
  * 账户-余额表 服务类
  * 账户-余额表 服务类
  * </p>
  * </p>
  *
  *
- * @author 
+ * @author
  * @since 2023-04-06
  * @since 2023-04-06
  */
  */
 public interface AccountRemainderService extends BaseService<AccountRemainder> {
 public interface AccountRemainderService extends BaseService<AccountRemainder> {
@@ -31,7 +31,7 @@ public interface AccountRemainderService extends BaseService<AccountRemainder> {
     /**
     /**
      * 账户-余额表新增
      * 账户-余额表新增
      */
      */
-    void add(AccountRemainderDto accountRemainderDto);
+    void add(AccountRemainder accountRemainderDto);
 
 
     /**
     /**
      * 账户-余额表编辑
      * 账户-余额表编辑

+ 2 - 2
hx-account/src/main/java/com/fjhx/account/service/account/AccountRunningWaterService.java

@@ -13,7 +13,7 @@ import com.fjhx.account.entity.account.dto.AccountRunningWaterDto;
  * 账户资金流水表 服务类
  * 账户资金流水表 服务类
  * </p>
  * </p>
  *
  *
- * @author 
+ * @author
  * @since 2023-04-06
  * @since 2023-04-06
  */
  */
 public interface AccountRunningWaterService extends BaseService<AccountRunningWater> {
 public interface AccountRunningWaterService extends BaseService<AccountRunningWater> {
@@ -36,7 +36,7 @@ public interface AccountRunningWaterService extends BaseService<AccountRunningWa
     /**
     /**
      * 账户资金流水表编辑
      * 账户资金流水表编辑
      */
      */
-    void edit(AccountRunningWaterDto accountRunningWaterDto);
+    void edit(AccountRunningWater accountRunningWater);
 
 
     /**
     /**
      * 账户资金流水表删除
      * 账户资金流水表删除

+ 10 - 1
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountManagementServiceImpl.java

@@ -84,6 +84,7 @@ public class AccountManagementServiceImpl extends ServiceImpl<AccountManagementM
         }
         }
         //添加账户管理表的信息
         //添加账户管理表的信息
         this.save(accountManagementDto);
         this.save(accountManagementDto);
+        //添加账户-余额表的信息
         saveAccountRemainder(accountManagementDto);
         saveAccountRemainder(accountManagementDto);
     }
     }
 
 
@@ -92,6 +93,13 @@ public class AccountManagementServiceImpl extends ServiceImpl<AccountManagementM
      */
      */
     @Override
     @Override
     public void edit(AccountManagementDto accountManagementDto) {
     public void edit(AccountManagementDto accountManagementDto) {
+        //判断账户的别名是否已存在
+        List<AccountManagement> accountManagements = this.list(Wrappers.<AccountManagement>lambdaQuery()
+                .eq(AccountManagement::getAlias, accountManagementDto.getAlias()));
+        if (accountManagements.size()>0){
+            throw new ServiceException("数据错误:账户别名已存在请重新创建");
+        }
+
         this.updateById(accountManagementDto);
         this.updateById(accountManagementDto);
         //删除账户-余额表的信息
         //删除账户-余额表的信息
         accountRemainderService.remove(Wrappers.<AccountRemainder>lambdaQuery()
         accountRemainderService.remove(Wrappers.<AccountRemainder>lambdaQuery()
@@ -120,7 +128,8 @@ public class AccountManagementServiceImpl extends ServiceImpl<AccountManagementM
         List<AccountRemainder> accountRemainderList = accountManagementDto.getAccountRemainderList();
         List<AccountRemainder> accountRemainderList = accountManagementDto.getAccountRemainderList();
         accountRemainderList.forEach(accountRemainder -> {
         accountRemainderList.forEach(accountRemainder -> {
             accountRemainder.setAccountManagementId(accountManagementDto.getId());
             accountRemainder.setAccountManagementId(accountManagementDto.getId());
+            accountRemainderService.add(accountRemainder);
         });
         });
-        accountRemainderService.saveBatch(accountRemainderList);
+
     }
     }
 }
 }

+ 11 - 5
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java

@@ -62,11 +62,9 @@ public class AccountPaymentServiceImpl extends ServiceImpl<AccountPaymentMapper,
     @Override
     @Override
     public Page<AccountRequestFundsVo> getPage(AccountRequestFundsSelectDto dto) {
     public Page<AccountRequestFundsVo> getPage(AccountRequestFundsSelectDto dto) {
         QueryWrapper<Object> wrapper = Wrappers.query();
         QueryWrapper<Object> wrapper = Wrappers.query();
-        wrapper.eq(ObjectUtil.isNotEmpty(dto.getType()),"arf.type",dto.getType());
-        wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()),"arf.status",dto.getStatus());
         wrapper.eq(ObjectUtil.isNotEmpty(dto.getPaymentStatus()),"ap.status",dto.getPaymentStatus());
         wrapper.eq(ObjectUtil.isNotEmpty(dto.getPaymentStatus()),"ap.status",dto.getPaymentStatus());
-        wrapper.like(ObjectUtil.isNotEmpty(dto.getKeyword()),"arf.payment_remarks",dto.getKeyword());
-        wrapper.orderByDesc("ap.status","arf.payment_time","arf.create_time");
+        wrapper.like(ObjectUtil.isNotEmpty(dto.getKeyword()),"ap.payment_remarks",dto.getKeyword());
+        wrapper.orderByDesc("ap.status","ap.payment_time","ap.create_time");
         Page<AccountRequestFundsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         Page<AccountRequestFundsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
 
 
         //切换数据源
         //切换数据源
@@ -132,7 +130,15 @@ public class AccountPaymentServiceImpl extends ServiceImpl<AccountPaymentMapper,
         if (accountRemainder.getRemainder().compareTo(accountPaymentDto.getAmount()) == -1){
         if (accountRemainder.getRemainder().compareTo(accountPaymentDto.getAmount()) == -1){
             throw new ServiceException("账户余额不足");
             throw new ServiceException("账户余额不足");
         }
         }
-        this.save(accountPaymentDto);
+
+        if (ObjectUtil.isNotEmpty(accountPaymentDto.getId())){
+            this.save(accountPaymentDto);
+        }else {
+            this.updateById(accountPaymentDto);
+        }
+
+        //删除附件
+        ObsFileUtil.removeFile(accountPaymentDto.getId());
 
 
         //添加附件信息
         //添加附件信息
         ObsFileUtil.saveFile(accountPaymentDto.getFileList(),accountPaymentDto.getId());
         ObsFileUtil.saveFile(accountPaymentDto.getFileList(),accountPaymentDto.getId());

+ 11 - 3
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRemainderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fjhx.account.service.account.impl;
 package com.fjhx.account.service.account.impl;
 
 
+import cn.hutool.core.util.ObjectUtil;
 import com.fjhx.account.entity.account.po.AccountRemainder;
 import com.fjhx.account.entity.account.po.AccountRemainder;
 import com.fjhx.account.mapper.account.AccountRemainderMapper;
 import com.fjhx.account.mapper.account.AccountRemainderMapper;
 import com.fjhx.account.service.account.AccountRemainderService;
 import com.fjhx.account.service.account.AccountRemainderService;
@@ -18,7 +19,7 @@ import cn.hutool.core.bean.BeanUtil;
  * 账户-余额表 服务实现类
  * 账户-余额表 服务实现类
  * </p>
  * </p>
  *
  *
- * @author 
+ * @author
  * @since 2023-04-06
  * @since 2023-04-06
  */
  */
 @Service
 @Service
@@ -40,8 +41,15 @@ public class AccountRemainderServiceImpl extends ServiceImpl<AccountRemainderMap
     }
     }
 
 
     @Override
     @Override
-    public void add(AccountRemainderDto accountRemainderDto) {
-        this.save(accountRemainderDto);
+    public void add(AccountRemainder accountRemainderDto) {
+        synchronized (this){
+            if (ObjectUtil.isNotEmpty(accountRemainderDto.getId())){
+                this.updateById(accountRemainderDto);
+            }else {
+                this.save(accountRemainderDto);
+            }
+        }
+
     }
     }
 
 
     @Override
     @Override

+ 11 - 6
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java

@@ -31,11 +31,11 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
     @Override
     @Override
     public Page<AccountRunningWaterVo> getPage(AccountRunningWaterSelectDto dto) {
     public Page<AccountRunningWaterVo> getPage(AccountRunningWaterSelectDto dto) {
         QueryWrapper<Object> wrapper = Wrappers.query();
         QueryWrapper<Object> wrapper = Wrappers.query();
-        wrapper.eq(ObjectUtil.isNotEmpty(dto.getAccountManagementId()),"arw.account_management_id",dto.getAccountManagementId());
-        wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()),"arw.status",dto.getStatus());
-        wrapper.eq(ObjectUtil.isNotEmpty(dto.getCurrency()),"arw.currency",dto.getCurrency());
-        if (StringUtils.isNotEmpty(dto.getKeyword())){
-            wrapper.and(wrapper1 -> wrapper1.like("arw.remarks",dto.getKeyword()).or().like("am.name",dto.getKeyword()));
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getAccountManagementId()), "arw.account_management_id", dto.getAccountManagementId());
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()), "arw.status", dto.getStatus());
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getCurrency()), "arw.currency", dto.getCurrency());
+        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+            wrapper.and(wrapper1 -> wrapper1.like("arw.remarks", dto.getKeyword()).or().like("am.name", dto.getKeyword()));
         }
         }
         Page<AccountRunningWaterVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         Page<AccountRunningWaterVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         return page;
         return page;
@@ -52,8 +52,13 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
         this.save(accountRunningWaterDto);
         this.save(accountRunningWaterDto);
     }
     }
 
 
+    /**
+     * 修改余额表的信息
+     *
+     * @param accountRunningWaterDto
+     */
     @Override
     @Override
-    public void edit(AccountRunningWaterDto accountRunningWaterDto) {
+    public void edit(AccountRunningWater accountRunningWaterDto) {
         this.updateById(accountRunningWaterDto);
         this.updateById(accountRunningWaterDto);
     }
     }
 
 

+ 27 - 25
hx-account/src/main/resources/mapper/account/AccountPaymentMapper.xml

@@ -3,47 +3,49 @@
 <mapper namespace="com.fjhx.account.mapper.account.AccountPaymentMapper">
 <mapper namespace="com.fjhx.account.mapper.account.AccountPaymentMapper">
     <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountRequestFundsVo">
     <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountRequestFundsVo">
         select
         select
-            arf.id,
-            arf.department_id,
-            arf.corporation_id,
-            arf.account_management_id,
-            arf.payment_time,
-            arf.payment_remarks,
-            arf.currency,
-            arf.status,
-            arf.type,
-            arf.total,
-            arf.quantity,
-            arf.payment_method,
-            arf.name,
-            arf.opening_bank,
-            arf.account_opening,
-            arf.interbank_number,
-            arf.remarks,
-            arf.create_user,
-            arf.create_time,
-            arf.update_user,
-            arf.update_time,
-            ap.`status` accountPaymentStatus,
-            ap.amount accountPaymentAmount
-        from account_request_funds arf
-                 left join account_payment ap on arf.id = ap.account_request_funds_id
+            ap.id,
+            ap.tenant_id,
+            ap.payment_remark,
+            ap.account_management_id,
+            ap.department_id,
+            ap.corporation_id,
+            ap.business_id,
+            ap.expenses_time,
+            ap.payment_time,
+            ap.currency,
+            ap.amount,
+            ap.status,
+            ap.type,
+            ap.remark,
+            ap.create_user,
+            ap.create_time,
+            ap.update_user,
+            ap.update_time
+        from account_payment ap
             ${ew.customSqlSegment}
             ${ew.customSqlSegment}
     </select>
     </select>
     <select id="detail" resultType="com.fjhx.account.entity.account.po.AccountPayment">
     <select id="detail" resultType="com.fjhx.account.entity.account.po.AccountPayment">
         select
         select
             ap.id,
             ap.id,
+            ap.tenant_id,
             ap.account_management_id,
             ap.account_management_id,
+            ap.department_id,
+            ap.corporation_id,
+            ap.business_id,
             ap.expenses_time,
             ap.expenses_time,
             ap.currency,
             ap.currency,
+            ap.payment_time,
             ap.amount,
             ap.amount,
             ap.status,
             ap.status,
+            ap.type,
             ap.remark,
             ap.remark,
             ap.create_user,
             ap.create_user,
             ap.create_time,
             ap.create_time,
             ap.update_user,
             ap.update_user,
+            ap.payment_remark,
             ap.update_time
             ap.update_time
         from account_payment ap
         from account_payment ap
+           ap.id = #{id}
     </select>
     </select>
 
 
 </mapper>
 </mapper>

+ 1 - 1
hx-account/src/main/resources/mapper/account/AccountRequestFundsMapper.xml

@@ -26,7 +26,7 @@
             arf.update_time,
             arf.update_time,
             ap.`status` accountPaymentStatus
             ap.`status` accountPaymentStatus
         from account_request_funds arf
         from account_request_funds arf
-                 left join account_payment ap on arf.id = ap.account_request_funds_id
+                 left join account_payment ap on arf.id = ap.business_id
             ${ew.customSqlSegment}
             ${ew.customSqlSegment}
     </select>
     </select>
 
 

+ 9 - 0
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.constant.SourceConstant;
@@ -20,6 +21,7 @@ import com.fjhx.item.util.CodeEnum;
 import com.fjhx.item.util.excel.util.ExcelUtil;
 import com.fjhx.item.util.excel.util.ExcelUtil;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysDeptService;
@@ -109,7 +111,9 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
 
 
         IWrapper<SysDept> wrapper1 = IWrapper.getWrapper();
         IWrapper<SysDept> wrapper1 = IWrapper.getWrapper();
         wrapper1.in(SysDept::getDeptId, ids);
         wrapper1.in(SysDept::getDeptId, ids);
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
         List<SysDept> sysDepts = sysDeptService.list(wrapper1);
         List<SysDept> sysDepts = sysDeptService.list(wrapper1);
+        DynamicDataSourceContextHolder.poll();
         Map<Long, String> sysDeptMap = sysDepts.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
         Map<Long, String> sysDeptMap = sysDepts.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
 
 
         for (ProductInfoVo record : records) {
         for (ProductInfoVo record : records) {
@@ -143,6 +147,11 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), "产品名称重复");
         this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), "产品名称重复");
         this.save(productInfoDto);
         this.save(productInfoDto);
         ObsFileUtil.saveFile(productInfoDto.getFileList(), productInfoDto.getId());
         ObsFileUtil.saveFile(productInfoDto.getFileList(), productInfoDto.getId());
+        //处理维多利亚扩展
+        String victoriatouristJson = productInfoDto.getVictoriatouristJson();
+        JSONObject json = JSONObject.parseObject(victoriatouristJson);
+        json.put("deptId", SecurityUtils.getDeptId());
+        productInfoDto.setVictoriatouristJson(json.toJSONString());
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)

+ 14 - 1
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductSpuServiceImpl.java

@@ -44,6 +44,13 @@ public class ProductSpuServiceImpl extends ServiceImpl<ProductSpuMapper, Product
     public Page<ProductSpuVo> getPage(ProductSpuSelectDto dto) {
     public Page<ProductSpuVo> getPage(ProductSpuSelectDto dto) {
         IWrapper<ProductSpu> wrapper = getWrapper();
         IWrapper<ProductSpu> wrapper = getWrapper();
         wrapper.orderByDesc("ps", ProductSpu::getId);
         wrapper.orderByDesc("ps", ProductSpu::getId);
+        if(ObjectUtil.isNotEmpty(dto.getKeyword())){
+            wrapper.and(q->q.like("ps",ProductSpu::getCode,dto.getKeyword()))
+                    .or().like("ps",ProductSpu::getName,dto.getKeyword())
+                    .or().like("ps",ProductSpu::getRemark,dto.getKeyword())
+            ;
+        }
+        wrapper.groupBy("ps.id");
         Page<ProductSpuVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         Page<ProductSpuVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         return page;
         return page;
     }
     }
@@ -74,12 +81,18 @@ public class ProductSpuServiceImpl extends ServiceImpl<ProductSpuMapper, Product
         this.updateById(productSpuDto);
         this.updateById(productSpuDto);
         List<ProductInfo> productInfos = productSpuDto.getProductInfos();
         List<ProductInfo> productInfos = productSpuDto.getProductInfos();
         if(ObjectUtil.isNotEmpty(productInfos)){
         if(ObjectUtil.isNotEmpty(productInfos)){
+            //移除被删除的条目
             List<Long> productIds = productInfos.stream().map(ProductInfo::getId).collect(Collectors.toList());
             List<Long> productIds = productInfos.stream().map(ProductInfo::getId).collect(Collectors.toList());
             List<ProductInfo> productInfos1 = productInfoService.list(q->q.notIn(ProductInfo::getId,productIds));
             List<ProductInfo> productInfos1 = productInfoService.list(q->q.notIn(ProductInfo::getId,productIds));
             for (ProductInfo productInfo :productInfos1){
             for (ProductInfo productInfo :productInfos1){
-                productInfo.setProductSpuId(null);
+                productInfo.setProductSpuId(-1l);
             }
             }
             productInfoService.updateBatchById(productInfos1);
             productInfoService.updateBatchById(productInfos1);
+            //添加新条目
+            for (ProductInfo productInfo :productInfos){
+                productInfo.setProductSpuId(productSpuDto.getId());
+            }
+            productInfoService.updateBatchById(productInfos);
         }
         }
     }
     }
 
 

+ 2 - 1
hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml

@@ -14,7 +14,8 @@
                pi.create_user,
                pi.create_user,
                pi.create_time,
                pi.create_time,
                pi.update_user,
                pi.update_user,
-               pi.update_time
+               pi.update_time,
+               pi.victoriatourist_json
         from product_info pi
         from product_info pi
             ${ew.customSqlSegment}
             ${ew.customSqlSegment}
     </select>
     </select>

+ 3 - 4
hx-item/src/main/resources/mapper/product/ProductSpuMapper.xml

@@ -4,18 +4,17 @@
     <select id="getPage" resultType="com.fjhx.item.entity.product.vo.ProductSpuVo">
     <select id="getPage" resultType="com.fjhx.item.entity.product.vo.ProductSpuVo">
         SELECT
         SELECT
             ps.id,
             ps.id,
-            ps.CODE,
-            ps.NAME,
+            ps.`code`,
+            ps.`name`,
             ps.remark,
             ps.remark,
             ps.create_user,
             ps.create_user,
             ps.create_time,
             ps.create_time,
             ps.update_user,
             ps.update_user,
             ps.update_time,
             ps.update_time,
-            count( pi.id ) AS count
+            count( pi.id ) AS `count`
         FROM
         FROM
             product_spu ps
             product_spu ps
             left JOIN product_info pi ON pi.product_spu_id = ps.id
             left JOIN product_info pi ON pi.product_spu_id = ps.id
-        GROUP BY ps.id
             ${ew.customSqlSegment}
             ${ew.customSqlSegment}
     </select>
     </select>
 
 

+ 7 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/schedule/dto/ScheduleInfoSelectDto.java

@@ -1,9 +1,12 @@
 package com.fjhx.oa.entity.schedule.dto;
 package com.fjhx.oa.entity.schedule.dto;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
 
 
+import java.util.Date;
+
 /**
 /**
  * 日程信息表列表查询入参实体
  * 日程信息表列表查询入参实体
  *
  *
@@ -14,4 +17,8 @@ import lombok.Setter;
 @Setter
 @Setter
 public class ScheduleInfoSelectDto extends BaseSelectDto {
 public class ScheduleInfoSelectDto extends BaseSelectDto {
 
 
+    /**按月份过滤*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    private Date date;
+
 }
 }

+ 6 - 0
hx-oa/src/main/java/com/fjhx/oa/service/schedule/impl/ScheduleInfoServiceImpl.java

@@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -38,6 +39,8 @@ import java.util.stream.Collectors;
 @DS(SourceConstant.OA)
 @DS(SourceConstant.OA)
 @Service
 @Service
 public class ScheduleInfoServiceImpl extends ServiceImpl<ScheduleInfoMapper, ScheduleInfo> implements ScheduleInfoService {
 public class ScheduleInfoServiceImpl extends ServiceImpl<ScheduleInfoMapper, ScheduleInfo> implements ScheduleInfoService {
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
     @Autowired
     @Autowired
     ScheduleDetailsService scheduleDetailsService;
     ScheduleDetailsService scheduleDetailsService;
 
 
@@ -45,6 +48,9 @@ public class ScheduleInfoServiceImpl extends ServiceImpl<ScheduleInfoMapper, Sch
     public Page<ScheduleInfoVo> getPage(ScheduleInfoSelectDto dto) {
     public Page<ScheduleInfoVo> getPage(ScheduleInfoSelectDto dto) {
         IWrapper<ScheduleInfo> wrapper = getWrapper();
         IWrapper<ScheduleInfo> wrapper = getWrapper();
         wrapper.orderByDesc("si", ScheduleInfo::getId);
         wrapper.orderByDesc("si", ScheduleInfo::getId);
+        if(ObjectUtil.isNotEmpty(dto.getDate())) {
+            wrapper.apply("date_format(si.start_date,'%Y-%m') = date_format('" + sdf.format(dto.getDate()) + "','%Y-%m')");
+        }
         Page<ScheduleInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         Page<ScheduleInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         return page;
         return page;
     }
     }

+ 3 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/Subscribe.java

@@ -74,4 +74,7 @@ public class Subscribe extends BasePo {
     @TableField(exist = false)
     @TableField(exist = false)
     private List<SubscribeDetail> subscribeDetailList;
     private List<SubscribeDetail> subscribeDetailList;
 
 
+    /**维多利亚扩展json*/
+    private String victoriatouristJson;
+
 }
 }

+ 3 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java

@@ -45,4 +45,7 @@ public class SubscribeDetailVo extends SubscribeDetail {
      * 采购数量
      * 采购数量
      */
      */
     private String purchaseCount;
     private String purchaseCount;
+
+    /**维多利亚扩展json*/
+    private String victoriatouristJson;
 }
 }

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.purchase.service.subscribe.impl;
 package com.fjhx.purchase.service.subscribe.impl;
 
 
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -15,6 +16,8 @@ import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.purchase.util.code.CodeEnum;
 import com.fjhx.purchase.util.code.CodeEnum;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
+import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
 import com.obs.services.internal.ServiceException;
 import io.seata.spring.annotation.GlobalTransactional;
 import io.seata.spring.annotation.GlobalTransactional;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.collections4.MapUtils;
@@ -50,6 +53,9 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
     @Autowired
     @Autowired
     private ProductInfoService productInfoService;
     private ProductInfoService productInfoService;
 
 
+    @Autowired
+    WarehouseService warehouseService;
+
     @Override
     @Override
     public Page<SubscribeVo> getPage(SubscribeSelectDto dto) {
     public Page<SubscribeVo> getPage(SubscribeSelectDto dto) {
         IWrapper<Subscribe> wrapper = getWrapper();
         IWrapper<Subscribe> wrapper = getWrapper();
@@ -93,6 +99,17 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
             }
             }
         }
         }
         subscribe.setSubscribeDetailList(subscribeDetailList);
         subscribe.setSubscribeDetailList(subscribeDetailList);
+        //赋值维多利亚扩展收货仓库名
+        String victoriatouristJson = subscribe.getVictoriatouristJson();
+        if(ObjectUtils.isNotEmpty(victoriatouristJson)){
+            JSONObject json = JSONObject.parseObject(victoriatouristJson);
+            Long receiptWarehouseId = json.getLong("receiptWarehouseId");
+            Warehouse warehouse = warehouseService.getById(receiptWarehouseId);
+            if(ObjectUtils.isNotEmpty(victoriatouristJson)) {
+                json.put("receiptWarehouseName",warehouse.getName());
+                subscribe.setVictoriatouristJson(json.toJSONString());
+            }
+        }
         return subscribe;
         return subscribe;
     }
     }
 
 

+ 2 - 1
hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml

@@ -8,7 +8,8 @@
             t2.subcribe_content AS subscribeContent,
             t2.subcribe_content AS subscribeContent,
             t2.subcribe_time AS subcribeTime,
             t2.subcribe_time AS subcribeTime,
             t2.subcribe_name AS subcribeName,
             t2.subcribe_name AS subcribeName,
-            t2.id AS subcribeId
+            t2.id AS subcribeId,
+            t2.victoriatourist_json
         FROM
         FROM
             subscribe_detail t1
             subscribe_detail t1
         LEFT JOIN subscribe t2 ON t1.subscribe_id = t2.id
         LEFT JOIN subscribe t2 ON t1.subscribe_id = t2.id

+ 29 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockController.java

@@ -38,6 +38,14 @@ public class StockController {
     }
     }
 
 
     /**
     /**
+     * 维多利亚 按仓库库存查询
+     */
+    @PostMapping("/pageByWarehouse")
+    public Page<StockVo> pageByWarehouse(@RequestBody StockSelectDto dto) {
+        return stockService.pageByWarehouse(dto);
+    }
+
+    /**
      * 库存明细
      * 库存明细
      */
      */
     @PostMapping("/detail")
     @PostMapping("/detail")
@@ -77,4 +85,25 @@ public class StockController {
         stockService.delete(dto.getId());
         stockService.delete(dto.getId());
     }
     }
 
 
+    /**
+     * 次品转良品
+     *
+     * @return
+     */
+    @PostMapping("/defectiveToQualified")
+    public void defectiveToQualified(@RequestBody Stock stock){
+        stockService.defectiveToQualified(stock);
+    }
+
+    /**
+     * 良品转次品
+     *
+     * @return
+     */
+    @PostMapping("/qualifiedToDefective")
+    public void qualifiedToDefective(@RequestBody Stock stock){
+        stockService.qualifiedToDefective(stock);
+    }
+
+
 }
 }

+ 3 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/Stock.java

@@ -36,4 +36,7 @@ public class Stock extends BasePo {
      */
      */
     private BigDecimal quantity;
     private BigDecimal quantity;
 
 
+    /**维多利亚扩展*/
+    private String victoriatouristJson;
+
 }
 }

+ 21 - 6
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java

@@ -1,13 +1,12 @@
 package com.fjhx.wms.service.stock;
 package com.fjhx.wms.service.stock;
 
 
-import com.fjhx.wms.entity.stock.po.Stock;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.dto.StockDto;
 import com.fjhx.wms.entity.stock.dto.StockSelectDto;
 import com.fjhx.wms.entity.stock.dto.StockSelectDto;
+import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
-import com.ruoyi.common.core.domain.BaseSelectDto;
-import com.ruoyi.common.core.service.BaseService;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.stock.vo.StockVo;
 import com.fjhx.wms.entity.stock.vo.StockVo;
-import com.fjhx.wms.entity.stock.dto.StockDto;
+import com.ruoyi.common.core.service.BaseService;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -17,7 +16,7 @@ import java.util.List;
  * 库存 服务类
  * 库存 服务类
  * </p>
  * </p>
  *
  *
- * @author 
+ * @author
  * @since 2023-03-20
  * @since 2023-03-20
  */
  */
 public interface StockService extends BaseService<Stock> {
 public interface StockService extends BaseService<Stock> {
@@ -28,6 +27,11 @@ public interface StockService extends BaseService<Stock> {
     Page<StockVo> getPage(StockSelectDto dto);
     Page<StockVo> getPage(StockSelectDto dto);
 
 
     /**
     /**
+     * 维多利亚 按仓库库存查询
+     */
+    Page<StockVo> pageByWarehouse(StockSelectDto dto);
+
+    /**
      * 库存明细
      * 库存明细
      */
      */
     Stock detail(StockDto dto);
     Stock detail(StockDto dto);
@@ -54,4 +58,15 @@ public interface StockService extends BaseService<Stock> {
 
 
     List<StockJournalDetails> ModifyInventory(Long stockJournalId, int type, List<Stock> list, Long warehouseId);
     List<StockJournalDetails> ModifyInventory(Long stockJournalId, int type, List<Stock> list, Long warehouseId);
 
 
+    /**
+     * 良品转次品
+     */
+    void qualifiedToDefective(Stock stock);
+
+    /**
+     * 次品转良品
+     */
+    void defectiveToQualified(Stock stock);
+
+
 }
 }

+ 104 - 9
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -1,26 +1,27 @@
 package com.fjhx.wms.service.stock.impl;
 package com.fjhx.wms.service.stock.impl;
 
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.fjhx.item.entity.product.po.ProductInfo;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.wms.entity.stock.dto.StockDto;
 import com.fjhx.wms.entity.stock.dto.StockJournalDetailsDto;
 import com.fjhx.wms.entity.stock.dto.StockJournalDetailsDto;
+import com.fjhx.wms.entity.stock.dto.StockSelectDto;
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockJournal;
 import com.fjhx.wms.entity.stock.po.StockJournal;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
+import com.fjhx.wms.entity.stock.vo.StockVo;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.mapper.stock.StockMapper;
 import com.fjhx.wms.mapper.stock.StockMapper;
 import com.fjhx.wms.service.stock.StockJournalDetailsService;
 import com.fjhx.wms.service.stock.StockJournalDetailsService;
 import com.fjhx.wms.service.stock.StockJournalService;
 import com.fjhx.wms.service.stock.StockJournalService;
 import com.fjhx.wms.service.stock.StockService;
 import com.fjhx.wms.service.stock.StockService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.wms.entity.stock.dto.StockSelectDto;
+import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
 import com.obs.services.internal.ServiceException;
-import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.wms.entity.stock.vo.StockVo;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.fjhx.wms.entity.stock.dto.StockDto;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
@@ -46,6 +47,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     StockJournalDetailsService stockJournalDetailsService;
     StockJournalDetailsService stockJournalDetailsService;
     @Autowired
     @Autowired
     ProductInfoService productInfoService;
     ProductInfoService productInfoService;
+    @Autowired
+    WarehouseService warehouseService;
 
 
     @Override
     @Override
     public Page<StockVo> getPage(StockSelectDto dto) {
     public Page<StockVo> getPage(StockSelectDto dto) {
@@ -65,13 +68,65 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 item.setProductName(productInfo.getName());
                 item.setProductName(productInfo.getName());
             });
             });
         }
         }
+        return page;
+    }
+
+    /**
+     * 维多利亚 按仓库库存查询
+     */
+    @Override
+    public Page<StockVo> pageByWarehouse(StockSelectDto dto) {
+        Page<StockVo> page = getPage(dto);
+        List<StockVo> stockVos = page.getRecords();
+
+        //获取产品id列表
+        List<Long> productIds = stockVos.stream().map(Stock::getProductId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(productIds)) {
+            //赋值产品名称
+            productInfoService.attributeAssign(stockVos, StockVo::getProductId, (item, productInfo) -> {
+                //赋值维多利亚扩展产品信息
+                String victoriatouristJson = item.getVictoriatouristJson();
+                if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
+                    JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                    json.put("code", productInfo.getCode());
+                    json.put("spec", productInfo.getSpec());
+                    json.put("unit", productInfo.getUnit());
+                    item.setVictoriatouristJson(json.toJSONString());
+                }
+            });
+        }
 
 
+        //维多利亚扩展
+        List<Long> warehouseIds = new ArrayList<>();
+        for (StockVo stockVo : stockVos) {
+            String victoriatouristJson = stockVo.getVictoriatouristJson();
+            if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
+                JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                //遍历仓库id
+                warehouseIds.add(json.getLong("warehouseId"));
+            }
+        }
+        //如果仓库id列表为空直接返回
+        if (ObjectUtil.isEmpty(warehouseIds)) {
+            return page;
+        }
+        List<Warehouse> warehouses = warehouseService.listByIds(warehouseIds);
+        Map<Long, String> warehouseMap = warehouses.stream().collect(Collectors.toMap(Warehouse::getId, Warehouse::getName));
+        for (StockVo stockVo : stockVos) {
+            String victoriatouristJson = stockVo.getVictoriatouristJson();
+            if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
+                JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                String warehouseName = warehouseMap.get(json.getLong("warehouseId"));
+                json.put("warehouseName", warehouseName);
+                stockVo.setVictoriatouristJson(json.toJSONString());
+            }
+        }
         return page;
         return page;
     }
     }
 
 
     @Override
     @Override
     public Stock detail(StockDto dto) {
     public Stock detail(StockDto dto) {
-        return getOne(q->q.eq(Stock::getWarehouseId,dto.getWarehouseId()).eq(Stock::getProductId,dto.getProductId()));
+        return getOne(q -> q.eq(Stock::getWarehouseId, dto.getWarehouseId()).eq(Stock::getProductId, dto.getProductId()));
     }
     }
 
 
     @Override
     @Override
@@ -189,5 +244,45 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         return stockJournalDetailsList;
         return stockJournalDetailsList;
     }
     }
 
 
+    /**
+     * 次品转良品
+     */
+    @Override
+    public void defectiveToQualified(Stock stock) {
+        if (ObjectUtil.isEmpty(stock.getId())) {
+            throw new ServiceException("库存id不能为空");
+        }
+        if (ObjectUtil.isEmpty(stock.getQuantity())) {
+            throw new ServiceException("要转换的数量不能为空");
+        }
+        Stock stock1 = getById(stock.getId());
+        String victoriatouristJson = stock1.getVictoriatouristJson();
+        JSONObject json = JSONObject.parseObject(victoriatouristJson);
+        json.put("quantity", json.getBigDecimal("quantity").add(stock.getQuantity()));
+        json.put("defectiveQuantity", json.getBigDecimal("defectiveQuantity").subtract(stock.getQuantity()));
+        stock1.setVictoriatouristJson(json.toJSONString());
+        updateById(stock1);
+    }
+
+    /**
+     * 良品转次品
+     */
+    @Override
+    public void qualifiedToDefective(Stock stock) {
+        if (ObjectUtil.isEmpty(stock.getId())) {
+            throw new ServiceException("库存id不能为空");
+        }
+        if (ObjectUtil.isEmpty(stock.getQuantity())) {
+            throw new ServiceException("要转换的数量不能为空");
+        }
+        Stock stock1 = getById(stock.getId());
+        String victoriatouristJson = stock1.getVictoriatouristJson();
+        JSONObject json = JSONObject.parseObject(victoriatouristJson);
+        json.put("quantity", json.getBigDecimal("quantity").subtract(stock.getQuantity()));
+        json.put("defectiveQuantity", json.getBigDecimal("defectiveQuantity").add(stock.getQuantity()));
+        stock1.setVictoriatouristJson(json.toJSONString());
+        updateById(stock1);
+    }
+
 
 
 }
 }