Browse Source

申购功能修改

yzc 1 year ago
parent
commit
4276740da0

+ 14 - 4
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDto.java

@@ -1,5 +1,6 @@
 package com.fjhx.purchase.entity.subscribe.dto;
 
+import com.fjhx.file.entity.ObsFile;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import lombok.Getter;
@@ -17,9 +18,18 @@ import java.util.List;
 @Setter
 public class SubscribeDto extends Subscribe {
 
-    /**
-     * 申购明细列表
-     */
-    private List<SubscribeDetail> subscribeDetailList;
+	/**
+	 * 申购明细列表
+	 */
+	private List<SubscribeDetail> subscribeDetailList;
+
+	/**
+	 * 是否代替他人提交 01是 附件类型10
+	 */
+	private List<ObsFile> substituteFileList;
+	/**
+	 * 申请用途 附件类型15
+	 */
+	private List<ObsFile> purposeFileList;
 
 }

+ 98 - 70
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/Subscribe.java

@@ -5,6 +5,7 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -12,7 +13,7 @@ import java.util.Date;
  * 申购单
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-03
  */
 @Getter
@@ -20,74 +21,101 @@ import java.util.Date;
 @TableName("subscribe")
 public class Subscribe extends BasePo {
 
-    /**
-     * 部门名称
-     */
-    private String deptName;
-
-    /**
-     * 申购人名称
-     */
-    private String subcribeName;
-
-    /**
-     * 申购时间
-     */
-    private Date subcribeTime;
-
-    /**
-     * 申购编码
-     */
-    private String code;
-
-    /**
-     * 申购说明
-     */
-    private String subcribeContent;
-
-    /**
-     * 申购状态 0草稿 10、审批中;20、驳回  30、通过
-     */
-    private Integer subcribeStatus;
-
-    /**
-     * 审核通过时间
-     */
-    private Date approvedDate;
-
-    /**
-     * 流程id
-     */
-    private String processInstanceId;
-
-    /**
-     * 收货仓库ID
-     */
-    private Long putWarehouseId;
-
-    /**
-     * 要求到货时间
-     */
-    private Date requiredArrivalTime;
-
-    /**
-     * 是否删除
-     */
-    private Integer delFlag;
-
-    /**
-     * 流程实例
-     */
-    private Long flowId;
-
-    /**
-     * 归属公司id
-     */
-    private Long companyId;
-
-    /**
-     * 申请部门id
-     */
-    private Long deptId;
+	/**
+	 * 部门名称
+	 */
+	private String deptName;
+
+	/**
+	 * 申购人名称
+	 */
+	private String subcribeName;
+
+	/**
+	 * 申购时间
+	 */
+	private Date subcribeTime;
+
+	/**
+	 * 申购编码
+	 */
+	private String code;
+
+	/**
+	 * 申购说明
+	 */
+	private String subcribeContent;
+
+	/**
+	 * 申购状态 0草稿 10、审批中;20、驳回  30、通过
+	 */
+	private Integer subcribeStatus;
+
+	/**
+	 * 审核通过时间
+	 */
+	private Date approvedDate;
+
+	/**
+	 * 流程id
+	 */
+	private String processInstanceId;
+
+	/**
+	 * 收货仓库ID
+	 */
+	private Long putWarehouseId;
+
+	/**
+	 * 要求到货时间
+	 */
+	private Date requiredArrivalTime;
+
+	/**
+	 * 是否删除
+	 */
+	private Integer delFlag;
+
+	/**
+	 * 流程实例
+	 */
+	private Long flowId;
+
+	/**
+	 * 归属公司id
+	 */
+	private Long companyId;
+
+	/**
+	 * 申请部门id
+	 */
+	private Long deptId;
+	//====================================================
+	/**
+	 * 是否代替他人提交 01是 附件类型10
+	 */
+	private Integer isSubstitute;
+	/**
+	 * 申请用途 附件类型15
+	 */
+	private String purposeRemark;
+	/**
+	 * 是否入库 10
+	 */
+	private Integer isInStock;
+	/**
+	 * 供应商id
+	 */
+	private Long supplierId;
+
+	/**
+	 * 金额
+	 */
+	private BigDecimal amount;
+	/**
+	 * 金额含税
+	 */
+	private BigDecimal amountIncludingTax;
+
 
 }

+ 111 - 100
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/SubscribeDetail.java

@@ -21,104 +21,115 @@ import java.math.BigDecimal;
 @TableName("subscribe_detail")
 public class SubscribeDetail extends BasePo {
 
-    /**
-     * 产品ID/货品ID
-     */
-    private Long productId;
-
-    /**
-     * 申购单ID
-     */
-    private Long subscribeId;
-
-    /**
-     * 申购数量
-     */
-    private BigDecimal count;
-
-    /**
-     * 申购事由
-     */
-    private String content;
-
-    /**
-     * 状态 10、审批中 15待采购 20、已采购  30、部分到货  40、完成
-     */
-    private Integer status;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 是否删除
-     */
-    private Integer delFlag;
-
-    /**
-     * 合同id
-     */
-    private Long contractId;
-    /**
-     * 合同明细id
-     */
-    private Long contractDetailId;
-    /**
-     * 数据类型 0申购 1销售合同
-     */
-    private Integer dataType;
-
-    /**
-     * 归属公司id
-     */
-    private Long companyId;
-
-    /**
-     * 货品类型
-     */
-    @TableField(exist = false)
-    private String productType;
-
-    /**
-     * 所属分类
-     */
-    @TableField(exist = false)
-    private String productCategory;
-
-    /**
-     * 货品编码
-     */
-    @TableField(exist = false)
-    private String productCode;
-
-    /**
-     * 货品名称
-     */
-    @TableField(exist = false)
-    private String productName;
-
-    /**
-     * 单位
-     */
-    @TableField(exist = false)
-    private String productUnit;
-
-    /**
-     * 货品规格型号
-     */
-    @TableField(exist = false)
-    private String productSpec;
-
-    /**
-     * 部门id
-     */
-    @TableField(exist = false)
-    private Long deptId;
-
-    /**
-     * 产品定义
-     */
-    @TableField(exist = false)
-    private Integer productDefinition;
+	/**
+	 * 产品ID/货品ID
+	 */
+	private Long productId;
+
+	/**
+	 * 申购单ID
+	 */
+	private Long subscribeId;
+
+	/**
+	 * 申购数量
+	 */
+	private BigDecimal count;
+
+	/**
+	 * 申购事由
+	 */
+	private String content;
+
+	/**
+	 * 状态 10、审批中 15待采购 20、已采购  30、部分到货  40、完成
+	 */
+	private Integer status;
+
+	/**
+	 * 备注
+	 */
+	private String remark;
+
+	/**
+	 * 是否删除
+	 */
+	private Integer delFlag;
+
+	/**
+	 * 合同id
+	 */
+	private Long contractId;
+	/**
+	 * 合同明细id
+	 */
+	private Long contractDetailId;
+	/**
+	 * 数据类型 0申购 1销售合同
+	 */
+	private Integer dataType;
+
+	/**
+	 * 归属公司id
+	 */
+	private Long companyId;
+
+	/**
+	 * 单价
+	 */
+	private BigDecimal price;
+	/**
+	 * 单价含税
+	 */
+	private BigDecimal priceIncludingTax;
+
+	//==============================================================================================================
+
+	/**
+	 * 货品类型
+	 */
+	@TableField(exist = false)
+	private String productType;
+
+	/**
+	 * 所属分类
+	 */
+	@TableField(exist = false)
+	private String productCategory;
+
+	/**
+	 * 货品编码
+	 */
+	@TableField(exist = false)
+	private String productCode;
+
+	/**
+	 * 货品名称
+	 */
+	@TableField(exist = false)
+	private String productName;
+
+	/**
+	 * 单位
+	 */
+	@TableField(exist = false)
+	private String productUnit;
+
+	/**
+	 * 货品规格型号
+	 */
+	@TableField(exist = false)
+	private String productSpec;
+
+	/**
+	 * 部门id
+	 */
+	@TableField(exist = false)
+	private Long deptId;
+
+	/**
+	 * 产品定义
+	 */
+	@TableField(exist = false)
+	private Integer productDefinition;
 }

+ 14 - 10
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java

@@ -127,15 +127,19 @@ public class SubscribeDetailVo extends SubscribeDetail {
 
     private String companyName;
 
-    /**
-     * 生产需求量
-     */
-    private BigDecimal prodNeedCount;
-
-    /**
-     * 生产备注
-     */
-    private String prodRemark;
-
+	/**
+	 * 生产需求量
+	 */
+	private BigDecimal prodNeedCount;
+
+	/**
+	 * 生产备注
+	 */
+	private String prodRemark;
+
+	/**
+	 * 创建人名称
+	 */
+	private String createUserName;
 
 }

+ 12 - 4
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeVo.java

@@ -16,8 +16,16 @@ import java.util.List;
 @Setter
 public class SubscribeVo extends Subscribe {
 
-    /**
-     * 申购明细列表
-     */
-    private List<SubscribeDetailVo> subscribeDetailList;
+	/**
+	 * 申购明细列表
+	 */
+	private List<SubscribeDetailVo> subscribeDetailList;
+
+	private String putWarehouseName;
+	private String supplierName;
+	private String supplierContactPerson;
+	private String supplierContactNumber;
+	private String supplierPrivIncludingTax;
+	private String supplierPrivTaxPoints;
+	private String companyName;
 }

+ 122 - 116
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fjhx.common.enums.CodingRuleEnum;
 import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.common.service.coding.CodingRuleService;
+import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.enums.FlowStatusEnum;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
@@ -32,120 +33,125 @@ import java.util.List;
 @Component
 public class SubscribeFlow extends FlowDelegate {
 
-    @Autowired
-    private CodingRuleService codingRuleService;
-
-    @Autowired
-    private SubscribeService subscribeService;
-
-    @Autowired
-    private SubscribeDetailService subscribeDetailService;
-
-    @Override
-    public String getFlowKey() {
-        return "subscribe_flow";
-    }
-
-    /**
-     * 发起流程
-     *
-     * @param flowId     流程ID
-     * @param submitData 申购数据
-     * @return 业务id
-     */
-    @Override
-    public Long start(Long flowId, JSONObject submitData) {
-
-        SubscribeDto subscribe = submitData.toJavaObject(SubscribeDto.class);
-        subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(), null));
-        subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
-        subscribe.setFlowId(flowId);
-        //赋值归属公司
-        if (ObjectUtils.isEmpty(subscribe.getCompanyId())) {
-            subscribe.setCompanyId(SecurityUtils.getCompanyId());
-        }
-        subscribeService.save(subscribe);
-
-        List<SubscribeDetail> subscribeDetails = subscribe.getSubscribeDetailList();
-        if (CollectionUtils.isNotEmpty(subscribeDetails)) {
-            subscribeDetails.forEach(item -> {
-                item.setSubscribeId(subscribe.getId());
-                item.setDataType(0);
-                item.setCompanyId(subscribe.getCompanyId());
-            });
-            subscribeDetailService.saveBatch(subscribeDetails);
-        }
-
-        submitData.put("code", subscribe.getCode());
-
-        return subscribe.getId();
-    }
-
-    /**
-     * 结束流程
-     * @param flowId 流程ID
-     * @param businessId 业务ID
-     * @param submitData 数据
-     */
-    @Override
-    public void end(Long flowId, Long businessId, JSONObject submitData) {
-
-        // 通过业务ID查询申购数据
-        Subscribe subscribe = subscribeService.getById(businessId);
-        if (ObjectUtils.isEmpty(subscribe)) {
-            throw new ServiceException("申购单不存在");
-        }
-
-        // 修改申购状态为审批通过
-        subscribe.setSubcribeStatus(SubscribeStatusEnum.PASS.getKey());
-        subscribe.setApprovedDate(new Date());
-        subscribeService.updateById(subscribe);
-
-        // 修改申购明细为待采购
-        subscribeDetailService.update(q -> q
-                .eq(SubscribeDetail::getSubscribeId, subscribe.getId())
-                .set(SubscribeDetail::getStatus, SubscribeDetailStatusEnum.PAID_AMOUNT.getKey())
-                .set(BasePo::getUpdateTime, new Date())
-                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-        );
-
-    }
-
-    @Override
-    public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
-        super.relaunch(flowId, businessId, flowStatus, submitData);
-        throw new ServiceException("该功能当前不可用!");
-    }
-
-    @Override
-    public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
-        super.reject(flowId, businessId, flowStatus);
-
-        subscribeService.update(q -> q
-                .eq(Subscribe::getId, businessId)
-                .set(Subscribe::getSubcribeStatus, FlowStatusEnum1.REJECT.getKey())
-                .set(BasePo::getUpdateTime, new Date())
-                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-        );
-
-        // 修改申购明细为驳回
-        subscribeDetailService.update(q -> q
-                .eq(SubscribeDetail::getSubscribeId, businessId)
-                .set(SubscribeDetail::getStatus, FlowStatusEnum1.REJECT.getKey())
-                .set(BasePo::getUpdateTime, new Date())
-                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-        );
-    }
-
-    @Override
-    public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
-        super.cancellation(flowId, businessId, flowStatus);
-
-        subscribeService.update(q -> q
-                .eq(Subscribe::getId, businessId)
-                .set(Subscribe::getSubcribeStatus, FlowStatusEnum1.CANCELLATION.getKey())
-                .set(BasePo::getUpdateTime, new Date())
-                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-        );
-    }
+	@Autowired
+	private CodingRuleService codingRuleService;
+
+	@Autowired
+	private SubscribeService subscribeService;
+
+	@Autowired
+	private SubscribeDetailService subscribeDetailService;
+
+	@Override
+	public String getFlowKey() {
+		return "subscribe_flow";
+	}
+
+	/**
+	 * 发起流程
+	 *
+	 * @param flowId     流程ID
+	 * @param submitData 申购数据
+	 * @return 业务id
+	 */
+	@Override
+	public Long start(Long flowId, JSONObject submitData) {
+		SubscribeDto subscribe = submitData.toJavaObject(SubscribeDto.class);
+		subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(), null));
+		subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
+		subscribe.setFlowId(flowId);
+		//赋值归属公司
+		if (ObjectUtils.isEmpty(subscribe.getCompanyId())) {
+			subscribe.setCompanyId(SecurityUtils.getCompanyId());
+		}
+		subscribeService.save(subscribe);
+
+		List<SubscribeDetail> subscribeDetails = subscribe.getSubscribeDetailList();
+		if (CollectionUtils.isNotEmpty(subscribeDetails)) {
+			subscribeDetails.forEach(item -> {
+				item.setSubscribeId(subscribe.getId());
+				item.setDataType(0);
+				item.setCompanyId(subscribe.getCompanyId());
+			});
+			subscribeDetailService.saveBatch(subscribeDetails);
+		}
+
+		submitData.put("code", subscribe.getCode());
+
+		//代他人提交附件
+		ObsFileUtil.saveFile(subscribe.getSubstituteFileList(), subscribe.getId(), 10);
+		//申请用途附件
+		ObsFileUtil.saveFile(subscribe.getPurposeFileList(), subscribe.getId(), 15);
+
+		return subscribe.getId();
+	}
+
+	/**
+	 * 结束流程
+	 *
+	 * @param flowId     流程ID
+	 * @param businessId 业务ID
+	 * @param submitData 数据
+	 */
+	@Override
+	public void end(Long flowId, Long businessId, JSONObject submitData) {
+
+		// 通过业务ID查询申购数据
+		Subscribe subscribe = subscribeService.getById(businessId);
+		if (ObjectUtils.isEmpty(subscribe)) {
+			throw new ServiceException("申购单不存在");
+		}
+
+		// 修改申购状态为审批通过
+		subscribe.setSubcribeStatus(SubscribeStatusEnum.PASS.getKey());
+		subscribe.setApprovedDate(new Date());
+		subscribeService.updateById(subscribe);
+
+		// 修改申购明细为待采购
+		subscribeDetailService.update(q -> q
+				.eq(SubscribeDetail::getSubscribeId, subscribe.getId())
+				.set(SubscribeDetail::getStatus, SubscribeDetailStatusEnum.PAID_AMOUNT.getKey())
+				.set(BasePo::getUpdateTime, new Date())
+				.set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+		);
+
+	}
+
+	@Override
+	public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
+		super.relaunch(flowId, businessId, flowStatus, submitData);
+		throw new ServiceException("该功能当前不可用!");
+	}
+
+	@Override
+	public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+		super.reject(flowId, businessId, flowStatus);
+
+		subscribeService.update(q -> q
+				.eq(Subscribe::getId, businessId)
+				.set(Subscribe::getSubcribeStatus, FlowStatusEnum1.REJECT.getKey())
+				.set(BasePo::getUpdateTime, new Date())
+				.set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+		);
+
+		// 修改申购明细为驳回
+		subscribeDetailService.update(q -> q
+				.eq(SubscribeDetail::getSubscribeId, businessId)
+				.set(SubscribeDetail::getStatus, FlowStatusEnum1.REJECT.getKey())
+				.set(BasePo::getUpdateTime, new Date())
+				.set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+		);
+	}
+
+	@Override
+	public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+		super.cancellation(flowId, businessId, flowStatus);
+
+		subscribeService.update(q -> q
+				.eq(Subscribe::getId, businessId)
+				.set(Subscribe::getSubcribeStatus, FlowStatusEnum1.CANCELLATION.getKey())
+				.set(BasePo::getUpdateTime, new Date())
+				.set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+		);
+	}
 }

+ 4 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -32,6 +32,7 @@ import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.utils.UserUtil;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -193,6 +194,9 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
             item.setCorporationName(corporation.getName());
         });
 
+        //赋值创建人名称
+        UserUtil.assignmentNickName(records, SubscribeDetail::getCreateUser, SubscribeDetailVo::setCreateUserName);
+
         return page;
     }
 

+ 222 - 214
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java

@@ -7,13 +7,11 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.enums.CodingRuleEnum;
 import com.fjhx.common.service.coding.CodingRuleService;
-import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
@@ -32,6 +30,10 @@ import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
+import com.fjhx.supply.entity.supplier.po.SupplierInfo;
+import com.fjhx.supply.service.supplier.SupplierInfoService;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
+import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.exception.ServiceException;
@@ -61,217 +63,223 @@ import java.util.stream.Collectors;
 //@DS(SourceConstant.PURCHASE)
 @Service
 public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe> implements SubscribeService {
-
-    @Autowired
-    private SubscribeDetailService subscribeDetailService;
-
-    @Autowired
-    private ProductInfoService productInfoService;
-
-    @Autowired
-    private ISysDeptService deptService;
-
-    @Autowired
-    private CodingRuleService codingRuleService;
-
-    @Autowired
-    private PurchaseService purchaseService;
-
-    @Autowired
-    private PurchaseDetailService purchaseDetailService;
-
-
-    @Override
-    public Page<SubscribeVo> getPage(SubscribeSelectDto dto) {
-        IWrapper<Subscribe> wrapper = getWrapper();
-
-        //权限过滤:申购
-        wrapper.in("s", Subscribe::getCompanyId, SecurityUtils.getCompanyIds());
-        wrapper.eq("s", Subscribe::getCompanyId, dto.getCompanyId());
-
-
-        wrapper.orderByDesc("s", Subscribe::getId);
-        Page<SubscribeVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
-        return page;
-    }
-
-    /**
-     * 详情
-     *
-     * @param id
-     * @return
-     */
-    @Override
-    public SubscribeVo detail(Long id) {
-        if (ObjectUtils.isEmpty(id)) {
-            throw new ServiceException("参数异常");
-        }
-        Subscribe subscribe = this.getById(id);
-        if (ObjectUtils.isEmpty(subscribe)) {
-            throw new ServiceException("数据不存在");
-        }
-        SubscribeVo subscribeVo = BeanUtil.copyProperties(subscribe, SubscribeVo.class);
-
-        //处理申购产品
-        List<SubscribeDetail> subscribeDetailList = subscribeDetailService.list(
-                Wrappers.<SubscribeDetail>query().lambda()
-                        .eq(SubscribeDetail::getSubscribeId, id));
-        List<SubscribeDetailVo> subscribeDetailVos = BeanUtil.copyToList(subscribeDetailList, SubscribeDetailVo.class);
-        if (CollectionUtils.isNotEmpty(subscribeDetailList)) {
-            //根据申购businessId取出所有产品
-            List<Long> productIds = subscribeDetailList.stream().map(SubscribeDetail::getProductId).collect(Collectors.toList());
-            List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
-            Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
-            for (SubscribeDetailVo s : subscribeDetailVos) {
-                if (MapUtils.isNotEmpty(productMap)) {
-                    ProductInfoVo p = productMap.get(s.getProductId()).get(0);
-                    s.setProductCategory(p.getClassifyName());
-                    s.setProductCode(p.getCustomCode());
-                    s.setProductUnit(p.getUnit());
-                    s.setProductType(p.getType());
-                    s.setProductName(p.getName());
-                    s.setProductDefinition(p.getDefinition());
-
-                    s.setProductLength(p.getLength());
-                    s.setProductWidth(p.getWidth());
-                    s.setProductHeight(p.getHeight());
-                }
-            }
-        }
-        subscribeVo.setSubscribeDetailList(subscribeDetailVos);
-        return subscribeVo;
-    }
-
-//    @Override
-//    public Subscribe detailByWdly(Long id) {
-//        Subscribe subscribe = detail(id);
-//        //赋值维多利亚扩展收货仓库名
-//        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(JSONObject.toJSONString(json,JSONWriter.Feature.WriteLongAsString));
-//            }
-//        }
-//        return subscribe;
-//    }
-
-    @DSTransactional
-    @Override
-    public void add(SubscribeDto subscribe) {
-        SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
-        SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
-        subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(), null));
-        subscribeService.save(subscribe);
-        List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
-        if (CollectionUtils.isNotEmpty(SubscribeDetails)) {
-            for (SubscribeDetail s : SubscribeDetails) {
-                s.setSubscribeId(subscribe.getId());
-            }
-            subscribeDetailService.saveBatch(subscribe.getSubscribeDetailList());
-        }
-    }
-
-    /**
-     * 编辑
-     *
-     * @param subscribeDto
-     */
-    @DSTransactional
-    @Override
-    public void edit(SubscribeDto subscribeDto) {
-        this.updateById(subscribeDto);
-    }
-
-    @Override
-    public void delete(Long id) {
-        this.removeById(id);
-    }
-
-    @Override
-    public List<SysDept> getDepts(SubscribeDetailSelectDto subscribeDetailDto) {
-        List<Long> deptIds = new ArrayList<>();
-        List<SubscribeDetail> list;
-        String status = subscribeDetailDto.getStatus();
-        if(ObjectUtils.isEmpty(status)){
-            list = subscribeDetailService.list();
-        } else {
-            String[] split = status.split(",");
-            list = subscribeDetailService.list(q -> q.in(SubscribeDetail::getStatus, split));
-        }
-        if (ObjectUtils.isEmpty(list)) {
-            return new ArrayList<>();
-        }
-        List<Long> ids = list.stream().map(SubscribeDetail::getProductId).collect(Collectors.toList());
-        List<ProductInfo> list1 = productInfoService.listByIds(ids);
-//        for (ProductInfo productInfo : list1) {
-//            String victoriatouristJson = productInfo.getVictoriatouristJson();
-//            JSONObject json = ObjectUtils.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
-//            Long deptId = json.getLong("deptId");
-//            deptIds.add(deptId);
-//        }
-        if (ObjectUtils.isEmpty(deptIds)) {
-            return new ArrayList<>();
-        }
-        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
-        List<SysDept> sysDepts = deptService.listByIds(deptIds);
-        DynamicDataSourceContextHolder.poll();
-        return sysDepts;
-    }
-
-    @Override
-    public DecisionAidVo decisionAid(DecisionAidDto dto) {
-        DecisionAidVo decisionAidVo = new DecisionAidVo();
-
-        Long supplyId = dto.getSupplyId();
-        if (supplyId != null) {
-            List<Purchase> purchaseList = purchaseService.list(q -> q.eq(Purchase::getSupplyId, supplyId)
-                    .orderByDesc(BaseIdPo::getId).last("limit 3"));
-            decisionAidVo.setPurchaseList(purchaseList);
-        }
-
-        // 产品价格
-        List<Long> productIdList = dto.getProductIdList();
-        if (ObjectUtil.isNotEmpty(productIdList)) {
-
-            Map<Long, List<PurchaseDetail>> map = purchaseDetailService.mapKGroup(PurchaseDetail::getBussinessId, q -> q
-                    .select(PurchaseDetail::getBussinessId, PurchaseDetail::getPrice)
-                    .in(PurchaseDetail::getBussinessId, productIdList)
-                    .orderByDesc(BaseIdPo::getId)
-            );
-
-            List<DecisionAidVo.ProductPrice> productPriceList = new ArrayList<>();
-
-            for (Long productId : productIdList) {
-                List<PurchaseDetail> contractProductList = map.get(productId);
-                DecisionAidVo.ProductPrice productPrice = new DecisionAidVo.ProductPrice();
-                productPrice.setId(productId);
-                if (ObjectUtil.isNotEmpty(contractProductList)) {
-                    productPrice.setLastPrice(contractProductList.get(0).getPrice());
-                    productPrice.setMaxPrice(contractProductList.stream().map(PurchaseDetail::getPrice).max(BigDecimal::compareTo).get());
-                    productPrice.setMinPrice(contractProductList.stream().map(PurchaseDetail::getPrice).min(BigDecimal::compareTo).get());
-                } else {
-                    productPrice.setLastPrice(BigDecimal.ZERO);
-                    productPrice.setMaxPrice(BigDecimal.ZERO);
-                    productPrice.setMinPrice(BigDecimal.ZERO);
-                }
-                productPriceList.add(productPrice);
-
-            }
-
-            productInfoService.attributeAssign(productPriceList, DecisionAidVo.ProductPrice::getId, (item, product) -> {
-                item.setName(product.getName());
-            });
-
-            decisionAidVo.setProductPriceList(productPriceList);
-        } else {
-            decisionAidVo.setProductPriceList(Collections.emptyList());
-        }
-
-        return decisionAidVo;
-    }
+	private final SubscribeDetailService subscribeDetailService;
+	private final ProductInfoService productInfoService;
+	private final ISysDeptService deptService;
+	private final CodingRuleService codingRuleService;
+	private final PurchaseService purchaseService;
+	private final PurchaseDetailService purchaseDetailService;
+	private final WarehouseService warehouseService;
+	private final SupplierInfoService supplierInfoService;
+
+	@Autowired
+	public SubscribeServiceImpl(SubscribeDetailService subscribeDetailService, ProductInfoService productInfoService, ISysDeptService deptService, CodingRuleService codingRuleService, PurchaseService purchaseService, PurchaseDetailService purchaseDetailService, WarehouseService warehouseService, SupplierInfoService supplierInfoService) {
+		this.subscribeDetailService = subscribeDetailService;
+		this.productInfoService = productInfoService;
+		this.deptService = deptService;
+		this.codingRuleService = codingRuleService;
+		this.purchaseService = purchaseService;
+		this.purchaseDetailService = purchaseDetailService;
+		this.warehouseService = warehouseService;
+		this.supplierInfoService = supplierInfoService;
+	}
+
+
+	@Override
+	public Page<SubscribeVo> getPage(SubscribeSelectDto dto) {
+		IWrapper<Subscribe> wrapper = getWrapper();
+
+		//权限过滤:申购
+		wrapper.in("s", Subscribe::getCompanyId, SecurityUtils.getCompanyIds());
+		wrapper.eq("s", Subscribe::getCompanyId, dto.getCompanyId());
+
+
+		wrapper.orderByDesc("s", Subscribe::getId);
+		Page<SubscribeVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+		return page;
+	}
+
+	/**
+	 * 详情
+	 *
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public SubscribeVo detail(Long id) {
+		if (ObjectUtils.isEmpty(id)) {
+			throw new ServiceException("参数异常");
+		}
+		Subscribe subscribe = this.getById(id);
+		if (ObjectUtils.isEmpty(subscribe)) {
+			throw new ServiceException("数据不存在");
+		}
+		SubscribeVo subscribeVo = BeanUtil.copyProperties(subscribe, SubscribeVo.class);
+
+		//处理申购产品
+		List<SubscribeDetail> subscribeDetailList = subscribeDetailService.list(q -> q.eq(SubscribeDetail::getSubscribeId, id));
+		List<SubscribeDetailVo> subscribeDetailVos = BeanUtil.copyToList(subscribeDetailList, SubscribeDetailVo.class);
+		if (CollectionUtils.isNotEmpty(subscribeDetailList)) {
+			//根据申购businessId取出所有产品
+			List<Long> productIds = subscribeDetailList.stream().map(SubscribeDetail::getProductId).collect(Collectors.toList());
+			List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
+			Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
+			for (SubscribeDetailVo s : subscribeDetailVos) {
+				if (MapUtils.isNotEmpty(productMap)) {
+					ProductInfoVo p = productMap.get(s.getProductId()).get(0);
+					s.setProductCategory(p.getClassifyName());
+					s.setProductCode(p.getCustomCode());
+					s.setProductUnit(p.getUnit());
+					s.setProductType(p.getType());
+					s.setProductName(p.getName());
+					s.setProductDefinition(p.getDefinition());
+
+					s.setProductLength(p.getLength());
+					s.setProductWidth(p.getWidth());
+					s.setProductHeight(p.getHeight());
+
+					p.getColor();
+					p.getNetWeight();
+					p.getFrontalTexture();
+					p.getReverseTexture();
+				}
+			}
+		}
+		subscribeVo.setSubscribeDetailList(subscribeDetailVos);
+
+		//赋值仓库信息
+		Warehouse warehouse = warehouseService.getById(subscribeVo.getPutWarehouseId());
+		if (ObjectUtil.isNotEmpty(warehouse)) {
+			subscribeVo.setPutWarehouseName(warehouse.getName());
+		}
+		//赋值供应商信息
+		SupplierInfo supplierInfo = supplierInfoService.getById(subscribeVo.getSupplierId());
+		if (ObjectUtil.isNotEmpty(supplierInfo)) {
+			subscribeVo.setSupplierName(supplierInfo.getName());
+			subscribeVo.setSupplierContactPerson(supplierInfo.getContactPerson());
+			subscribeVo.setSupplierContactNumber(supplierInfo.getContactNumber());
+			subscribeVo.setSupplierPrivIncludingTax(supplierInfo.getPrivIncludingTax());
+			subscribeVo.setSupplierPrivTaxPoints(supplierInfo.getPrivTaxPoints());
+		}
+		//赋值部门信息
+		SysDept sysDept = deptService.getById(subscribeVo.getDeptId());
+		if (ObjectUtil.isNotEmpty(sysDept)) {
+			subscribeVo.setDeptName(sysDept.getDeptName());
+		}
+		//赋值公司信息
+		SysDept company = deptService.getById(subscribeVo.getDeptId());
+		if (ObjectUtil.isNotEmpty(company)) {
+			subscribeVo.setCompanyName(company.getDeptName());
+		}
+
+		return subscribeVo;
+	}
+
+	@DSTransactional
+	@Override
+	public void add(SubscribeDto subscribe) {
+		SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
+		SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
+		subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(), null));
+		subscribeService.save(subscribe);
+		List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
+		if (CollectionUtils.isNotEmpty(SubscribeDetails)) {
+			for (SubscribeDetail s : SubscribeDetails) {
+				s.setSubscribeId(subscribe.getId());
+			}
+			subscribeDetailService.saveBatch(subscribe.getSubscribeDetailList());
+		}
+	}
+
+	/**
+	 * 编辑
+	 *
+	 * @param subscribeDto
+	 */
+	@DSTransactional
+	@Override
+	public void edit(SubscribeDto subscribeDto) {
+		this.updateById(subscribeDto);
+	}
+
+	@Override
+	public void delete(Long id) {
+		this.removeById(id);
+	}
+
+	@Override
+	public List<SysDept> getDepts(SubscribeDetailSelectDto subscribeDetailDto) {
+		List<Long> deptIds = new ArrayList<>();
+		List<SubscribeDetail> list;
+		String status = subscribeDetailDto.getStatus();
+		if (ObjectUtils.isEmpty(status)) {
+			list = subscribeDetailService.list();
+		} else {
+			String[] split = status.split(",");
+			list = subscribeDetailService.list(q -> q.in(SubscribeDetail::getStatus, split));
+		}
+		if (ObjectUtils.isEmpty(list)) {
+			return new ArrayList<>();
+		}
+		if (ObjectUtils.isEmpty(deptIds)) {
+			return new ArrayList<>();
+		}
+		DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+		List<SysDept> sysDepts = deptService.listByIds(deptIds);
+		DynamicDataSourceContextHolder.poll();
+		return sysDepts;
+	}
+
+	@Override
+	public DecisionAidVo decisionAid(DecisionAidDto dto) {
+		DecisionAidVo decisionAidVo = new DecisionAidVo();
+
+		Long supplyId = dto.getSupplyId();
+		if (supplyId != null) {
+			List<Purchase> purchaseList = purchaseService.list(q -> q.eq(Purchase::getSupplyId, supplyId)
+					.orderByDesc(BaseIdPo::getId).last("limit 3"));
+			decisionAidVo.setPurchaseList(purchaseList);
+		}
+
+		// 产品价格
+		List<Long> productIdList = dto.getProductIdList();
+		if (ObjectUtil.isNotEmpty(productIdList)) {
+
+			Map<Long, List<PurchaseDetail>> map = purchaseDetailService.mapKGroup(PurchaseDetail::getBussinessId, q -> q
+					.select(PurchaseDetail::getBussinessId, PurchaseDetail::getPrice)
+					.in(PurchaseDetail::getBussinessId, productIdList)
+					.orderByDesc(BaseIdPo::getId)
+			);
+
+			List<DecisionAidVo.ProductPrice> productPriceList = new ArrayList<>();
+
+			for (Long productId : productIdList) {
+				List<PurchaseDetail> contractProductList = map.get(productId);
+				DecisionAidVo.ProductPrice productPrice = new DecisionAidVo.ProductPrice();
+				productPrice.setId(productId);
+				if (ObjectUtil.isNotEmpty(contractProductList)) {
+					productPrice.setLastPrice(contractProductList.get(0).getPrice());
+					productPrice.setMaxPrice(contractProductList.stream().map(PurchaseDetail::getPrice).max(BigDecimal::compareTo).get());
+					productPrice.setMinPrice(contractProductList.stream().map(PurchaseDetail::getPrice).min(BigDecimal::compareTo).get());
+				} else {
+					productPrice.setLastPrice(BigDecimal.ZERO);
+					productPrice.setMaxPrice(BigDecimal.ZERO);
+					productPrice.setMinPrice(BigDecimal.ZERO);
+				}
+				productPriceList.add(productPrice);
+
+			}
+
+			productInfoService.attributeAssign(productPriceList, DecisionAidVo.ProductPrice::getId, (item, product) -> {
+				item.setName(product.getName());
+			});
+
+			decisionAidVo.setProductPriceList(productPriceList);
+		} else {
+			decisionAidVo.setProductPriceList(Collections.emptyList());
+		}
+
+		return decisionAidVo;
+	}
 
 }

+ 24 - 17
hx-purchase/src/main/resources/mapper/subscribe/SubscribeMapper.xml

@@ -2,23 +2,30 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.purchase.mapper.subscribe.SubscribeMapper">
     <select id="getPage" resultType="com.fjhx.purchase.entity.subscribe.vo.SubscribeVo">
-        select
-            s.id,
-            s.dept_name,
-            s.subcribe_name,
-            s.subcribe_time,
-            s.code,
-            s.subcribe_content,
-            s.subcribe_status,
-            s.approved_date,
-            s.process_instance_id,
-            s.del_flag,
-            s.create_user,
-            s.create_time,
-            s.update_user,
-            s.update_time
-        from subscribe s
-            ${ew.customSqlSegment}
+           select s.id,
+                  s.dept_name,
+                  s.subcribe_name,
+                  s.subcribe_time,
+                  s.code,
+                  s.subcribe_content,
+                  s.subcribe_status,
+                  s.approved_date,
+                  s.process_instance_id,
+                  s.del_flag,
+                  s.create_user,
+                  s.create_time,
+                  s.update_user,
+                  s.update_time,
+                  s.flow_id,
+                  s.company_id,
+                  s.dept_id,
+                  s.warehouse_id,
+                  s.is_substitute,
+                  s.purpose_remark,
+                  s.is_in_stock,
+                  s.supplier_id
+           from subscribe s
+                  ${ew.customSqlSegment}
     </select>
 
 </mapper>