diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml index ac47c038..10cf6b0b 100644 --- a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml +++ b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml @@ -14,7 +14,7 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN" - + diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/DeliveryListController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/DeliveryListController.java new file mode 100644 index 00000000..b06bad62 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/DeliveryListController.java @@ -0,0 +1,136 @@ +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.DeliveryList; +import com.ruoyi.sip.service.IDeliveryListService; +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; +import org.springframework.web.multipart.MultipartFile; + +/** + * 发货清单Controller + * + * @author ruoyi + * @date 2025-04-11 + */ +@Controller +@RequestMapping("/sip/list") +public class DeliveryListController extends BaseController { + private String prefix = "sip/list"; + + @Autowired + private IDeliveryListService deliveryListService; + + @RequiresPermissions("sip:list:view") + @GetMapping() + public String list() { + return prefix + "/list"; + } + + /** + * 查询发货清单列表 + */ + @RequiresPermissions("sip:list:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(DeliveryList deliveryList) { + startPage(); + List list = deliveryListService.selectDeliveryListList(deliveryList); + return getDataTable(list); + } + + /** + * 导入数据 + */ + + @PostMapping("/importData") + @ResponseBody + public AjaxResult importData(MultipartFile file, Long deliveryId) throws Exception + { + ExcelUtil util = new ExcelUtil(DeliveryList.class); + List deliveryList = util.importExcel(file.getInputStream()); + + deliveryListService.importData(deliveryList, deliveryId); + return AjaxResult.success("导入成功"); + } + + /** + * 导出发货清单列表 + */ + @RequiresPermissions("sip:list:export") + @Log(title = "发货清单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(DeliveryList deliveryList) { + List list = deliveryListService.selectDeliveryListList(deliveryList); + ExcelUtil util = new ExcelUtil(DeliveryList.class); + return util.exportExcel(list, "发货清单数据"); + } + + /** + * 新增发货清单 + */ + @RequiresPermissions("sip:list:add") + @GetMapping("/add") + public String add() { + return prefix + "/add"; + } + + /** + * 新增保存发货清单 + */ + @RequiresPermissions("sip:list:add") + @Log(title = "发货清单", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(DeliveryList deliveryList) { + return toAjax(deliveryListService.insertDeliveryList(deliveryList)); + } + + /** + * 修改发货清单 + */ + @RequiresPermissions("sip:list:edit") + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) { + DeliveryList deliveryList = deliveryListService.selectDeliveryListById(id); + mmap.put("deliveryList", deliveryList); + return prefix + "/edit"; + } + + /** + * 修改保存发货清单 + */ + @RequiresPermissions("sip:list:edit") + @Log(title = "发货清单", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(DeliveryList deliveryList) { + return toAjax(deliveryListService.updateDeliveryList(deliveryList)); + } + + /** + * 删除发货清单 + */ + @RequiresPermissions("sip:list:remove") + @Log(title = "发货清单", businessType = BusinessType.DELETE) + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) { + return toAjax(deliveryListService.deleteDeliveryListByIds(ids)); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/DeliveryList.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/DeliveryList.java new file mode 100644 index 00000000..67e00e5e --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/DeliveryList.java @@ -0,0 +1,158 @@ +package com.ruoyi.sip.domain; + +import java.util.Date; +import java.util.StringJoiner; + +import com.fasterxml.jackson.annotation.JsonFormat; +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; + +/** + * 发货清单对象 delivery_list + * + * @author ruoyi + * @date 2025-04-11 + */ +public class DeliveryList extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键,自增 */ + private Long id; + + /** 关联发货单id */ +// @Excel(name = "关联发货单id") + private Long deliveryId; +// @Excel(name = "合同编号") + private String orderCode; + /** 产品编码id */ + + @Excel(name = "产品编码") + private String productCode; + + /** 产品序列号 */ + @Excel(name = "产品序列号") + private String serialNumber; + @Excel(name = "备注") + private String remark; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date createdAt; + + /** 更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date updatedAt; + + /** 删除时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") +// @Excel(name = "删除时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date deletedAt; + + + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProductCode() { + return productCode; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setDeliveryId(Long deliveryId) + { + this.deliveryId = deliveryId; + } + + public Long getDeliveryId() + { + return deliveryId; + } + + @Override + public String getRemark() { + return remark; + } + + @Override + public void setRemark(String remark) { + this.remark = remark; + } + + public void setSerialNumber(String serialNumber) + { + this.serialNumber = serialNumber; + } + + public String getSerialNumber() + { + return serialNumber; + } + + public void setCreatedAt(Date createdAt) + { + this.createdAt = createdAt; + } + + public Date getCreatedAt() + { + return createdAt; + } + + public void setUpdatedAt(Date updatedAt) + { + this.updatedAt = updatedAt; + } + + public Date getUpdatedAt() + { + return updatedAt; + } + + public void setDeletedAt(Date deletedAt) + { + this.deletedAt = deletedAt; + } + + public Date getDeletedAt() + { + return deletedAt; + } + + @Override + public String toString() { + return new StringJoiner(", ", DeliveryList.class.getSimpleName() + "[", "]") + .add("id=" + id) + .add("deliveryId=" + deliveryId) + .add("orderCode='" + orderCode + "'") + .add("productCode='" + productCode + "'") + .add("serialNumber='" + serialNumber + "'") + .add("remark='" + remark + "'") + .add("createdAt=" + createdAt) + .add("updatedAt=" + updatedAt) + .add("deletedAt=" + deletedAt) + .toString(); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/DeliveryListMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/DeliveryListMapper.java new file mode 100644 index 00000000..25116644 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/DeliveryListMapper.java @@ -0,0 +1,62 @@ +package com.ruoyi.sip.mapper; + +import java.util.List; +import com.ruoyi.sip.domain.DeliveryList; + +/** + * 发货清单Mapper接口 + * + * @author ruoyi + * @date 2025-04-11 + */ +public interface DeliveryListMapper +{ + /** + * 查询发货清单 + * + * @param id 发货清单主键 + * @return 发货清单 + */ + public DeliveryList selectDeliveryListById(Long id); + + /** + * 查询发货清单列表 + * + * @param deliveryList 发货清单 + * @return 发货清单集合 + */ + public List selectDeliveryListList(DeliveryList deliveryList); + + /** + * 新增发货清单 + * + * @param deliveryList 发货清单 + * @return 结果 + */ + public int insertDeliveryList(DeliveryList deliveryList); + public int insertBatch(List deliveryList); + + /** + * 修改发货清单 + * + * @param deliveryList 发货清单 + * @return 结果 + */ + public int updateDeliveryList(DeliveryList deliveryList); + + /** + * 删除发货清单 + * + * @param id 发货清单主键 + * @return 结果 + */ + public int deleteDeliveryListById(Long id); + + /** + * 批量删除发货清单 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDeliveryListByIds(String[] ids); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OrderInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OrderInfoMapper.java index ab8d1f40..7647004e 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OrderInfoMapper.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OrderInfoMapper.java @@ -97,4 +97,6 @@ public interface OrderInfoMapper * @param orderListList */ void updateListBatch(List orderListList); + + List listOrderListByDeliveryId(Long deliveryId); } 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 3322f7f9..661908dc 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 @@ -2,6 +2,7 @@ package com.ruoyi.sip.mapper; import java.util.List; import com.ruoyi.sip.domain.ProductInfo; +import org.apache.ibatis.annotations.Param; /** * 产品管理Mapper接口 @@ -58,4 +59,8 @@ public interface ProductInfoMapper * @return 结果 */ public int deleteProductInfoByIds(String[] ids); + + + + List listByProductCodeList(@Param("list") List productCodeList); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IDeliveryListService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IDeliveryListService.java new file mode 100644 index 00000000..1f74900f --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IDeliveryListService.java @@ -0,0 +1,63 @@ +package com.ruoyi.sip.service; + +import java.util.List; +import com.ruoyi.sip.domain.DeliveryList; + +/** + * 发货清单Service接口 + * + * @author ruoyi + * @date 2025-04-11 + */ +public interface IDeliveryListService +{ + /** + * 查询发货清单 + * + * @param id 发货清单主键 + * @return 发货清单 + */ + public DeliveryList selectDeliveryListById(Long id); + + /** + * 查询发货清单列表 + * + * @param deliveryList 发货清单 + * @return 发货清单集合 + */ + public List selectDeliveryListList(DeliveryList deliveryList); + + /** + * 新增发货清单 + * + * @param deliveryList 发货清单 + * @return 结果 + */ + public int insertDeliveryList(DeliveryList deliveryList); + + /** + * 修改发货清单 + * + * @param deliveryList 发货清单 + * @return 结果 + */ + public int updateDeliveryList(DeliveryList deliveryList); + + /** + * 批量删除发货清单 + * + * @param ids 需要删除的发货清单主键集合 + * @return 结果 + */ + public int deleteDeliveryListByIds(String ids); + + /** + * 删除发货清单信息 + * + * @param id 发货清单主键 + * @return 结果 + */ + public int deleteDeliveryListById(Long id); + + void importData(List deliveryList, Long deliveryId); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DeliveryListServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DeliveryListServiceImpl.java new file mode 100644 index 00000000..18fa2b09 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DeliveryListServiceImpl.java @@ -0,0 +1,130 @@ +package com.ruoyi.sip.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.sip.domain.OrderList; +import com.ruoyi.sip.domain.ProductInfo; +import com.ruoyi.sip.mapper.OrderInfoMapper; +import com.ruoyi.sip.mapper.ProductInfoMapper; +import org.springframework.stereotype.Service; +import com.ruoyi.sip.mapper.DeliveryListMapper; +import com.ruoyi.sip.domain.DeliveryList; +import com.ruoyi.sip.service.IDeliveryListService; +import com.ruoyi.common.core.text.Convert; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + * 发货清单Service业务层处理 + * + * @author ruoyi + * @date 2025-04-11 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class DeliveryListServiceImpl implements IDeliveryListService { + @Resource + private DeliveryListMapper deliveryListMapper; + + @Resource + private ProductInfoMapper productInfoMapper; + + @Resource + private OrderInfoMapper infoMapper; + + /** + * 查询发货清单 + * + * @param id 发货清单主键 + * @return 发货清单 + */ + @Override + public DeliveryList selectDeliveryListById(Long id) { + return deliveryListMapper.selectDeliveryListById(id); + } + + /** + * 查询发货清单列表 + * + * @param deliveryList 发货清单 + * @return 发货清单 + */ + @Override + public List selectDeliveryListList(DeliveryList deliveryList) { + return deliveryListMapper.selectDeliveryListList(deliveryList); + } + + /** + * 新增发货清单 + * + * @param deliveryList 发货清单 + * @return 结果 + */ + @Override + public int insertDeliveryList(DeliveryList deliveryList) { + return deliveryListMapper.insertDeliveryList(deliveryList); + } + + /** + * 修改发货清单 + * + * @param deliveryList 发货清单 + * @return 结果 + */ + @Override + public int updateDeliveryList(DeliveryList deliveryList) { + return deliveryListMapper.updateDeliveryList(deliveryList); + } + + /** + * 批量删除发货清单 + * + * @param ids 需要删除的发货清单主键 + * @return 结果 + */ + @Override + public int deleteDeliveryListByIds(String ids) { + return deliveryListMapper.deleteDeliveryListByIds(Convert.toStrArray(ids)); + } + + /** + * 删除发货清单信息 + * + * @param id 发货清单主键 + * @return 结果 + */ + @Override + public int deleteDeliveryListById(Long id) { + return deliveryListMapper.deleteDeliveryListById(id); + } + + @Override + public void importData(List deliveryList, Long deliveryId) { + List productCodeList = deliveryList.stream().map(DeliveryList::getProductCode).collect(Collectors.toList()); + if (productCodeList.isEmpty()) { + throw new ServiceException("产品编码为空"); + } + List orderLists = infoMapper.listOrderListByDeliveryId(deliveryId); + if (orderLists.isEmpty()) { + throw new ServiceException("发货单中没有产品"); + } + List existsProductCodeList = orderLists.stream().map(OrderList::getProductCode).collect(Collectors.toList()); + List notExistsProductCodeList = productCodeList.stream().filter(productCode -> !existsProductCodeList.contains(productCode)).collect(Collectors.toList()); + if (!notExistsProductCodeList.isEmpty()) { + throw new ServiceException(StringUtils.format("产品编码为[{}]的产品在发货单中未找到,请确认后重试;", String.join(",", notExistsProductCodeList))); + } + + for (DeliveryList list : deliveryList) { + list.setDeliveryId(deliveryId); + } + + deliveryListMapper.insertBatch(deliveryList); + } +} diff --git a/ruoyi-sip/src/main/resources/mapper/manage/DeliveryListMapper.xml b/ruoyi-sip/src/main/resources/mapper/manage/DeliveryListMapper.xml new file mode 100644 index 00000000..dd9283a2 --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/manage/DeliveryListMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + select id, delivery_id, product_code, serial_number, remark, created_at, updated_at, deleted_at from delivery_list + + + + + + + + insert into delivery_list + + delivery_id, + product_code, + serial_number, + remark, + created_at, + updated_at, + deleted_at, + + + #{deliveryId}, + #{productCode}, + #{serialNumber}, + #{remark}, + #{createdAt}, + #{updatedAt}, + #{deletedAt}, + + + + insert into delivery_list (delivery_id, product_code, serial_number, remark, created_at, updated_at) + values + + (#{item.deliveryId}, #{item.productCode}, #{item.serialNumber}, #{item.remark}, now(),now()) + + + + + update delivery_list + + delivery_id = #{deliveryId}, + product_code = #{productCode}, + serial_number = #{serialNumber}, + remark = #{remark}, + created_at = #{createdAt}, + updated_at = #{updatedAt}, + deleted_at = #{deletedAt}, + + where id = #{id} + + + + delete from delivery_list where id = #{id} + + + + delete from delivery_list where id in + + #{id} + + + + \ No newline at end of file diff --git a/ruoyi-sip/src/main/resources/mapper/manage/OrderInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/manage/OrderInfoMapper.xml index 5d06858f..f58f1e01 100644 --- a/ruoyi-sip/src/main/resources/mapper/manage/OrderInfoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/manage/OrderInfoMapper.xml @@ -101,9 +101,34 @@ + @@ -176,7 +201,7 @@ update order_list - product_id = #{productId}, + product_code = #{productCode}, quantity = #{quantity}, price = #{price}, amount = #{amount}, @@ -203,7 +228,7 @@ - delete from order_list where order_id in + update order_list set status=1,delete_at=now() where order_id in #{orderId} @@ -216,9 +241,11 @@ - insert into order_list( id, order_id, product_code, quantity, price, amount, remark, created_at, updated_at, deleted_at) values + insert into order_list( id, order_id, product_code, quantity, price, amount, remark, created_at, updated_at, + deleted_at) values - ( #{item.id}, #{item.orderId}, #{item.productCode}, #{item.quantity}, #{item.price}, #{item.amount}, #{item.remark}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt}) + ( #{item.id}, #{item.orderId}, #{item.productCode}, #{item.quantity}, #{item.price}, #{item.amount}, + #{item.remark}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt}) diff --git a/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml index 34de38d6..a3f2f474 100644 --- a/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml @@ -34,6 +34,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + insert into product_info