diff --git a/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html b/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html
new file mode 100644
index 00000000..19d688dc
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html
@@ -0,0 +1,729 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/templates/inventory/execution/generatedOuter.html b/ruoyi-admin/src/main/resources/templates/inventory/execution/generatedOuter.html
new file mode 100644
index 00000000..ed0772bd
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/templates/inventory/execution/generatedOuter.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/templates/inventory/execution/track.html b/ruoyi-admin/src/main/resources/templates/inventory/execution/track.html
new file mode 100644
index 00000000..fad93669
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/templates/inventory/execution/track.html
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/templates/inventory/info/info.html b/ruoyi-admin/src/main/resources/templates/inventory/info/info.html
index cca872b5..ed7bc4f3 100644
--- a/ruoyi-admin/src/main/resources/templates/inventory/info/info.html
+++ b/ruoyi-admin/src/main/resources/templates/inventory/info/info.html
@@ -95,11 +95,17 @@
},
{
field: 'availableCount',
- title: '实时库存'
+ title: '实时库存',
+ formatter: function (value, row, index) {
+ return value ??0;
+ }
},
{
- field: 'reservedCount',
- title: '累计发货'
+ field: 'cumulativeCount',
+ title: '累计发货',
+ formatter: function (value, row, index) {
+ return value ??0;
+ }
},
{
field: 'vendorName',
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryExecutionController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryExecutionController.java
new file mode 100644
index 00000000..d9bfc0ec
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryExecutionController.java
@@ -0,0 +1,72 @@
+package com.ruoyi.sip.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.ShiroUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.sip.domain.*;
+import com.ruoyi.sip.dto.warehouse.WarehouseInnerExcelDto;
+import com.ruoyi.sip.flowable.domain.Todo;
+import com.ruoyi.sip.service.*;
+import com.ruoyi.sip.vo.ExecutionOrderVo;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 入库单信息Controller
+ *
+ * @author ruoyi
+ * @date 2025-08-06
+ */
+@Controller
+@RequestMapping("/inventory/execution")
+public class InventoryExecutionController extends BaseController {
+ private String prefix = "inventory/execution";
+
+ @Autowired
+ private IProjectOrderInfoService orderInfoService;
+ @Autowired
+ private IExecutionTrackService service;
+
+ @RequiresPermissions("inventory:inner:view")
+ @GetMapping()
+ public String inner() {
+ return prefix + "/track";
+ }
+
+
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(ProjectOrderInfo projectOrderInfo) {
+ startPage();
+ projectOrderInfo.setOrderStatus(ProjectOrderInfo.OrderStatus.APPROVE_COMPLETE.getCode());
+ List list = orderInfoService.selectProjectOrderInfoList(projectOrderInfo);
+ return getDataTable(list);
+ }
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") Long id, ModelMap mmap)
+ {
+ ExecutionOrderVo vo = service.selectInfo(id);
+ mmap.put("projectOrderInfo", vo.getProjectOrderInfo());
+ mmap.put("productDetailList", vo.getProductDetailList());
+ mmap.put("inventoryOuterList", vo.getInventoryOuterList());
+
+
+ return prefix + "/edit";
+ }
+
+
+
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryInfoController.java
index ae6e220f..31176637 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryInfoController.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryInfoController.java
@@ -1,8 +1,16 @@
package com.ruoyi.sip.controller;
+import java.util.Collections;
import java.util.List;
-import com.ruoyi.sip.dto.inventory.GroupInfo;
+import cn.hutool.core.collection.CollUtil;
+import com.ruoyi.common.utils.ShiroUtils;
+import com.ruoyi.sip.domain.ProductInfo;
+import com.ruoyi.sip.domain.ProjectInfo;
+import com.ruoyi.sip.domain.VendorInfo;
+import com.ruoyi.sip.service.IProductInfoService;
+import com.ruoyi.sip.service.IVendorInfoService;
+import liquibase.pro.packaged.A;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -35,6 +43,10 @@ public class InventoryInfoController extends BaseController
@Autowired
private IInventoryInfoService inventoryInfoService;
+ @Autowired
+ private IProductInfoService productInfoService;
+ @Autowired
+ private IVendorInfoService vendorInfoService;
@RequiresPermissions("inventory:info:view")
@GetMapping()
@@ -57,10 +69,17 @@ public class InventoryInfoController extends BaseController
}
@PostMapping("/group/list")
@ResponseBody
- public TableDataInfo groupList(GroupInfo info)
+ public TableDataInfo groupList(ProductInfo info)
{
startPage();
- List list = inventoryInfoService.listGroup(info);
+// List current = vendorInfoService.current();
+// if (CollUtil.isEmpty(current)) {
+// return getDataTable(Collections.emptyList());
+// }
+// if (!ShiroUtils.getSysUser().isAdmin()) {
+// info.setVendorCode(current.get(0).getVendorCode());
+// }
+ List list = productInfoService.selectProductInfoList(info);
return getDataTable(list);
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryOuterController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryOuterController.java
new file mode 100644
index 00000000..34ec3729
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/InventoryOuterController.java
@@ -0,0 +1,128 @@
+package com.ruoyi.sip.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.sip.domain.InventoryOuter;
+import com.ruoyi.sip.service.IInventoryOuterService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 出库单Controller
+ *
+ * @author ch
+ * @date 2025-08-08
+ */
+@Controller
+@RequestMapping("/inventory/outer")
+public class InventoryOuterController extends BaseController
+{
+ private String prefix = "inventory/outer";
+
+ @Autowired
+ private IInventoryOuterService inventoryOuterService;
+
+ @RequiresPermissions("inventory:outer:view")
+ @GetMapping()
+ public String outer()
+ {
+ return prefix + "/outer";
+ }
+
+ /**
+ * 查询出库单列表
+ */
+ @RequiresPermissions("inventory:outer:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(InventoryOuter inventoryOuter)
+ {
+ startPage();
+ List list = inventoryOuterService.selectInventoryOuterList(inventoryOuter);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出出库单列表
+ */
+ @RequiresPermissions("inventory:outer:export")
+ @Log(title = "出库单", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(InventoryOuter inventoryOuter)
+ {
+ List list = inventoryOuterService.selectInventoryOuterList(inventoryOuter);
+ ExcelUtil util = new ExcelUtil(InventoryOuter.class);
+ return util.exportExcel(list, "出库单数据");
+ }
+
+ /**
+ * 新增出库单
+ */
+ @RequiresPermissions("inventory:outer:add")
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存出库单
+ */
+ @RequiresPermissions("inventory:outer:add")
+ @Log(title = "出库单", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(InventoryOuter inventoryOuter)
+ {
+ return toAjax(inventoryOuterService.insertInventoryOuter(inventoryOuter));
+ }
+
+ /**
+ * 修改出库单
+ */
+ @RequiresPermissions("inventory:outer:edit")
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") Long id, ModelMap mmap)
+ {
+ InventoryOuter inventoryOuter = inventoryOuterService.selectInventoryOuterById(id);
+ mmap.put("inventoryOuter", inventoryOuter);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存出库单
+ */
+ @RequiresPermissions("inventory:outer:edit")
+ @Log(title = "出库单", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(InventoryOuter inventoryOuter)
+ {
+ return toAjax(inventoryOuterService.updateInventoryOuter(inventoryOuter));
+ }
+
+ /**
+ * 删除出库单
+ */
+ @RequiresPermissions("inventory:outer:remove")
+ @Log(title = "出库单", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(inventoryOuterService.deleteInventoryOuterByIds(ids));
+ }
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/InventoryOuter.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/InventoryOuter.java
new file mode 100644
index 00000000..8867c5a1
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/InventoryOuter.java
@@ -0,0 +1,71 @@
+package com.ruoyi.sip.domain;
+
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.ToString;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 出库单对象 oms_inventory_outer
+ *
+ * @author ch
+ * @date 2025-08-08
+ */
+@Data
+@ToString
+public class InventoryOuter extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** */
+ private Long id;
+
+ /** 出库单号 */
+ @Excel(name = "出库单号")
+ private String outerCode;
+
+ /** 产品BOM编码 */
+ @Excel(name = "产品BOM编码")
+ private String productCode;
+ private List productCodeList;
+
+ /** 数量 */
+ @Excel(name = "数量")
+ private Long quantity;
+
+ /** 出库状态 */
+ @Excel(name = "出库状态")
+ private String outerStatus;
+
+ /** 订单编码 */
+ @Excel(name = "订单编码")
+ private String orderCode;
+
+ /** 联系人 */
+ @Excel(name = "联系人")
+ private String contactPerson;
+
+ /** 联系电话 */
+ @Excel(name = "联系电话")
+ private String contactPhone;
+
+ /** 联系地址 */
+ @Excel(name = "联系地址")
+ private String contactAddress;
+
+ /** 发货时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @Excel(name = "发货时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date deliveryTime;
+
+ /** 发货时间选择(0:立即发货 1:自定义) */
+ @Excel(name = "发货时间选择(0:立即发货 1:自定义)")
+ private String deliveryTimeType;
+
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProductInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProductInfo.java
index 3929ad97..5b799109 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProductInfo.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProductInfo.java
@@ -62,6 +62,8 @@ public class ProductInfo extends BaseEntity
private String serialNumber;
private String vendorCode;
private String vendorName;
+ private Long availableCount;
+ private Long cumulativeCount;
@Getter
public enum ProductTypeEnum {
/**
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java
index 32babcb0..1dccc741 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java
@@ -129,6 +129,7 @@ public class ProjectOrderInfo extends BaseEntity {
private String partnerCode;
@Excel(name = "进货商")
private String partnerName;
+ private String projectPartnerName;
/**
* 实际进货金额
@@ -216,6 +217,12 @@ public class ProjectOrderInfo extends BaseEntity {
* 模板 0:直签 1:总代 2 定制开发
*/
private String processTemplate;
+ private String deliveryStatus;
+ private String signStatus;
+ private String outerStatus;
+ private Date approveTime;
+ private Date approveTimeStart;
+ private Date approveTimeEnd;
private BigDecimal discountFold;
@@ -286,4 +293,57 @@ public class ProjectOrderInfo extends BaseEntity {
}
}
+ @Getter
+ public enum DeliveryStatusEnum {
+ NOT_DELIVERY("0", "未发货"),
+ PART_DELIVERY("1", "部分发货"),
+ ALL_DELIVERY("2", "全部发货"),
+
+ ;
+
+ private final String value;
+ private final String code;
+
+ DeliveryStatusEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ }
+ @Getter
+ public enum SignStatusEnum {
+ NOT_SIGN("0", "未签收"),
+ SIGN("1", "已签收"),
+
+
+ ;
+
+ private final String value;
+ private final String code;
+
+ SignStatusEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ }
+ @Getter
+ public enum OuterStatusEnum {
+ NOT_OUTER("0", "未出库"),
+ PART_OUTER("1", "部分出库"),
+ ALL_OUTER("2", "全部出库"),
+ RETURN("3", "已退回"),
+
+
+ ;
+
+ private final String value;
+ private final String code;
+
+ OuterStatusEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ }
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/GroupInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/ProductDetail.java
similarity index 55%
rename from ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/GroupInfo.java
rename to ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/ProductDetail.java
index 4a25c018..1550d48d 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/GroupInfo.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/ProductDetail.java
@@ -1,35 +1,28 @@
package com.ruoyi.sip.dto.inventory;
-import com.ruoyi.common.annotation.Excel;
import lombok.Data;
/**
* @author : ch
* @version : 1.0
- * @ClassName : GroupInfo
+ * @ClassName : ProductDetail
* @Description :
- * @DATE : Created in 17:32 2025/8/7
+ * @DATE : Created in 11:28 2025/8/8
* Copyright: Copyright(c) 2025
* Company : 紫光汇智信息技术有限公司
* Modification History:
* Date Author Version Discription
* --------------------------------------------------------------------------
- * 2025/08/07 ch 1.0 Why & What is modified: <修改原因描述> *
+ * 2025/08/08 ch 1.0 Why & What is modified: <修改原因描述> *
*/
@Data
-public class GroupInfo {
- @Excel(name = "产品编码")
+public class ProductDetail {
private String productCode;
- @Excel(name = "产品型号")
- private String model;
- @Excel(name = "产品名称")
- private String productName;
- @Excel(name = "实时库存")
- private Long availableCount;
- @Excel(name = "累计发货")
- private Long reservedCount;
- @Excel(name = "制造商")
private String vendorName;
-
+ private String model;
+ private Long quantity;
+ private Long generatedQuantity;
+ private Long confirmQuantity;
+ private Long availableCount;
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/InventoryInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/InventoryInfoMapper.java
index c5a17f44..4d4ddfb5 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/InventoryInfoMapper.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/InventoryInfoMapper.java
@@ -2,7 +2,7 @@ package com.ruoyi.sip.mapper;
import java.util.List;
import com.ruoyi.sip.domain.InventoryInfo;
-import com.ruoyi.sip.dto.inventory.GroupInfo;
+import org.apache.ibatis.annotations.Param;
/**
* 产品库存Mapper接口
@@ -61,6 +61,4 @@ public interface InventoryInfoMapper
public int deleteInventoryInfoByIds(String[] ids);
void saveBatch(List inventoryInfoList);
-
- List listGroup(GroupInfo inventoryInfo);
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/InventoryOuterMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/InventoryOuterMapper.java
new file mode 100644
index 00000000..b7b7db93
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/InventoryOuterMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.sip.mapper;
+
+import java.util.List;
+import com.ruoyi.sip.domain.InventoryOuter;
+
+/**
+ * 出库单Mapper接口
+ *
+ * @author ch
+ * @date 2025-08-08
+ */
+public interface InventoryOuterMapper
+{
+ /**
+ * 查询出库单
+ *
+ * @param id 出库单主键
+ * @return 出库单
+ */
+ public InventoryOuter selectInventoryOuterById(Long id);
+
+ /**
+ * 查询出库单列表
+ *
+ * @param inventoryOuter 出库单
+ * @return 出库单集合
+ */
+ public List selectInventoryOuterList(InventoryOuter inventoryOuter);
+
+ /**
+ * 新增出库单
+ *
+ * @param inventoryOuter 出库单
+ * @return 结果
+ */
+ public int insertInventoryOuter(InventoryOuter inventoryOuter);
+
+ /**
+ * 修改出库单
+ *
+ * @param inventoryOuter 出库单
+ * @return 结果
+ */
+ public int updateInventoryOuter(InventoryOuter inventoryOuter);
+
+ /**
+ * 删除出库单
+ *
+ * @param id 出库单主键
+ * @return 结果
+ */
+ public int deleteInventoryOuterById(Long id);
+
+ /**
+ * 批量删除出库单
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteInventoryOuterByIds(String[] ids);
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProductInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProductInfoMapper.java
index 29abe5c7..7c1c257b 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProductInfoMapper.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProductInfoMapper.java
@@ -70,4 +70,6 @@ public interface ProductInfoMapper
List query(MaintenanceRecordsDto dto);
+ void updateAvailableCount(@Param("quantity") Long quantity, @Param("productCode") String productCode);
+ void updateCumulativeCount(@Param("quantity") Long quantity, @Param("productCode") String productCode);
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IExecutionTrackService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IExecutionTrackService.java
new file mode 100644
index 00000000..d88dd219
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IExecutionTrackService.java
@@ -0,0 +1,31 @@
+package com.ruoyi.sip.service;
+
+
+import com.ruoyi.sip.domain.ProjectOrderInfo;
+import com.ruoyi.sip.domain.ProjectProductInfo;
+import com.ruoyi.sip.mapper.ProjectOrderInfoMapper;
+import com.ruoyi.sip.vo.ExecutionOrderVo;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author : ch
+ * @version : 1.0
+ * @ClassName : IExecutionTrackService
+ * @Description :
+ * @DATE : Created in 11:05 2025/8/8
+ * Copyright: Copyright(c) 2025
+ * Company : 紫光汇智信息技术有限公司
+ * Modification History:
+ * Date Author Version Discription
+ * --------------------------------------------------------------------------
+ * 2025/08/08 ch 1.0 Why & What is modified: <修改原因描述> *
+ */
+public interface IExecutionTrackService {
+
+ ExecutionOrderVo selectInfo(Long id);
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IInventoryInfoService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IInventoryInfoService.java
index 50d5202d..a827170f 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IInventoryInfoService.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IInventoryInfoService.java
@@ -2,7 +2,6 @@ package com.ruoyi.sip.service;
import java.util.List;
import com.ruoyi.sip.domain.InventoryInfo;
-import com.ruoyi.sip.dto.inventory.GroupInfo;
import com.ruoyi.sip.dto.warehouse.WarehouseInnerExcelDto;
/**
@@ -72,5 +71,5 @@ public interface IInventoryInfoService
void saveBatch(List inventoryInfoList);
- List listGroup(GroupInfo inventoryInfo);
+
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IInventoryOuterService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IInventoryOuterService.java
new file mode 100644
index 00000000..6aa5f11a
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IInventoryOuterService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.sip.service;
+
+import java.util.List;
+import com.ruoyi.sip.domain.InventoryOuter;
+
+/**
+ * 出库单Service接口
+ *
+ * @author ch
+ * @date 2025-08-08
+ */
+public interface IInventoryOuterService
+{
+ /**
+ * 查询出库单
+ *
+ * @param id 出库单主键
+ * @return 出库单
+ */
+ public InventoryOuter selectInventoryOuterById(Long id);
+
+ /**
+ * 查询出库单列表
+ *
+ * @param inventoryOuter 出库单
+ * @return 出库单集合
+ */
+ public List selectInventoryOuterList(InventoryOuter inventoryOuter);
+
+ /**
+ * 新增出库单
+ *
+ * @param inventoryOuter 出库单
+ * @return 结果
+ */
+ public int insertInventoryOuter(InventoryOuter inventoryOuter);
+
+ /**
+ * 修改出库单
+ *
+ * @param inventoryOuter 出库单
+ * @return 结果
+ */
+ public int updateInventoryOuter(InventoryOuter inventoryOuter);
+
+ /**
+ * 批量删除出库单
+ *
+ * @param ids 需要删除的出库单主键集合
+ * @return 结果
+ */
+ public int deleteInventoryOuterByIds(String ids);
+
+ /**
+ * 删除出库单信息
+ *
+ * @param id 出库单主键
+ * @return 结果
+ */
+ public int deleteInventoryOuterById(Long id);
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProductInfoService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProductInfoService.java
index 947a7903..cbf11b36 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProductInfoService.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProductInfoService.java
@@ -2,7 +2,6 @@ package com.ruoyi.sip.service;
import java.util.List;
-import com.ruoyi.sip.controller.ProductInfoController;
import com.ruoyi.sip.domain.MaintenanceRecordsDto;
import com.ruoyi.sip.domain.ProductInfo;
@@ -64,4 +63,6 @@ public interface IProductInfoService
List query(MaintenanceRecordsDto dto);
List selectProductInfoByCodeList(List productCodeList);
+
+ void updateAvailableCount(Long quantity, String productCode);
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java
new file mode 100644
index 00000000..5299e10a
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java
@@ -0,0 +1,149 @@
+package com.ruoyi.sip.service.impl;
+
+
+import com.ruoyi.sip.domain.InventoryOuter;
+import com.ruoyi.sip.domain.ProductInfo;
+import com.ruoyi.sip.domain.ProjectOrderInfo;
+import com.ruoyi.sip.domain.ProjectProductInfo;
+import com.ruoyi.sip.dto.inventory.ProductDetail;
+import com.ruoyi.sip.mapper.ProjectOrderInfoMapper;
+import com.ruoyi.sip.service.*;
+import com.ruoyi.sip.vo.ExecutionOrderVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * @author : ch
+ * @version : 1.0
+ * @ClassName : ExecutionTrackServiceImpl
+ * @Description :
+ * @DATE : Created in 11:05 2025/8/8
+ * Copyright: Copyright(c) 2025
+ * Company : 紫光汇智信息技术有限公司
+ * Modification History:
+ * Date Author Version Discription
+ * --------------------------------------------------------------------------
+ * 2025/08/08 ch 1.0 Why & What is modified: <修改原因描述> *
+ */
+@Service
+public class ExecutionTrackServiceImpl implements IExecutionTrackService {
+ @Resource
+ private ProjectOrderInfoMapper projectOrderInfoMapper;
+ @Autowired
+ private IProjectProductInfoService projectProductInfoService;
+ @Autowired
+ private IInventoryInfoService inventoryInfoService;
+ @Autowired
+ private IProductInfoService productInfoService;
+ @Autowired
+ private IInventoryOuterService outerService;
+
+ @Override
+ public ExecutionOrderVo selectInfo(Long id) {
+ ExecutionOrderVo vo = new ExecutionOrderVo();
+ //基础信息
+ ProjectOrderInfo projectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoById(id);
+ vo.setProjectOrderInfo(projectOrderInfo);
+ //产品清单
+ List projectProductInfos = projectProductInfoService.selectProjectProductInfoListByProjectId(Collections.singletonList(projectOrderInfo.getProjectId()));
+ // 筛选软件或硬件产品并合并相同产品代码的记录
+ List productDetails = projectProductInfos.stream()
+ .filter(item -> item.getType().equals(ProductInfo.ProductTypeEnum.HARDWARE.getType()) ||
+ item.getType().equals(ProductInfo.ProductTypeEnum.SOFTWARE.getType()))
+ .collect(Collectors.groupingBy(ProjectProductInfo::getProductBomCode))
+ .entrySet().stream()
+ .map(entry -> {
+ ProductDetail detail = new ProductDetail();
+ String productCode = entry.getKey();
+ List items = entry.getValue();
+
+ // 合并数量
+ Long totalQuantity = items.stream()
+ .mapToLong(ProjectProductInfo::getQuantity)
+ .sum();
+
+ detail.setProductCode(productCode);
+ detail.setQuantity(totalQuantity);
+
+ // 设置型号(取第一个匹配项的型号)
+ if (!items.isEmpty()) {
+ detail.setModel(items.get(0).getModel());
+ }
+
+ return detail;
+ })
+ .collect(Collectors.toList());
+
+ // 获取产品代码列表
+ List productCodeList = productDetails.stream()
+ .map(ProductDetail::getProductCode)
+ .collect(Collectors.toList());
+
+ // 查询库存信息
+ List groupInfos = productInfoService.selectProductInfoByCodeList(productCodeList);
+
+ // 将库存信息映射到产品详情中
+ if (groupInfos != null && !groupInfos.isEmpty()) {
+ Map inventoryMap = groupInfos.stream()
+ .collect(Collectors.toMap(ProductInfo::getProductCode,
+ Function.identity(), (v1, v2) -> v1));
+
+ for (ProductDetail detail : productDetails) {
+ ProductInfo info = inventoryMap.get(detail.getProductCode());
+ detail.setAvailableCount((info != null && info.getAvailableCount() != null) ? info.getAvailableCount() : 0L);
+ detail.setVendorName((info != null && info.getVendorName() != null) ? info.getVendorName():"" );
+ }
+
+ } else {
+ productDetails.forEach(detail -> detail.setAvailableCount(0L));
+ }
+
+ // 查询出库单信息
+ InventoryOuter inventoryOuter = new InventoryOuter();
+ inventoryOuter.setOuterCode(projectOrderInfo.getOrderCode());
+ List inventoryOuters = outerService.selectInventoryOuterList(inventoryOuter);
+ vo.setInventoryOuterList(inventoryOuters);
+ // 根据出库单状态设置generatedQuantity和confirmQuantity
+ if (inventoryOuters != null && !inventoryOuters.isEmpty()) {
+ Map> outersByProductCode = inventoryOuters.stream()
+ .collect(Collectors.groupingBy(InventoryOuter::getProductCode));
+
+ productDetails.forEach(detail -> {
+ List outers = outersByProductCode.get(detail.getProductCode());
+ if (outers != null) {
+ // generatedQuantity: 状态为"已生成"(假设为"1")的出库单数量总和
+ Long generated = outers.stream()
+ .filter(outer -> "1".equals(outer.getOuterStatus()))
+ .mapToLong(InventoryOuter::getQuantity)
+ .sum();
+
+ // confirmQuantity: 状态为"已确认"(假设为"2")的出库单数量总和
+ Long confirmed = outers.stream()
+ .filter(outer -> "2".equals(outer.getOuterStatus()))
+ .mapToLong(InventoryOuter::getQuantity)
+ .sum();
+
+ detail.setGeneratedQuantity(generated);
+ detail.setConfirmQuantity(confirmed);
+ } else {
+ detail.setGeneratedQuantity(0L);
+ detail.setConfirmQuantity(0L);
+ }
+ });
+ } else {
+ productDetails.forEach(detail -> {
+ detail.setGeneratedQuantity(0L);
+ detail.setConfirmQuantity(0L);
+ });
+ }
+ vo.setProductDetailList(productDetails);
+ return vo;
+ }
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryInfoServiceImpl.java
index 2f224146..4fb209d3 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryInfoServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryInfoServiceImpl.java
@@ -1,28 +1,26 @@
package com.ruoyi.sip.service.impl;
+import cn.hutool.core.collection.CollUtil;
+import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.sip.domain.InventoryInfo;
+import com.ruoyi.sip.domain.OmsWarehouseInfo;
+import com.ruoyi.sip.domain.ProductInfo;
+import com.ruoyi.sip.dto.warehouse.WarehouseInnerExcelDto;
+import com.ruoyi.sip.mapper.InventoryInfoMapper;
+import com.ruoyi.sip.service.IInventoryInfoService;
+import com.ruoyi.sip.service.IOmsWarehouseInfoService;
+import com.ruoyi.sip.service.IProductInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
-import cn.hutool.core.collection.CollUtil;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.sip.domain.OmsWarehouseInfo;
-import com.ruoyi.sip.domain.ProductInfo;
-import com.ruoyi.sip.dto.inventory.GroupInfo;
-import com.ruoyi.sip.dto.warehouse.WarehouseInnerExcelDto;
-import com.ruoyi.sip.service.IOmsWarehouseInfoService;
-import com.ruoyi.sip.service.IProductInfoService;
-import liquibase.pro.packaged.A;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.sip.mapper.InventoryInfoMapper;
-import com.ruoyi.sip.domain.InventoryInfo;
-import com.ruoyi.sip.service.IInventoryInfoService;
-import com.ruoyi.common.core.text.Convert;
-
/**
* 产品库存Service业务层处理
*
@@ -151,8 +149,5 @@ public class InventoryInfoServiceImpl implements IInventoryInfoService {
inventoryInfoMapper.saveBatch(inventoryInfoList);
}
- @Override
- public List listGroup(GroupInfo inventoryInfo) {
- return inventoryInfoMapper.listGroup(inventoryInfo);
- }
+
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryOuterServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryOuterServiceImpl.java
new file mode 100644
index 00000000..7f8d4d24
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryOuterServiceImpl.java
@@ -0,0 +1,97 @@
+package com.ruoyi.sip.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.sip.mapper.InventoryOuterMapper;
+import com.ruoyi.sip.domain.InventoryOuter;
+import com.ruoyi.sip.service.IInventoryOuterService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 出库单Service业务层处理
+ *
+ * @author ch
+ * @date 2025-08-08
+ */
+@Service
+public class InventoryOuterServiceImpl implements IInventoryOuterService
+{
+ @Autowired
+ private InventoryOuterMapper inventoryOuterMapper;
+
+ /**
+ * 查询出库单
+ *
+ * @param id 出库单主键
+ * @return 出库单
+ */
+ @Override
+ public InventoryOuter selectInventoryOuterById(Long id)
+ {
+ return inventoryOuterMapper.selectInventoryOuterById(id);
+ }
+
+ /**
+ * 查询出库单列表
+ *
+ * @param inventoryOuter 出库单
+ * @return 出库单
+ */
+ @Override
+ public List selectInventoryOuterList(InventoryOuter inventoryOuter)
+ {
+ return inventoryOuterMapper.selectInventoryOuterList(inventoryOuter);
+ }
+
+ /**
+ * 新增出库单
+ *
+ * @param inventoryOuter 出库单
+ * @return 结果
+ */
+ @Override
+ public int insertInventoryOuter(InventoryOuter inventoryOuter)
+ {
+ inventoryOuter.setCreateTime(DateUtils.getNowDate());
+ return inventoryOuterMapper.insertInventoryOuter(inventoryOuter);
+ }
+
+ /**
+ * 修改出库单
+ *
+ * @param inventoryOuter 出库单
+ * @return 结果
+ */
+ @Override
+ public int updateInventoryOuter(InventoryOuter inventoryOuter)
+ {
+ inventoryOuter.setUpdateTime(DateUtils.getNowDate());
+ return inventoryOuterMapper.updateInventoryOuter(inventoryOuter);
+ }
+
+ /**
+ * 批量删除出库单
+ *
+ * @param ids 需要删除的出库单主键
+ * @return 结果
+ */
+ @Override
+ public int deleteInventoryOuterByIds(String ids)
+ {
+ return inventoryOuterMapper.deleteInventoryOuterByIds(Convert.toStrArray(ids));
+ }
+
+ /**
+ * 删除出库单信息
+ *
+ * @param id 出库单主键
+ * @return 结果
+ */
+ @Override
+ public int deleteInventoryOuterById(Long id)
+ {
+ return inventoryOuterMapper.deleteInventoryOuterById(id);
+ }
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java
index d453f9ce..1b8f71a0 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java
@@ -7,16 +7,14 @@ import java.util.Objects;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.sip.domain.InventoryInfo;
import com.ruoyi.sip.domain.VendorInfo;
-import com.ruoyi.sip.dto.warehouse.WarehouseInnerExcelDto;
-import com.ruoyi.sip.mapper.InventoryInfoMapper;
import com.ruoyi.sip.service.IInventoryInfoService;
+import com.ruoyi.sip.service.IProductInfoService;
import com.ruoyi.sip.service.IVendorInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -24,6 +22,7 @@ import com.ruoyi.sip.mapper.OmsInventoryInnerMapper;
import com.ruoyi.sip.domain.OmsInventoryInner;
import com.ruoyi.sip.service.IOmsInventoryInnerService;
import com.ruoyi.common.core.text.Convert;
+import org.springframework.transaction.annotation.Transactional;
/**
* 入库单信息Service业务层处理
@@ -32,6 +31,7 @@ import com.ruoyi.common.core.text.Convert;
* @date 2025-08-06
*/
@Service
+@Transactional(rollbackFor = Exception.class)
public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService {
@Autowired
private OmsInventoryInnerMapper omsInventoryInnerMapper;
@@ -40,6 +40,8 @@ public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService {
private IInventoryInfoService inventoryInfoService;
@Autowired
private IVendorInfoService vendorInfoService;
+ @Autowired
+ private IProductInfoService productInfoService;
/**
* 查询入库单信息
@@ -105,6 +107,7 @@ public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService {
item.setCreateTime(nowDate);
});
inventoryInfoService.saveBatch(inventoryInfoList);
+ productInfoService.updateAvailableCount(omsInventoryInner.getQuantity(),omsInventoryInner.getProductCode());
return omsInventoryInnerMapper.insertOmsInventoryInner(omsInventoryInner);
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProductInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProductInfoServiceImpl.java
index f20eef2a..9ae02a16 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProductInfoServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProductInfoServiceImpl.java
@@ -124,4 +124,9 @@ public class ProductInfoServiceImpl implements IProductInfoService
}
return productInfoMapper.selectProductInfoByCodeList(productCodeList);
}
+
+ @Override
+ public void updateAvailableCount(Long quantity, String productCode) {
+ productInfoMapper.updateAvailableCount(quantity,productCode);
+ }
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java
index a442a205..2da09bff 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java
@@ -667,6 +667,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
headerList.add(Collections.singletonList("最终客户"));
headerList.add(Collections.singletonList("BG"));
headerList.add(Collections.singletonList("行业"));
+ headerList.add(Collections.singletonList("运作方"));
headerList.add(Collections.singletonList("进货商接口人"));
// headerList.add(Collections.singletonList("Email"));
@@ -830,7 +831,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
totalPrice = processProducts(deployList, maxDeployService, row, totalPrice);
//添加维保
totalPrice = processProducts(maintenanceList, maxMaintenanceService, row, totalPrice);
- int insertIndex=17;
+ int insertIndex=18;
row.add(insertIndex++, wssDto.getQuantity().toString());
row.add(insertIndex++, wssDto.getAllPrice().toString());
row.add(insertIndex++, wspDto.getQuantity().toString());
@@ -883,7 +884,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
row.add(DictUtils.getDictLabel("bg_type", info.getBgProperty()));
row.add(info.getIndustryType());
-
+ row.add(info.getProjectPartnerName());
row.add(info.getBusinessPerson());
// row.add(info.getBusinessEmail());
row.add(info.getBusinessPhone());
@@ -1015,6 +1016,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
ProjectOrderInfo dbProjectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoByCode(todo.getBusinessKey());
ProjectOrderInfo projectOrderInfo = new ProjectOrderInfo();
projectOrderInfo.setOrderStatus(ProjectOrderInfo.OrderStatus.APPROVE_COMPLETE.getCode());
+ projectOrderInfo.setApproveTime(DateUtils.getNowDate());
//修改执行单时间 只有直签且有现金折扣的时间才是配置时间 否则默认30天
int addHour = ProjectOrderInfo.ProcessTemplateEnum.DIRECT_SIGNING.getCode().equals(dbProjectOrderInfo.getProcessTemplate())
&& dbProjectOrderInfo.getDiscountFold() != null && dbProjectOrderInfo.getDiscountFold().compareTo(BigDecimal.ONE) < 0 ? endHour : 30;
@@ -1026,7 +1028,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
// projectInfo
if (dbProjectOrderInfo.getDiscountFold().compareTo(BigDecimal.ONE)!=0){
- productInfoService.calcByDiscountFold(dbProjectOrderInfo.getDiscountFold(), projectOrderInfo.getProjectId());
+ productInfoService.calcByDiscountFold(dbProjectOrderInfo.getDiscountFold(), dbProjectOrderInfo.getProjectId());
}
//todo 总代 发 代理商 商务 执行单发 商务 制造商
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/vo/ExecutionOrderVo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/vo/ExecutionOrderVo.java
new file mode 100644
index 00000000..708a2f5e
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/vo/ExecutionOrderVo.java
@@ -0,0 +1,30 @@
+package com.ruoyi.sip.vo;
+
+
+import com.ruoyi.sip.domain.InventoryOuter;
+import com.ruoyi.sip.domain.ProductInfo;
+import com.ruoyi.sip.domain.ProjectOrderInfo;
+import com.ruoyi.sip.dto.inventory.ProductDetail;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : ch
+ * @version : 1.0
+ * @ClassName : ExecutionOrderVo
+ * @Description :
+ * @DATE : Created in 15:05 2025/8/8
+ * Copyright: Copyright(c) 2025
+ * Company : 紫光汇智信息技术有限公司
+ * Modification History:
+ * Date Author Version Discription
+ * --------------------------------------------------------------------------
+ * 2025/08/08 ch 1.0 Why & What is modified: <修改原因描述> *
+ */
+@Data
+public class ExecutionOrderVo {
+ private ProjectOrderInfo projectOrderInfo;
+ private List productDetailList;
+ private List inventoryOuterList;
+}
diff --git a/ruoyi-sip/src/main/resources/mapper/inventory/InventoryInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/inventory/InventoryInfoMapper.xml
index 6ae6ce49..e56a634a 100644
--- a/ruoyi-sip/src/main/resources/mapper/inventory/InventoryInfoMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/inventory/InventoryInfoMapper.xml
@@ -47,23 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where t1.id = #{id}
-
insert into oms_inventory_info
diff --git a/ruoyi-sip/src/main/resources/mapper/inventory/InventoryOuterMapper.xml b/ruoyi-sip/src/main/resources/mapper/inventory/InventoryOuterMapper.xml
new file mode 100644
index 00000000..43086a50
--- /dev/null
+++ b/ruoyi-sip/src/main/resources/mapper/inventory/InventoryOuterMapper.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, outer_code, product_code, quantity, outer_status, order_code, contact_person, contact_phone, contact_address, delivery_time, delivery_time_type, create_by, update_by, create_time, update_time from oms_inventory_outer
+
+
+
+
+
+
+
+ insert into oms_inventory_outer
+
+ outer_code,
+ product_code,
+ quantity,
+ outer_status,
+ order_code,
+ contact_person,
+ contact_phone,
+ contact_address,
+ delivery_time,
+ delivery_time_type,
+ create_by,
+ update_by,
+ create_time,
+ update_time,
+
+
+ #{outerCode},
+ #{productCode},
+ #{quantity},
+ #{outerStatus},
+ #{orderCode},
+ #{contactPerson},
+ #{contactPhone},
+ #{contactAddress},
+ #{deliveryTime},
+ #{deliveryTimeType},
+ #{createBy},
+ #{updateBy},
+ #{createTime},
+ #{updateTime},
+
+
+
+
+ update oms_inventory_outer
+
+ outer_code = #{outerCode},
+ product_code = #{productCode},
+ quantity = #{quantity},
+ outer_status = #{outerStatus},
+ order_code = #{orderCode},
+ contact_person = #{contactPerson},
+ contact_phone = #{contactPhone},
+ contact_address = #{contactAddress},
+ delivery_time = #{deliveryTime},
+ delivery_time_type = #{deliveryTimeType},
+ create_by = #{createBy},
+ update_by = #{updateBy},
+ create_time = #{createTime},
+ update_time = #{updateTime},
+
+ where id = #{id}
+
+
+
+ delete from oms_inventory_outer where id = #{id}
+
+
+
+ delete from oms_inventory_outer where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml
index 87064e58..fce80414 100644
--- a/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml
@@ -40,16 +40,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select id, project_id,province, city, business_person, business_email, business_phone, order_code, currencyType,
shipment_amount, actual_purchase_amount, order_end_time, delivery_time, company_delivery, notifier,
notifier_email, notifier_phone, duty, duty_email, duty_phone, order_channel, partner_code, supplier,notifier_address,
- remark, order_status, create_by, create_time, update_by, update_time,version_code,process_type,process_template,discount_fold from project_order_info t1
+ remark, order_status, create_by, create_time, update_by, update_time,version_code,process_type,process_template,discount_fold,
+ delivery_status,sign_status,outer_status,approve_time
+
+ from project_order_info t1
select t1.id, t1.project_id,t1.province, t1.city, t1.business_person, t1.business_email, t1.business_phone, t1.order_code, t1.currencyType,
t1.shipment_amount, t1.actual_purchase_amount, t1.order_end_time, t1.delivery_time, t1.company_delivery, t1.notifier,
t1.notifier_email, t1.notifier_phone, t1.duty, t1.duty_email, t1.duty_phone, t1.order_channel, t1.partner_code, t1.supplier,
t1.remark, t1.order_status, t1.create_by, t1.create_time, t1.update_by, t1.update_time,t1.partner_user_name,t1.partner_email
- ,t1.partner_phone,t1.version_code,t1.process_type,t1.process_template,t1.discount_fold,t1.notifier_address
+ ,t1.partner_phone,t1.version_code,t1.process_type,t1.process_template,t1.discount_fold,t1.notifier_address,
+ t1.delivery_status,t1.sign_status,t1.outer_status,t1.approve_time
,t2.project_code,t2.project_name,t2.province,t2.customer_name,t2.customer_code,t2.industry_type,t2.bg_property,t2.agent_code,t2.estimated_order_time
- ,t2.customer_phone,t2.customer_user_name,t2.agent_code,t2.customer_code
+ ,t2.customer_phone,t2.customer_user_name,t2.agent_code,t2.customer_code,t2.partner_name project_partner_name
,t3.partner_name,t3.level
,t4.agent_name
,t5.user_name as duty_name
@@ -109,6 +113,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
+ and t1.approve_time between date_format(#{approveTimeStart}, '%Y-%m-%d 00:00:00') and date_format(#{approveTimeEnd}, '%Y-%m-%d 23:59:59')
+
+
+ and t1.approve_time = ]]> date_format(#{approveTimeStart}, '%Y-%m-%d 00:00:00')
+
+
+ and t1.approve_time date_format(#{approveTimeEnd}, '%Y-%m-%d 23:59:59')
+
+
+
+
@@ -298,6 +316,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
create_time = #{createTime},
update_by = #{updateBy},
update_time = #{updateTime},
+ approve_time = #{approveTime},
where id = #{id}
@@ -310,6 +329,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
business_person = #{businessPerson},
business_email = #{businessEmail},
business_phone = #{businessPhone},
+ approve_time = #{approveTime},
diff --git a/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml
index bb8b6ac0..1467e5c7 100644
--- a/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml
@@ -21,7 +21,7 @@
select t1.id, t1.product_code, t1.product_name, t1.model, t1.description, t1.remark, t1.created_at, t1.updated_at,
- t1.deleted_at,t1.value,t1.type,t1.hz_code,t1.catalogue_price,t1.guidance_discount,t1.vendor_code
+ t1.deleted_at,t1.value,t1.type,t1.hz_code,t1.catalogue_price,t1.guidance_discount,t1.vendor_code,t1.available_count,t1.cumulative_count
,t2.vendor_name
from product_info t1 left join oms_vendor_info t2 on t1.vendor_code = t2.vendor_code
@@ -35,6 +35,7 @@
and t1.model like concat('%', #{model}, '%')
and find_in_set(t1.type , #{type})
and t2.vendor_name like concat('%', #{vendorName}, '%')
+ and t1.vendor_code = #{vendorCode}
@@ -147,6 +148,16 @@
where id = #{id}
+
+ update product_info
+ set available_count=ifnull(available_count,0) + #{quantity}
+ where product_code = #{productCode}
+
+
+ update product_info
+ set cumulative_count=ifnull(cumulative_count,0) + #{quantity}
+ where product_code = #{productCode}
+
update product_info set status=1, deleted_at=now() where id = #{id}