yzc пре 1 година
родитељ
комит
388f71443e
21 измењених фајлова са 953 додато и 0 уклоњено
  1. 10 0
      hx-common/src/main/java/com/fjhx/common/enums/CodingRuleEnum.java
  2. 42 0
      hx-wms/src/main/java/com/fjhx/wms/controller/manual/ManualStockController.java
  3. 34 0
      hx-wms/src/main/java/com/fjhx/wms/controller/manual/ManualStockDetailsController.java
  4. 17 0
      hx-wms/src/main/java/com/fjhx/wms/entity/manual/dto/ManualStockDetailsDto.java
  5. 29 0
      hx-wms/src/main/java/com/fjhx/wms/entity/manual/dto/ManualStockDetailsSelectDto.java
  6. 20 0
      hx-wms/src/main/java/com/fjhx/wms/entity/manual/dto/ManualStockDto.java
  7. 23 0
      hx-wms/src/main/java/com/fjhx/wms/entity/manual/dto/ManualStockSelectDto.java
  8. 93 0
      hx-wms/src/main/java/com/fjhx/wms/entity/manual/po/ManualStock.java
  9. 38 0
      hx-wms/src/main/java/com/fjhx/wms/entity/manual/po/ManualStockDetails.java
  10. 90 0
      hx-wms/src/main/java/com/fjhx/wms/entity/manual/vo/ManualStockDetailsVo.java
  11. 25 0
      hx-wms/src/main/java/com/fjhx/wms/entity/manual/vo/ManualStockVo.java
  12. 105 0
      hx-wms/src/main/java/com/fjhx/wms/flow/ManualInStockFlow.java
  13. 45 0
      hx-wms/src/main/java/com/fjhx/wms/flow/ManualOutStockFlow.java
  14. 23 0
      hx-wms/src/main/java/com/fjhx/wms/mapper/manual/ManualStockDetailsMapper.java
  15. 28 0
      hx-wms/src/main/java/com/fjhx/wms/mapper/manual/ManualStockMapper.java
  16. 22 0
      hx-wms/src/main/java/com/fjhx/wms/service/manual/ManualStockDetailsService.java
  17. 34 0
      hx-wms/src/main/java/com/fjhx/wms/service/manual/ManualStockService.java
  18. 76 0
      hx-wms/src/main/java/com/fjhx/wms/service/manual/impl/ManualStockDetailsServiceImpl.java
  19. 129 0
      hx-wms/src/main/java/com/fjhx/wms/service/manual/impl/ManualStockServiceImpl.java
  20. 32 0
      hx-wms/src/main/resources/mapper/manual/ManualStockDetailsMapper.xml
  21. 38 0
      hx-wms/src/main/resources/mapper/manual/ManualStockMapper.xml

+ 10 - 0
hx-common/src/main/java/com/fjhx/common/enums/CodingRuleEnum.java

@@ -191,6 +191,16 @@ public enum CodingRuleEnum {
             getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
             getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
     )),
+    MANUAL_IN_STOCK("manual_in_stock", "其他入库", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "MIS-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    MANUAL_OUT_STOCK("manual_out_stock", "其他出库", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "MOS-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
     ;
 
 

+ 42 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/manual/ManualStockController.java

@@ -0,0 +1,42 @@
+package com.fjhx.wms.controller.manual;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.manual.dto.ManualStockSelectDto;
+import com.fjhx.wms.entity.manual.vo.ManualStockVo;
+import com.fjhx.wms.service.manual.ManualStockService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 手动出入库记录 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@RestController
+@RequestMapping("/manualStock")
+public class ManualStockController {
+
+    @Autowired
+    private ManualStockService manualStockService;
+
+    /**
+     * 手动出入库记录分页
+     */
+    @PostMapping("/page")
+    public Page<ManualStockVo> page(@RequestBody ManualStockSelectDto dto) {
+        return manualStockService.getPage(dto);
+    }
+
+    @PostMapping("/detail")
+    public ManualStockVo detail(@RequestBody ManualStockSelectDto dto) {
+        return manualStockService.detail(dto.getId());
+    }
+
+}

+ 34 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/manual/ManualStockDetailsController.java

@@ -0,0 +1,34 @@
+package com.fjhx.wms.controller.manual;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.manual.dto.ManualStockDetailsSelectDto;
+import com.fjhx.wms.entity.manual.vo.ManualStockDetailsVo;
+import com.fjhx.wms.service.manual.ManualStockDetailsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 手动出入库记录明细 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@RestController
+@RequestMapping("/manualStockDetails")
+public class ManualStockDetailsController {
+
+    @Autowired
+    private ManualStockDetailsService manualStockDetailsService;
+
+    @PostMapping("/page")
+    public Page<ManualStockDetailsVo> page(@RequestBody ManualStockDetailsSelectDto dto) {
+        return manualStockDetailsService.getPage(dto);
+    }
+
+}

+ 17 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/manual/dto/ManualStockDetailsDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.wms.entity.manual.dto;
+
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 手动出入库记录明细新增编辑入参实体
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Getter
+@Setter
+public class ManualStockDetailsDto extends ManualStockDetails {
+
+}

+ 29 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/manual/dto/ManualStockDetailsSelectDto.java

@@ -0,0 +1,29 @@
+package com.fjhx.wms.entity.manual.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 手动出入库记录明细列表查询入参实体
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Getter
+@Setter
+public class ManualStockDetailsSelectDto extends BaseSelectDto {
+
+    private Integer opType;
+    private Long warehouseId;
+    private Integer type;
+
+    private Long companyId;
+    private Integer status;
+
+
+    private String productIds;
+    private Integer definition;
+    private Long productClassifyId;
+
+}

+ 20 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/manual/dto/ManualStockDto.java

@@ -0,0 +1,20 @@
+package com.fjhx.wms.entity.manual.dto;
+
+import com.fjhx.wms.entity.manual.po.ManualStock;
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 手动出入库记录新增编辑入参实体
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Getter
+@Setter
+public class ManualStockDto extends ManualStock {
+    List<ManualStockDetails> list;
+}

+ 23 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/manual/dto/ManualStockSelectDto.java

@@ -0,0 +1,23 @@
+package com.fjhx.wms.entity.manual.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 手动出入库记录列表查询入参实体
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Getter
+@Setter
+public class ManualStockSelectDto extends BaseSelectDto {
+
+    private Integer opType;
+    private Long warehouseId;
+    private Integer type;
+    private Long companyId;
+    private Integer status;
+
+}

+ 93 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/manual/po/ManualStock.java

@@ -0,0 +1,93 @@
+package com.fjhx.wms.entity.manual.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 手动出入库记录
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Getter
+@Setter
+@TableName("manual_stock")
+public class ManualStock extends BasePo {
+
+    /**
+     * 手动出入库单号
+     */
+    private String code;
+
+    /**
+     * 审批状态
+     */
+    private Integer status;
+
+    /**
+     * 流程id
+     */
+    private Long flowId;
+
+    /**
+     * 业务公司
+     */
+    private Long companyId;
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+
+    /**
+     * 操作类型 1入库 2出库
+     */
+    private Integer opType;
+
+    /**
+     * 入库原因(对应出入库流水类型)
+     */
+    private Integer type;
+
+    /**
+     * 申请 出(领料)入库人
+     */
+    private String exWarehousePerson;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 借出单id
+     */
+    private Long borrowId;
+
+    /**
+     * 借出实际归还时间
+     */
+    private Date restitutionTime;
+
+    /**
+     * 借出预计归还时间
+     */
+    private Date expectRestitutionTime;
+
+    /**
+     * 丢件id
+     */
+    private Long loseId;
+
+    /**
+     * 生产订单id
+     */
+    private Long prodOrderId;
+
+}

+ 38 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/manual/po/ManualStockDetails.java

@@ -0,0 +1,38 @@
+package com.fjhx.wms.entity.manual.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 手动出入库记录明细
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Getter
+@Setter
+@TableName("manual_stock_details")
+public class ManualStockDetails extends BasePo {
+
+    /**
+     * 手动出入库id
+     */
+    private Long manualStockId;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+}

+ 90 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/manual/vo/ManualStockDetailsVo.java

@@ -0,0 +1,90 @@
+package com.fjhx.wms.entity.manual.vo;
+
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 手动出入库记录明细列表查询返回值实体
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Getter
+@Setter
+public class ManualStockDetailsVo extends ManualStockDetails {
+    /**
+     * 手动出入库单号
+     */
+    private String code;
+
+    /**
+     * 审批状态
+     */
+    private Integer status;
+
+    /**
+     * 业务公司
+     */
+    private Long companyId;
+    private String companyName;
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+    private String warehouseName;
+
+    /**
+     * 操作类型 1入库 2出库
+     */
+    private Integer opType;
+
+    /**
+     * 入库原因(对应出入库流水类型)
+     */
+    private Integer type;
+
+    /**
+     * 申请 出(领料)入库人
+     */
+    private String exWarehousePerson;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 借出单id
+     */
+    private Long borrowId;
+
+    /**
+     * 借出实际归还时间
+     */
+    private Date restitutionTime;
+
+    /**
+     * 借出预计归还时间
+     */
+    private Date expectRestitutionTime;
+
+    /**
+     * 丢件id
+     */
+    private Long loseId;
+
+    /**
+     * 生产订单id
+     */
+    private Long prodOrderId;
+
+    private String opUserName;
+
+    private String productName;
+    private String productCode;
+
+}

+ 25 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/manual/vo/ManualStockVo.java

@@ -0,0 +1,25 @@
+package com.fjhx.wms.entity.manual.vo;
+
+import com.fjhx.wms.entity.manual.po.ManualStock;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 手动出入库记录列表查询返回值实体
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Getter
+@Setter
+public class ManualStockVo extends ManualStock {
+    private String warehouseName;
+    private String companyName;
+    private String opUserName;
+
+    private String prodOrderCode;
+
+    private List<ManualStockDetailsVo> list;
+}

+ 105 - 0
hx-wms/src/main/java/com/fjhx/wms/flow/ManualInStockFlow.java

@@ -0,0 +1,105 @@
+package com.fjhx.wms.flow;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.common.service.coding.CodingRuleService;
+import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.flow.enums.FlowStatusEnum;
+import com.fjhx.wms.entity.manual.dto.ManualStockDto;
+import com.fjhx.wms.entity.manual.po.ManualStock;
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
+import com.fjhx.wms.entity.stock.dto.StockDto;
+import com.fjhx.wms.entity.stock.po.Stock;
+import com.fjhx.wms.service.manual.ManualStockDetailsService;
+import com.fjhx.wms.service.manual.ManualStockService;
+import com.fjhx.wms.service.stock.StockService;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class ManualInStockFlow extends FlowDelegate {
+
+    @Autowired
+    private ManualStockService manualStockService;
+    @Autowired
+    private ManualStockDetailsService manualStockDetailsService;
+    @Autowired
+    private CodingRuleService codingRuleService;
+    @Autowired
+    private StockService stockService;
+
+    @Override
+    public String getFlowKey() {
+        return "manual_in_stock_flow";
+    }
+
+    @Override
+    public Long start(Long flowId, JSONObject submitData) {
+        ManualStockDto dto = submitData.toJavaObject(ManualStockDto.class);
+        dto.setFlowId(flowId);
+
+        if (ObjectUtil.isEmpty(dto.getOpType())) {
+            dto.setOpType(1);
+        }
+
+        if (dto.getOpType().equals(1)) {
+            dto.setCode(codingRuleService.createCode(CodingRuleEnum.MANUAL_IN_STOCK.getKey(), null));
+        } else {
+            dto.setCode(codingRuleService.createCode(CodingRuleEnum.MANUAL_OUT_STOCK.getKey(), null));
+        }
+
+        dto.setStatus(FlowStatusEnum1.UNDER_REVIEW.getKey());
+
+        manualStockService.add(dto);
+
+        return dto.getId();
+    }
+
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        manualStockService.update(q -> q
+                .eq(ManualStock::getId, businessId)
+                .set(ManualStock::getStatus, FlowStatusEnum1.PASS.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+
+        //获取入库数据信息
+        ManualStock manualStock = manualStockService.getById(businessId);
+        List<ManualStockDetails> manualStockDetailsList = manualStockDetailsService.list(q -> q.eq(ManualStockDetails::getManualStockId, businessId));
+
+        //生成出入库数据
+        StockDto stockDto = BeanUtil.copyProperties(manualStock, StockDto.class);
+        List<Stock> stockList = BeanUtil.copyToList(manualStockDetailsList, Stock.class);
+        stockDto.setList(stockList);
+        stockService.add(stockDto);
+    }
+
+    @Override
+    public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
+        start(flowId, submitData);
+    }
+
+    @Override
+    public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        manualStockService.update(q -> q
+                .eq(ManualStock::getId, businessId)
+                .set(ManualStock::getStatus, FlowStatusEnum1.REJECT.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+    }
+
+    @Override
+    public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        manualStockService.cancellation(businessId);
+    }
+}

+ 45 - 0
hx-wms/src/main/java/com/fjhx/wms/flow/ManualOutStockFlow.java

@@ -0,0 +1,45 @@
+package com.fjhx.wms.flow;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.flow.enums.FlowStatusEnum;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ManualOutStockFlow extends FlowDelegate {
+
+    @Autowired
+    private ManualInStockFlow manualInStockFlow;
+
+    @Override
+    public String getFlowKey() {
+        return "manual_out_stock_flow";
+    }
+
+    @Override
+    public Long start(Long flowId, JSONObject submitData) {
+        submitData.put("opType", 2);
+        return manualInStockFlow.start(flowId, submitData);
+    }
+
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        manualInStockFlow.end(flowId, businessId, submitData);
+    }
+
+    @Override
+    public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
+        manualInStockFlow.relaunch(flowId, businessId, flowStatus, submitData);
+    }
+
+    @Override
+    public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        manualInStockFlow.reject(flowId, businessId, flowStatus);
+    }
+
+    @Override
+    public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        manualInStockFlow.cancellation(flowId, businessId, flowStatus);
+    }
+}

+ 23 - 0
hx-wms/src/main/java/com/fjhx/wms/mapper/manual/ManualStockDetailsMapper.java

@@ -0,0 +1,23 @@
+package com.fjhx.wms.mapper.manual;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
+import com.fjhx.wms.entity.manual.vo.ManualStockDetailsVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 手动出入库记录明细 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+public interface ManualStockDetailsMapper extends BaseMapper<ManualStockDetails> {
+
+    Page<ManualStockDetailsVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ManualStockDetails> wrapper);
+
+}

+ 28 - 0
hx-wms/src/main/java/com/fjhx/wms/mapper/manual/ManualStockMapper.java

@@ -0,0 +1,28 @@
+package com.fjhx.wms.mapper.manual;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.manual.po.ManualStock;
+import com.fjhx.wms.entity.manual.vo.ManualStockVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 手动出入库记录 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+public interface ManualStockMapper extends BaseMapper<ManualStock> {
+
+    /**
+     * 手动出入库记录分页
+     */
+    Page<ManualStockVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ManualStock> wrapper);
+
+    ManualStockVo detail(Long id);
+
+}

+ 22 - 0
hx-wms/src/main/java/com/fjhx/wms/service/manual/ManualStockDetailsService.java

@@ -0,0 +1,22 @@
+package com.fjhx.wms.service.manual;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.manual.dto.ManualStockDetailsSelectDto;
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
+import com.fjhx.wms.entity.manual.vo.ManualStockDetailsVo;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 手动出入库记录明细 服务类
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+public interface ManualStockDetailsService extends BaseService<ManualStockDetails> {
+
+    Page<ManualStockDetailsVo> getPage(ManualStockDetailsSelectDto dto);
+
+}

+ 34 - 0
hx-wms/src/main/java/com/fjhx/wms/service/manual/ManualStockService.java

@@ -0,0 +1,34 @@
+package com.fjhx.wms.service.manual;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.manual.dto.ManualStockDto;
+import com.fjhx.wms.entity.manual.dto.ManualStockSelectDto;
+import com.fjhx.wms.entity.manual.po.ManualStock;
+import com.fjhx.wms.entity.manual.vo.ManualStockVo;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 手动出入库记录 服务类
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+public interface ManualStockService extends BaseService<ManualStock> {
+
+    /**
+     * 手动出入库记录分页
+     */
+    Page<ManualStockVo> getPage(ManualStockSelectDto dto);
+
+    ManualStockVo detail(Long id);
+
+    /**
+     * 手动出入库记录新增
+     */
+    void add(ManualStockDto manualStockDto);
+
+    void cancellation(Long businessId);
+}

+ 76 - 0
hx-wms/src/main/java/com/fjhx/wms/service/manual/impl/ManualStockDetailsServiceImpl.java

@@ -0,0 +1,76 @@
+package com.fjhx.wms.service.manual.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.tenant.utils.DeptUstil;
+import com.fjhx.wms.entity.manual.dto.ManualStockDetailsSelectDto;
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
+import com.fjhx.wms.entity.manual.vo.ManualStockDetailsVo;
+import com.fjhx.wms.entity.stock.po.Stock;
+import com.fjhx.wms.mapper.manual.ManualStockDetailsMapper;
+import com.fjhx.wms.service.manual.ManualStockDetailsService;
+import com.fjhx.wms.service.warehouse.WarehouseService;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
+import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 手动出入库记录明细 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Service
+public class ManualStockDetailsServiceImpl extends ServiceImpl<ManualStockDetailsMapper, ManualStockDetails> implements ManualStockDetailsService {
+
+    @Autowired
+    private WarehouseService warehouseService;
+
+    @Override
+    public Page<ManualStockDetailsVo> getPage(ManualStockDetailsSelectDto dto) {
+        IWrapper<ManualStockDetails> wrapper = getWrapper();
+
+        wrapper.eq("ms.warehouse_id", dto.getWarehouseId());
+        wrapper.eq("ms.type", dto.getType());
+        wrapper.eq("ms.op_type", dto.getOpType());
+        wrapper.in("msd.product_id", Stock::getProductId, dto.getProductIds());
+        wrapper.eq("pi.definition", dto.getDefinition());
+        wrapper.eq("pi.product_classify_id", dto.getProductClassifyId());
+        wrapper.eq("ms.status", dto.getStatus());
+
+
+        wrapper.keyword(dto.getKeyword(), new SqlField("pi.name"), new SqlField("pi.custom_code"));
+
+        //权限过滤:库存
+        wrapper.in("ms.company_id", SecurityUtils.getCompanyIds());
+        wrapper.eq("ms.company_id", dto.getCompanyId());
+
+        wrapper.orderByDesc("ms", ManualStockDetails::getCreateTime);
+        wrapper.orderByDesc("msd", ManualStockDetails::getId);
+
+
+        Page<ManualStockDetailsVo> page = baseMapper.getPage(dto.getPage(), wrapper);
+        steInfo(page.getRecords());
+        return page;
+    }
+
+    private void steInfo(List<ManualStockDetailsVo> list) {
+        if (ObjectUtil.isEmpty(list)) {
+            return;
+        }
+        UserUtil.assignmentNickName(list, ManualStockDetailsVo::getCreateUser, ManualStockDetailsVo::setOpUserName);
+        DeptUstil.assignmentNickName(list, ManualStockDetailsVo::getCompanyId, ManualStockDetailsVo::setCompanyName);
+        warehouseService.attributeAssign(list, ManualStockDetailsVo::getWarehouseId, (item, warehouse) -> {
+            item.setWarehouseName(warehouse.getName());
+        });
+    }
+}

+ 129 - 0
hx-wms/src/main/java/com/fjhx/wms/service/manual/impl/ManualStockServiceImpl.java

@@ -0,0 +1,129 @@
+package com.fjhx.wms.service.manual.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.flow.service.flow.FlowExampleService;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.tenant.utils.DeptUstil;
+import com.fjhx.wms.entity.manual.dto.ManualStockDto;
+import com.fjhx.wms.entity.manual.dto.ManualStockSelectDto;
+import com.fjhx.wms.entity.manual.po.ManualStock;
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
+import com.fjhx.wms.entity.manual.vo.ManualStockDetailsVo;
+import com.fjhx.wms.entity.manual.vo.ManualStockVo;
+import com.fjhx.wms.mapper.manual.ManualStockMapper;
+import com.fjhx.wms.service.manual.ManualStockDetailsService;
+import com.fjhx.wms.service.manual.ManualStockService;
+import com.fjhx.wms.service.warehouse.WarehouseService;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
+import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 手动出入库记录 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2024-04-24
+ */
+@Service
+public class ManualStockServiceImpl extends ServiceImpl<ManualStockMapper, ManualStock> implements ManualStockService {
+    @Autowired
+    private FlowExampleService flowExampleService;
+    @Autowired
+    private ManualStockDetailsService manualStockDetailsService;
+    @Autowired
+    private WarehouseService warehouseService;
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    @Override
+    public Page<ManualStockVo> getPage(ManualStockSelectDto dto) {
+        IWrapper<ManualStock> wrapper = getWrapper();
+
+        wrapper.eq("ms.status", dto.getStatus());
+        wrapper.eq("ms.warehouse_id", dto.getWarehouseId());
+        wrapper.eq("ms.type", dto.getType());
+        wrapper.eq("ms.op_type", dto.getOpType());
+
+        wrapper.keyword(dto.getKeyword(),
+                new SqlField("ms.remarks"),
+                new SqlField("ms.ex_warehouse_person"),
+                new SqlField("ms.code")
+        );
+
+        //权限过滤:库存
+        wrapper.in("ms.company_id", SecurityUtils.getCompanyIds());
+        wrapper.eq("ms.company_id", dto.getCompanyId());
+
+        wrapper.orderByDesc("ms", ManualStock::getCreateTime);
+        wrapper.orderByDesc("ms", ManualStock::getId);
+        Page<ManualStockVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        steInfo(page.getRecords());
+        return page;
+    }
+
+    private void steInfo(List<ManualStockVo> list) {
+        if (ObjectUtil.isEmpty(list)) {
+            return;
+        }
+        UserUtil.assignmentNickName(list, ManualStockVo::getCreateUser, ManualStockVo::setOpUserName);
+        DeptUstil.assignmentNickName(list, ManualStockVo::getCompanyId, ManualStockVo::setCompanyName);
+        warehouseService.attributeAssign(list, ManualStockVo::getWarehouseId, (item, warehouse) -> {
+            item.setWarehouseName(warehouse.getName());
+        });
+    }
+
+    @Override
+    public ManualStockVo detail(Long id) {
+        ManualStockVo manualStockVo = baseMapper.detail(id);
+
+        steInfo(Collections.singletonList(manualStockVo));
+
+        List<ManualStockDetails> manualStockDetailsList = manualStockDetailsService.list(q -> q.eq(ManualStockDetails::getManualStockId, id));
+        List<ManualStockDetailsVo> manualStockDetailsVos = BeanUtil.copyToList(manualStockDetailsList, ManualStockDetailsVo.class);
+        productInfoService.attributeAssign(manualStockDetailsVos, ManualStockDetails::getProductId, (item, product) -> {
+            item.setProductName(product.getName());
+            item.setProductCode(product.getCustomCode());
+        });
+        manualStockVo.setList(manualStockDetailsVos);
+        return manualStockVo;
+    }
+
+    @DSTransactional
+    @Override
+    public void add(ManualStockDto manualStockDto) {
+        this.save(manualStockDto);
+        List<ManualStockDetails> list = manualStockDto.getList();
+        list.forEach(item -> item.setManualStockId(manualStockDto.getId()));
+        manualStockDetailsService.saveBatch(list);
+    }
+
+    @DSTransactional
+    @Override
+    public void cancellation(Long businessId) {
+        ManualStock byId = this.getById(businessId);
+        this.update(q -> q
+                .eq(ManualStock::getId, byId.getId())
+                .set(ManualStock::getStatus, FlowStatusEnum1.CANCELLATION.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+        flowExampleService.cancellation(byId.getFlowId());
+    }
+
+}

+ 32 - 0
hx-wms/src/main/resources/mapper/manual/ManualStockDetailsMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.wms.mapper.manual.ManualStockDetailsMapper">
+    <select id="getPage" resultType="com.fjhx.wms.entity.manual.vo.ManualStockDetailsVo">
+        SELECT msd.id,
+               msd.manual_stock_id,
+               msd.product_id,
+               msd.quantity,
+               ms.`code`,
+               ms.`status`,
+               ms.company_id,
+               ms.warehouse_id,
+               ms.op_type,
+               ms.type,
+               ms.ex_warehouse_person,
+               ms.remarks,
+               ms.borrow_id,
+               ms.restitution_time,
+               ms.expect_restitution_time,
+               ms.lose_id,
+               ms.prod_order_id,
+               ms.create_user,
+               ms.create_time,
+               ms.update_user,
+               ms.update_time,
+               pi.`name`      AS productName,
+               pi.custom_code AS productCode
+        FROM manual_stock_details msd
+                 JOIN manual_stock ms ON msd.manual_stock_id = ms.id
+                 LEFT JOIN product_info pi ON msd.product_id = pi.id
+    </select>
+</mapper>

+ 38 - 0
hx-wms/src/main/resources/mapper/manual/ManualStockMapper.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.wms.mapper.manual.ManualStockMapper">
+    <sql id="list">
+        select ms.id,
+               ms.code,
+               ms.status,
+               ms.company_id,
+               ms.warehouse_id,
+               ms.op_type,
+               ms.type,
+               ms.flow_id,
+               ms.ex_warehouse_person,
+               ms.remarks,
+               ms.borrow_id,
+               ms.restitution_time,
+               ms.expect_restitution_time,
+               ms.lose_id,
+               ms.prod_order_id,
+               ms.create_user,
+               ms.create_time,
+               ms.update_user,
+               ms.update_time,
+               po.`code` AS prodOrderCode
+        from manual_stock ms
+                 LEFT JOIN production_order po ON ms.prod_order_id = po.id
+    </sql>
+
+    <select id="getPage" resultType="com.fjhx.wms.entity.manual.vo.ManualStockVo">
+        <include refid="list"/>
+        ${ew.customSqlSegment}
+    </select>
+    <select id="detail" resultType="com.fjhx.wms.entity.manual.vo.ManualStockVo">
+        <include refid="list"/>
+        where ms.id = #{id}
+    </select>
+
+</mapper>