Commit 69a56092 by 赵剑炜

Merge branch 'develop' of http://gitlab.sothing.top/843502640/jyzb_platformV2 into develop-zhaojw

parents 7a8fe864 ad454f50
......@@ -107,3 +107,5 @@ Thumbs.db
/jyzb-boot/src/main/resources/application-local.yml
/jyzb-boot/src/main/resources/application.yml
/jyzb-boot/src/main/resources/application-local.yml
/pom.xml
/pom.xml
package com.junmp.jyzb.api.bean.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class StocktakeDto implements Serializable {
/**
* id
*/
private String id;
/**
* 工作流
*/
private String processId;
/**
* 单据业务类型:盘库stocktake
*/
private String bussinessType;
/**
* 单据单号
*/
private String orderCode;
/**
* 组织机构id
*/
private Long orgId;
/**
* 仓库id
*/
private String locationId;
/**
* 盘库类型(0全盘,1根据货架位置盘,2根据装备类型盘)
*/
private Integer stocktakeType;
/**
* 货架id(类型为1时特有)
*/
private String shelfId;
/**
* 货架位置(类型为1时特有)
*/
private String shelfLocation;
/**
* 号型id(类型为2时特有)
*/
private String sizeId;
/**
* 号型名称(类型为2时特有)
*/
private String sizeName;
/**
* 类型id(类型为2时特有)
*/
private String typeId;
/**
* 类型名称(类型为2时特有)
*/
private String typeName;
/**
* 申请人id
*/
private String applyUserId;
/**
* 申请人
*/
private String applyUser;
/**
* 申请时间
*/
private Date applyTime;
/**
* 审核状态(none,未接入审核流,working审批中,finished)
*/
private String examineState;
/**
* 备注
*/
private String note;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人员
*/
private String createUser;
/**
* 更新人员
*/
private String updateUser;
}
......@@ -16,7 +16,10 @@ public class WarehouseDto implements Serializable {
private Long orgId;
private Boolean isLocked;
/**
* 是否锁库,0未锁,1已锁定
*/
private Integer isLocked;
private Integer sum;
......
......@@ -178,4 +178,5 @@ public class InventoryReq extends BaseRequest {
* EPC集合
*/
private List<String> epcList;
}
......@@ -49,6 +49,8 @@ public class OrderMainReq extends BaseRequest {
private Integer actualQuantity;
private Integer updateQuantity;
private Integer manualState;
private String orderState;
......@@ -98,4 +100,5 @@ public class OrderMainReq extends BaseRequest {
private String returnUserId;
private List<OrderDetailReq> childrenOrder;
}
package com.junmp.jyzb.api.bean.query;
import com.junmp.v2.common.bean.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class StocktakeReq extends BaseRequest {
/**
* id
*/
private String id;
/**
* 工作流
*/
private String processId;
/**
* 单据业务类型:盘库stocktake
*/
private String bussinessType;
/**
* 单据单号
*/
private String orderCode;
/**
* 组织机构id
*/
@NotNull(message = "组织机构id不能为空",groups = {detail.class})
private Long orgId;
/**
* 组织机构名称
*/
private String orgName;
/**
* 仓库名称
*/
private String locationName;
/**
* 仓库id
*/
private String locationId;
/**
* 盘库类型(0全盘,1根据货架位置盘,2根据装备类型盘)
*/
private Integer stocktakeType;
/**
* 货架id(类型为1时特有)
*/
private String shelfId;
/**
* 货架位置(类型为1时特有)
*/
private String shelfLocation;
/**
* 号型id(类型为2时特有)
*/
private String sizeId;
/**
* 号型名称(类型为2时特有)
*/
private String sizeName;
/**
* 类型id(类型为2时特有)
*/
private String typeId;
/**
* 类型名称(类型为2时特有)
*/
private String typeName;
/**
* 申请人id
*/
private String applyUserId;
/**
* 申请人
*/
private String applyUser;
/**
* 申请时间
*/
private Date applyTime;
/**
* 审核状态(none,未接入审核流,working审批中,finished)
*/
private String examineState;
/**
* 备注
*/
private String note;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人员
*/
private String createUser;
/**
* 更新人员
*/
private String updateUser;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
}
......@@ -3,7 +3,7 @@ package com.junmp.jyzb.api.bean.req;
import com.junmp.v2.common.bean.request.ValidationApi;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
......@@ -69,4 +69,9 @@ public class BatchEditingInvsReq {
*/
private Integer shelfRows;
/**
* 单价
*/
private BigDecimal price;
}
package com.junmp.jyzb.api.bean.req;
import com.junmp.v2.common.bean.request.BaseRequest;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class UpdateStocktakeReq extends BaseRequest {
/**
* id
*/
@NotBlank(message = "id不能为空",groups = {edit.class})
private String id;
/**
* 工作流
*/
private String processId;
/**
* 单据业务类型:盘库stocktake
*/
private String bussinessType;
/**
* 单据单号
*/
private String orderCode;
/**
* 组织机构id
*/
@NotNull(message = "仓库id不能为空",groups = {add.class,edit.class})
private Long orgId;
/**
* 组织机构名称
*/
private String orgName;
/**
* 仓库名称
*/
private String locationName;
/**
* 仓库id
*/
@NotBlank(message = "仓库id不能为空",groups = {add.class,edit.class})
private String locationId;
/**
* 盘库类型(0全盘,1根据货架位置盘,2根据装备类型盘)
*/
private Integer stocktakeType;
/**
* 货架id(类型为1时特有)
*/
private String shelfId;
/**
* 排
*/
private Integer shelfRanges;
/**
* 列
*/
private Integer shelfColumns;
/**
* 行
*/
private Integer shelfRows;
/**
* 号型id(类型为2时特有)
*/
private String sizeId;
/**
* 号型名称(类型为2时特有)
*/
private String sizeName;
/**
* 类型id(类型为2时特有)
*/
private String typeId;
/**
* 类型名称(类型为2时特有)
*/
private String typeName;
/**
* 申请人id
*/
private String applyUserId;
/**
* 申请人
*/
private String applyUser;
/**
* 申请时间
*/
private Date applyTime;
/**
* 审核状态(none,未接入审核流,working审批中,finished)
*/
private String examineState;
/**
* 备注
*/
private String note;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人员
*/
private String createUser;
/**
* 更新人员
*/
private String updateUser;
}
......@@ -92,7 +92,7 @@ public class InventoryController {
//根据组织机构/单警柜id/仓库id查询每件装备细信的详息(返回结果是List)
@PostMapping("/EqsBySearchType")
@PostMapping("/")
@ApiOperation("查询库存装备详细信息(list)")
public ApiRes<List<InventoryDto>> EqsBySearchType(@RequestBody @Validated(ValidationApi.edit.class) InventoryReq req ){
return ApiRes.success(inventoryService.EqsBySearchType(req));
......@@ -208,7 +208,7 @@ public class InventoryController {
}
/**
* 根据查询条件,查询出库存中的装备信息汇总,出库单选择装备时使用该接口进行查询填写
* 根据查询条件,查询出库存中的装备信息汇总,选择装备时使用该接口进行查询填写
*/
//根据组织机构orgId查询出该组织机构下的仓库id
//根据仓库id和orgId查询出库存中存在的装备typeId
......
package com.junmp.jyzb.controller;
import com.junmp.jyzb.api.bean.query.OrderMainReq;
import com.junmp.jyzb.entity.OrderLog;
import com.junmp.jyzb.service.OrderLogService;
import com.junmp.v2.common.bean.request.ValidationApi;
import com.junmp.v2.common.bean.response.ApiRes;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@Slf4j
@RequestMapping("/Log")
@Api(tags = "日志模块")
public class LogController {
@Resource
private OrderLogService orderLogService;
//查看单据日志(通过组织机构id和出入库状态)
@PostMapping("/getLogsList")
@ApiOperation("获取日志")
public ApiRes<List<OrderLog>> getLogsList(@RequestBody @Validated(ValidationApi.edit.class) OrderMainReq req){
return ApiRes.success(orderLogService.getLogsList(req));
}
}
......@@ -52,7 +52,6 @@ public class OrderController {
return ApiRes.success(orderMainService.AddOrder(req));
}
//审批通过后修改单子状态为finished并推送到消息队列中
......@@ -138,4 +137,18 @@ public class OrderController {
return ApiRes.success(handoverService.UpdatePersonalEqsOrder(req));
}
//单据打印
// @PostMapping("OrderPrinting")
// @ApiOperation("单据打印")
// public ApiRes<Boolean> OrderPrinting(@RequestBody Object req){
// try {
// printerService.printObject(myObject); // 打印对象属性
// return ResponseEntity.ok("Printing request sent to the printer");
// } catch (PrintException e) {
// e.printStackTrace();
// return ResponseEntity.status(500).body("Error occurred while printing");
// }
// }
}
package com.junmp.jyzb.controller;
import cn.hutool.core.util.ObjectUtil;
import com.junmp.jyzb.api.bean.dto.StocktakeDto;
import com.junmp.jyzb.api.bean.query.StocktakeReq;
import com.junmp.jyzb.api.bean.req.UpdateOrderReq;
import com.junmp.jyzb.api.bean.req.UpdateStocktakeReq;
import com.junmp.jyzb.entity.OrderNum;
import com.junmp.jyzb.entity.Stocktake;
import com.junmp.jyzb.service.StocktakeService;
import com.junmp.v2.common.bean.request.ValidationApi;
import com.junmp.v2.common.bean.response.ApiRes;
import com.junmp.v2.db.api.page.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
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;
import javax.annotation.Resource;
@RestController
@Slf4j
@Api("盘库管理")
@RequestMapping("/Stocktake")
public class StocktakeController {
@Resource
private StocktakeService stocktakeService;
//盘库申请
@PostMapping("/AddStocktakeOrder")
@ApiOperation("盘库申请")
public ApiRes<String> AddStocktakeOrder (@RequestBody @Validated(ValidationApi.add.class) UpdateStocktakeReq req){
//判断是否有工作流id,如果有则将状态进行修改
if (ObjectUtil.isEmpty(req.getProcessId()))
{
req.setExamineState("none");
}
else
{
req.setExamineState("working");
}
return ApiRes.success(stocktakeService.AddStocktakeOrder(req));
}
//查询单据
@PostMapping("/ShowStocktakeOrderPage")
@ApiOperation("盘库单据查询")
public ApiRes<PageResult<Stocktake>> ShowStocktakeOrderPage(@RequestBody @Validated(ValidationApi.edit.class)StocktakeReq req){
return ApiRes.success(stocktakeService.ShowStocktakeOrderPage(req));
}
//修改单据
@PostMapping("/UpdateStocktakeOrder")
@ApiOperation("修改任务单")
public ApiRes<Boolean> UpdateStocktakeOrder(@RequestBody @Validated(ValidationApi.edit.class) UpdateStocktakeReq req) {
return ApiRes.success(stocktakeService.UpdateStocktakeOrder(req));
}
}
package com.junmp.jyzb.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
......@@ -176,6 +173,9 @@ public class InventorySummary implements Serializable {
@TableField(exist = false)
private Integer maintenancePeriod;
@TableField(exist = false,updateStrategy = FieldStrategy.IGNORED)
private String photo;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.junmp.jyzb.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
......@@ -18,22 +16,70 @@ public class OrderLog implements Serializable {
/**
* 主键
*/
@TableId
private Long id;
@TableId(value = "id",type = IdType.ASSIGN_UUID)
private String id;
/**
* 单据id
* 单据类型(in入库单,out出库单)
*/
@TableField("order_id")
@TableField(value = "order_type")
private String orderType;
/**
* 单据业务类型
*/
@TableField(value = "bussiness_type")
private String bussinessType;
/**
* 单据id(对应order_main)
*/
@TableField(value = "order_id")
private String orderId;
/**
* 操作记录(upload上传消息)
*/
@TableField("history_msg")
@TableField(value = "history_msg")
private String historyMsg;
/**
* 组织机构id
*/
@TableField(value = "org_id")
private Long orgId;
/**
* 组织机构名称
*/
@TableField(value = "org_name")
private String orgName;
/**
* 单据单号
*/
@TableField(value = "order_code")
private String orderCode;
/**
* 应入/出库数量
*/
@TableField(value = "inventory_quantity")
private Integer inventoryQuantity;
/**
* 实际数量
*/
@TableField(value = "actual_quantity")
private Integer actualQuantity;
/**
* 修改后数量
*/
@TableField(value = "update_quantity")
private Integer updateQuantity;
/**
* 创建时间
*/
@TableField(value = "create_time",fill = FieldFill.INSERT)
......@@ -42,28 +88,21 @@ public class OrderLog implements Serializable {
/**
* 更新时间
*/
@TableField(value = "update_time",fill =FieldFill.UPDATE)
@TableField(value = "update_time",fill = FieldFill.UPDATE)
private Date updateTime;
/**
* 创建人员
*/
@TableField("create_user")
@TableField(value = "create_user")
private String createUser;
/**
* 修改人员
*/
@TableField("update_user")
@TableField(value = "update_user")
private String updateUser;
/**
* 组织机构id
*/
@TableField("org_id")
private Long orgId;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -51,4 +51,9 @@ public class OrderNum implements Serializable {
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
/**
* 盘库特有
*/
private Long orgId;
}
package com.junmp.jyzb.entity;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
* @TableName bussiness_stocktake
*/
@TableName(value ="bussiness_stocktake")
@Data
public class Stocktake implements Serializable {
/**
* id
*/
@TableId(value = "id",type = IdType.ASSIGN_UUID)
private String id;
/**
* 工作流
*/
@TableField(value = "process_id")
private String processId;
/**
* 单据业务类型:盘库stocktake
*/
@TableField(value = "bussiness_type")
private String bussinessType;
/**
* 单据单号
*/
@TableField(value = "order_code")
private String orderCode;
/**
* 组织机构id
*/
@TableField(value = "org_id")
private Long orgId;
/**
* 组织机构名称
*/
@TableField(value = "org_name")
private String orgName;
/**
* 仓库id
*/
@TableField(value = "location_id")
private String locationId;
/**
* 仓库名称
*/
@TableField(value = "location_name")
private String locationName;
/**
* 盘库类型(0全盘,1根据货架位置盘,2根据装备类型盘)
*/
@TableField(value = "stocktake_type")
private Integer stocktakeType;
/**
* 货架id(类型为1时特有)
*/
@TableField(value = "shelf_id")
private String shelfId;
/**
* 货架位置(类型为1时特有)
*/
@TableField(value = "shelf_location")
private String shelfLocation;
/**
* 号型id(类型为2时特有)
*/
@TableField(value = "size_id")
private String sizeId;
/**
* 号型名称(类型为2时特有)
*/
@TableField(value = "size_name")
private String sizeName;
/**
* 类型id(类型为2时特有)
*/
@TableField(value = "type_id")
private String typeId;
/**
* 类型名称(类型为2时特有)
*/
@TableField(value = "type_name")
private String typeName;
/**
* 申请人id
*/
@TableField(value = "apply_user_id")
private String applyUserId;
/**
* 申请人
*/
@TableField(value = "apply_user")
private String applyUser;
/**
* 申请时间
*/
@TableField(value = "apply_time")
private Date applyTime;
/**
* 审核状态(none,未接入审核流,working审批中,finished)
*/
@TableField(value = "examine_state")
private String examineState;
/**
* 备注
*/
private String note;
/**
* 创建时间
*/
@TableField(value = "create_time",fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新时间
*/
@TableField(value = "update_time",fill = FieldFill.UPDATE)
private Date updateTime;
/**
* 创建人员
*/
@TableField(value = "create_user")
private String createUser;
/**
* 更新人员
*/
@TableField(value = "update_user")
private String updateUser;
}
\ No newline at end of file
......@@ -60,4 +60,5 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
IPage<InventorySummary> EqsByCabinetBoxIdPage(Page<InventorySummary> page, String id);
boolean insertInventorySummary(@Param("req") BatchEditingInvsReq req);
}
\ No newline at end of file
......@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author lxh专属坐骑
* @description 针对表【bussiness_order_log】的数据库操作Mapper
* @createDate 2023-08-18 16:49:39
* @Entity generator.domain.BussinessOrderLog
* @createDate 2023-09-21 11:00:44
* @Entity com.junmp.jyzb.entity.OrderLog
*/
public interface OrderLogMapper extends BaseMapper<OrderLog> {
......
package com.junmp.jyzb.mapper;
import com.junmp.jyzb.entity.Stocktake;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author lxh专属坐骑
* @description 针对表【bussiness_stocktake】的数据库操作Mapper
* @createDate 2023-09-20 14:48:50
* @Entity com.junmp.jyzb.entity.Stocktake
*/
public interface StocktakeMapper extends BaseMapper<Stocktake> {
}
package com.junmp.jyzb.rabbitmq;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.junmp.jyzb.entity.OrderLog;
import com.junmp.jyzb.service.OrderLogService;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
......@@ -12,7 +11,6 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Map;
/**
* 创建消息接收监听�
......@@ -26,10 +24,10 @@ public class DirectReceiver {
private void modelConvert(String content, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
try {
ObjectMapper objectMapper=new ObjectMapper();
OrderLog orderLog = objectMapper.readValue(content, OrderLog.class);
// 进行消息处理和条件判断
orderLogService.save(orderLog);
// ObjectMapper objectMapper=new ObjectMapper();
// OrderLog orderLog = objectMapper.readValue(content, OrderLog.class);
// // 进行消息处理和条件判断
// orderLogService.save(orderLog);
// 手动确认消息
channel.basicAck(deliveryTag, false);
} catch (Exception e) {
......
package com.junmp.jyzb.rabbitmq;
import com.junmp.jyzb.api.bean.req.UpdateOrderReq;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class a {
@RabbitListener(queues = "11111")
private void a(UpdateOrderReq req,Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag){
try {
//将消息进行消费
System.out.println("req = " + req);
// 手动确认消息
channel.basicAck(deliveryTag, false);
} catch (Exception e) {
// 处理消息过程中发生异常,拒绝消息并将其重新放回队列
try {
channel.basicNack(deliveryTag, false, true);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
}
package com.junmp.jyzb.service;
import com.junmp.jyzb.api.bean.query.OrderMainReq;
import com.junmp.jyzb.entity.OrderLog;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @author lxh专属坐骑
* @description 针对表【bussiness_order_log】的数据库操作Service
* @createDate 2023-08-18 16:49:39
* @createDate 2023-09-21 11:00:44
*/
public interface OrderLogService extends IService<OrderLog> {
List<OrderLog> getLogsList(OrderMainReq req);
}
package com.junmp.jyzb.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junmp.jyzb.entity.OrderLog;
import com.junmp.jyzb.entity.OrderMain;
import com.junmp.jyzb.entity.OrderNum;
import java.util.List;
public interface OrderNumService extends IService<OrderNum> {
......
package com.junmp.jyzb.service;
import com.junmp.jyzb.api.bean.dto.StocktakeDto;
import com.junmp.jyzb.api.bean.query.StocktakeReq;
import com.junmp.jyzb.api.bean.req.UpdateStocktakeReq;
import com.junmp.jyzb.entity.Stocktake;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junmp.v2.db.api.page.PageResult;
/**
* @author lxh专属坐骑
* @description 针对表【bussiness_stocktake】的数据库操作Service
* @createDate 2023-09-20 14:48:50
*/
public interface StocktakeService extends IService<Stocktake> {
String AddStocktakeOrder(UpdateStocktakeReq req);
PageResult<Stocktake> ShowStocktakeOrderPage(StocktakeReq req);
boolean UpdateStocktakeOrder(UpdateStocktakeReq req);
}
......@@ -321,7 +321,8 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
.eq(ObjectUtil.isNotNull(req.getBussinessState()) && !req.getBussinessState().trim().isEmpty(), Inventory::getBussinessState, req.getBussinessState())
.eq(ObjectUtil.isNotNull(req.getTermState()), Inventory::getTermState, req.getTermState())
.eq(ObjectUtil.isNotNull(req.getSizeId()) && !req.getSizeId().trim().isEmpty(),Inventory::getSizeId,req.getSizeId())
.eq(ObjectUtil.isNotNull(req.getTypeId()) && !req.getTypeId().trim().isEmpty(),Inventory::getTypeId,req.getTypeId());
.eq(ObjectUtil.isNotNull(req.getTypeId()) && !req.getTypeId().trim().isEmpty(),Inventory::getTypeId,req.getTypeId())
.eq(ObjectUtil.isNotNull(req.getPrice()),Inventory::getPrice,req.getPrice());
long size = list(eq).size();
Page<Inventory> page = page(PageFactory.getDefaultPage(req.getPageNo(), req.getPageSize()), eq);
......@@ -365,29 +366,47 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
}else {
//批量修改个别装备
List<Inventory> collect = list.stream().map(inventory -> {
Inventory inventory1 = new Inventory();
BeanPlusUtil.copyProperties(inventory, inventory1);
return inventory1;
BeanPlusUtil.copyProperties(req,inventory );
if (ObjectUtil.isNotNull(req.getShelfColumns()) && !req.getShelfColumns().toString().trim().isEmpty()
&& ObjectUtil.isNotNull(req.getShelfRanges()) && !req.getShelfRanges().toString().trim().isEmpty()
&& ObjectUtil.isNotNull(req.getShelfRows()) && !req.getShelfRows().toString().trim().isEmpty()) {
inventory.setShelfLocation(req.getShelfRanges() + "/" + req.getShelfColumns() + "/" + req.getShelfRows());
}
return inventory;
}).collect(Collectors.toList());
return updateBatchById(collect);
updateBatchById(collect);
//修改汇总信息
return setInventorySummary(req);
}
}else {
List<Inventory> list = list(createWrapper(req));
//直接将一类的数据进行修改
List<Inventory> collect = list.stream().map(inventory -> {
Inventory inventory1 = new Inventory();
BeanPlusUtil.copyProperties(inventory, inventory1);
BeanPlusUtil.copyProperties(req, inventory);
if (ObjectUtil.isNotNull(req.getShelfColumns()) && !req.getShelfColumns().toString().trim().isEmpty()
&& ObjectUtil.isNotNull(req.getShelfRanges()) && !req.getShelfRanges().toString().trim().isEmpty()
&& ObjectUtil.isNotNull(req.getShelfRows()) && !req.getShelfRows().toString().trim().isEmpty()) {
inventory1.setShelfLocation(req.getShelfRanges() + "/" + req.getShelfColumns() + "/" + req.getShelfRows());
inventory.setShelfLocation(req.getShelfRanges() + "/" + req.getShelfColumns() + "/" + req.getShelfRows());
}
return inventory1;
return inventory;
}).collect(Collectors.toList());
return updateBatchById(collect);
updateBatchById(collect);
return setInventorySummary(req);
}
}
//修改库存信息汇总
public boolean setInventorySummary(BatchEditingInvsReq req){
//先将其删除再全部重新添加计算
List<InventorySummary> list = inventorySummaryService.list(new LambdaQueryWrapper<InventorySummary>()
.eq(ObjectUtil.isNotNull(req.getOrgId()),InventorySummary::getOrgId,req.getOrgId())
.eq(ObjectUtil.isNotNull(req.getLocationId()),InventorySummary::getLocationId,req.getLocationId())
.eq(ObjectUtil.isNotNull(req.getSizeId()),InventorySummary::getSizeId,req.getSizeId())
.eq(ObjectUtil.isNotNull(req.getTypeId()),InventorySummary::getTypeId,req.getTypeId()));
boolean b = inventorySummaryService.removeBatchByIds(list);
boolean a = inventoryMapper.insertInventorySummary(req);
return (a && b);
}
//根据货架id获取装备列表汇总信息(list)
@Override
......
......@@ -6,12 +6,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.api.bean.dto.InventorySumDto;
import com.junmp.jyzb.api.bean.query.InventorySumReq;
import com.junmp.jyzb.entity.EquipmentType;
import com.junmp.jyzb.entity.Inventory;
import com.junmp.jyzb.entity.InventorySummary;
import com.junmp.jyzb.service.InventoryService;
import com.junmp.jyzb.service.InventorySummaryService;
import com.junmp.jyzb.service.OrderMainService;
import com.junmp.jyzb.service.PubOrgService;
import com.junmp.jyzb.service.*;
import com.junmp.v2.db.api.factory.PageFactory;
import com.junmp.v2.db.api.factory.PageResultFactory;
import com.junmp.v2.db.api.page.PageResult;
......@@ -38,6 +36,9 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
@Resource
private InventorySummaryMapper inventorySummaryMapper;
@Resource
private EquipmentTypeService equipmentTypeService;
//根据条件查询库存汇总信息
@Override
public PageResult<InventorySummary> getEquipmentInfo(InventorySumReq req) {
......@@ -50,6 +51,7 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
long size = list(wp).size();
Page<InventorySummary> sumList= this.page(PageFactory.getDefaultPage(req.getPageNo(),req.getPageSize()),wp);
List<InventorySummary> records = sumList.getRecords();
List<InventorySummary> collect = records.stream().map(data -> {
Inventory inventory = inventoryService.list(new LambdaQueryWrapper<Inventory>()
.eq(Inventory::getOrgId, data.getOrgId())
......@@ -57,6 +59,8 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
.eq(Inventory::getTypeId, data.getTypeId())).get(0);
data.setWarrantyPeriod(inventory.getWarrantyPeriod());
data.setMaintenancePeriod(inventory.getMaintenancePeriod());
String photo = equipmentTypeService.getOne(new LambdaQueryWrapper<EquipmentType>().eq(EquipmentType::getId,inventory.getTypeId())).getPhoto();
data.setPhoto(photo);
return data;
}).collect(Collectors.toList());
Page<InventorySummary> page1 = PageFactory.getDefaultPage(req.getPageNo(), req.getPageSize());
......
package com.junmp.jyzb.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.api.bean.query.OrderMainReq;
import com.junmp.jyzb.api.exception.enums.CabinetExceptionEnum;
import com.junmp.jyzb.entity.OrderLog;
import com.junmp.jyzb.service.OrderLogService;
import com.junmp.jyzb.mapper.OrderLogMapper;
import com.junmp.jyzb.service.PubOrgService;
import com.junmp.v2.common.exception.base.ServiceException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @author lxh专属坐骑
* @description 针对表【bussiness_order_log】的数据库操作Service实现
* @createDate 2023-08-18 16:49:39
* @createDate 2023-09-21 11:00:44
*/
@Service
public class OrderLogServiceImpl extends ServiceImpl<OrderLogMapper, OrderLog>
implements OrderLogService {
@Resource
private PubOrgService pubOrgService;
@Override
public List<OrderLog> getLogsList(OrderMainReq req) {
//判断orderType业务是入库还是出库,根据出入库的不同,查询的单据也不同
if (req.getOrderType().equals("in")){
// list(new LambdaQueryWrapper<OrderLog>()
// .eq(OrderLog::get)
// .eq());
} else if (req.getOrderType().equals("out")) {
implements OrderLogService{
}else {
throw new ServiceException(CabinetExceptionEnum.PARAMETER_ERROR);
}
return list();
}
}
......
......@@ -400,8 +400,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
Set<Long> collect = req.getChildrenOrder().stream().map(OrderDetailReq::getId).collect(Collectors.toSet());
//前端传递的子单数据
List<OrderDetailReq> reqList = req.getChildrenOrder();
//将实际数量进行添
Integer actualQuantity=0;
//将记账数量进行相
Integer updateQuantity=0;
//将价格进行添加修改
BigDecimal priceTotal=new BigDecimal(0);
//获取子单据
......@@ -412,7 +412,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
.collect(Collectors.toSet());
//创建记账操作记录并且记录到数据表order_log中
OrderLog orderLog = new OrderLog();
orderLog.setOrderId(req.getId());
BeanPlusUtil.copyProperties(req,orderLog);
orderLog.setId(UUID.randomUUID().toString());
StringBuilder stringBuilder = new StringBuilder();
List<OrderDetail> orderDetailList=new ArrayList<>();
//比较两个子单id完全一致,判断传递的子单据id在数据库中是否存在,如果不存在则抛出子单据不存在异常
......@@ -429,11 +430,15 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
orderDetail.setActualNum(uploadDetailReq.getModifyQuantity());
orderDetail.setUpdateTime(DateTimeUtil.getCurrentDateTime());
orderDetailList.add(orderDetail);
actualQuantity+=uploadDetailReq.getModifyQuantity();
priceTotal=priceTotal.add(BigDecimal.valueOf(uploadDetailReq.getModifyQuantity())).multiply(uploadDetailReq.getPrice());
//修改后数量
updateQuantity+=uploadDetailReq.getModifyQuantity();
priceTotal=priceTotal.add(BigDecimal.valueOf(uploadDetailReq.getModifyQuantity()).multiply(uploadDetailReq.getPrice()));
System.out.println("priceTotal = " + priceTotal);
}else {
actualQuantity+=uploadDetailReq.getActualNum();
priceTotal=priceTotal.add(BigDecimal.valueOf(uploadDetailReq.getActualNum())).multiply(uploadDetailReq.getPrice());
//修改后数量
updateQuantity+=uploadDetailReq.getActualNum();
priceTotal=priceTotal.add(BigDecimal.valueOf(uploadDetailReq.getActualNum()).multiply(uploadDetailReq.getPrice()));
System.out.println("priceTotal = " + priceTotal);
}
}
......@@ -441,11 +446,15 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
throw new ServiceException(OrderExceptionEnum.ORDERDETAIL_ERROR);
}
orderLog.setHistoryMsg(stringBuilder.toString());
orderLog.setUpdateQuantity(updateQuantity);
if (req.getOrderType().equals("in")){
orderLog.setOrgId(req.getEndOrgId());
orderLog.setOrgName(req.getEndOrgName());
}else {
orderLog.setOrgId(req.getStartOrgId());
orderLog.setOrgName(req.getStartOrgName());
}
orderLog.setOrderId(req.getId());
orderLog.setCreateTime(DateTimeUtil.getCurrentDateTime());
//将记账记录保存
orderLogService.save(orderLog);
......@@ -454,7 +463,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
orderDetailService.updateBatchById(orderDetailList);
}
//更新主单据的数量和价格
orderMain.setActualQuantity(actualQuantity);
orderMain.setActualQuantity(updateQuantity);
orderMain.setPrice(priceTotal);
//记账直接将单子结束
orderMain.setOrderState("finished");
......
package com.junmp.jyzb.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.api.bean.dto.StocktakeDto;
import com.junmp.jyzb.api.bean.query.StocktakeReq;
import com.junmp.jyzb.api.bean.req.UpdateStocktakeReq;
import com.junmp.jyzb.api.exception.enums.OrderExceptionEnum;
import com.junmp.jyzb.entity.OrderNum;
import com.junmp.jyzb.entity.Stocktake;
import com.junmp.jyzb.service.OrderNumService;
import com.junmp.jyzb.service.StocktakeService;
import com.junmp.jyzb.mapper.StocktakeMapper;
import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.v2.common.exception.base.ServiceException;
import com.junmp.v2.common.util.BeanPlusUtil;
import com.junmp.v2.db.api.factory.PageFactory;
import com.junmp.v2.db.api.factory.PageResultFactory;
import com.junmp.v2.db.api.page.PageResult;
import com.junmp.v2.dict.entity.SysDictItem;
import com.junmp.v2.dict.service.SysDictItemService;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
/**
* @author lxh专属坐骑
* @description 针对表【bussiness_stocktake】的数据库操作Service实现
* @createDate 2023-09-20 14:48:50
*/
@Service
public class StocktakeServiceImpl extends ServiceImpl<StocktakeMapper, Stocktake>
implements StocktakeService{
@Resource
private SysDictItemService sysDictItemService;
@Resource
private OrderNumService orderNumService;
//盘库申请
@Override
@Transactional(rollbackFor = Exception.class)
public String AddStocktakeOrder(UpdateStocktakeReq req) {
Stocktake stocktake = new Stocktake();
BeanPlusUtil.copyProperties(req,stocktake);
//设置单号
OrderNum orderNum = setOrderCode(req);
String codeValue=String.format("%04d",orderNum.getNum());
stocktake.setOrderCode(orderNum.getBussinessType()+"-"+orderNum.getYear()+"-"+orderNum.getMonth()+"-"+orderNum.getDay()+"-"+codeValue);
//如果盘库类型为1:根据货架进行盘点,判断参数排列行是否进行传递,如果传递则需要进行一个参数拼接
String shelfLocation="";
if (ObjectUtil.isNotNull(req.getShelfRanges()) && !req.getShelfRanges().toString().trim().isEmpty()) {
shelfLocation += req.getShelfRanges()+"/";
stocktake.setShelfLocation(shelfLocation);
}
if (ObjectUtil.isNotNull(req.getShelfColumns()) && !req.getShelfColumns().toString().trim().isEmpty()) {
shelfLocation += req.getShelfColumns()+"/";
stocktake.setShelfLocation(shelfLocation);
}
if (ObjectUtil.isNotNull(req.getShelfRows()) && !req.getShelfRows().toString().trim().isEmpty()) {
shelfLocation += req.getShelfRows();
stocktake.setShelfLocation(shelfLocation);
}
stocktake.setCreateTime(DateTimeUtil.getCurrentDateTime());
stocktake.setApplyTime(DateTimeUtil.getCurrentDateTime());
this.save(stocktake);
return stocktake.getId();
}
//盘库单据查询
@Override
public PageResult<Stocktake> ShowStocktakeOrderPage(StocktakeReq req) {
LambdaQueryWrapper<Stocktake> eq = new LambdaQueryWrapper<Stocktake>()
.eq(ObjectUtil.isNotNull(req.getOrgId()),Stocktake::getOrgId,req.getOrgId())
.eq(ObjectUtil.isNotNull(req.getLocationId()),Stocktake::getLocationId,req.getLocationId())
.ge(ObjectUtil.isNotNull(req.getStartTime()),Stocktake::getCreateTime,req.getStartTime())
.le(ObjectUtil.isNotNull(req.getEndTime()),Stocktake::getCreateTime,req.getEndTime());
Page<Stocktake> page = page(PageFactory.getDefaultPage(req.getPageNo(), req.getPageSize()), eq);
return PageResultFactory.createPageResult(page);
}
//更新盘库单据(未进入工作流时才能进行修改)
@Override
public boolean UpdateStocktakeOrder(UpdateStocktakeReq req) {
if (!req.getExamineState().equals("none"))
{
throw new ServiceException(OrderExceptionEnum.ORDER_CAN_NOT_UPDATE);
}
Stocktake stocktake = getById(req.getId());
BeanPlusUtil.copyProperties(req,stocktake);
stocktake.setUpdateTime(DateTimeUtil.getCurrentDateTime());
return updateById(stocktake);
}
/**
* 设置单据单号
* @param req
*/
public OrderNum setOrderCode(UpdateStocktakeReq req){
//设置采购单号,需要先判断该组织机构的采购单号是否存在,如果存在则将数量进行增加,如果不存在则新增一条对应的数据
OrderNum orderNum = new OrderNum();
//获取年,月,日,获取组织机构id,获取业务类型
orderNum.setYear(LocalDateTime.now().getYear());
orderNum.setMonth(LocalDateTime.now().getMonth().getValue());
orderNum.setDay(LocalDateTime.now().getDayOfMonth());
orderNum.setBussinessType(req.getBussinessType());
orderNum.setOrgId(req.getOrgId());
//将业务类型转为中文简写
String itemValue = sysDictItemService.getOne(new LambdaQueryWrapper<SysDictItem>()
.eq(SysDictItem::getItemText, req.getBussinessType())).getItemValue();
orderNum.setBussinessType(itemValue);
OrderNum one = orderNumService.getOne(new LambdaQueryWrapper<OrderNum>()
.eq(OrderNum::getOrgId, orderNum.getOrgId())
.eq(OrderNum::getBussinessType, orderNum.getBussinessType())
.eq(OrderNum::getYear, orderNum.getYear())
.eq(OrderNum::getMonth, orderNum.getMonth())
.eq(OrderNum::getDay, orderNum.getDay()));
//设置num的数量
if (ObjectUtil.isNull(one)){
orderNum.setNum(1);
orderNumService.save(orderNum);
return orderNum;
}else {
one.setNum(one.getNum()+1);
orderNumService.updateById(one);
return one;
}
}
}
......@@ -144,6 +144,52 @@ delete from base_inventory_summary
GROUP BY type_id,size_id,bi.org_id_int,location_id,bi.price) as t
GROUP BY t.locationId,t.type_id,t.size_id,t.orgId,t.unitPrice
</insert>
<insert id="insertInventorySummary">
INSERT INTO base_inventory_summary (id,org_id_int,org_name,location_id,location_name,type_id, type_name,size_id,size_name,number,unit_price,price, stock_number, outbound_number,destruction_number,expire_number,location_type,create_time,update_time)
select
MAX(t.id) as id,t.orgId,t.orgName,t.locationId,MAX(t.locationName),t.type_id,t.typeName,t.size_id,t.sizeName,sum(t.number) as number,t.unitPrice,sum(t.price)as price,sum(t.stockNumber)as stockNumber,sum(t.outboundNumber)as outboundNumber,sum(t.destructionNumber)as destructionNumber,sum(t.destructionNumber) as expireNumber,t.location_type,NOW(),NOW()
FROM
(SELECT
UUID() as id,
bi.org_id_int as orgId,
po.org_name as orgName,
MAX(bi.location_id) as locationId,
MAX(bw.name) as locationName,
bi.type_id,
t.name as typeName,
bi.size_id,
s.name as sizeName,
count(*) as number,
Max(bi.price) as unitPrice,
sum(bi.price) as price,
SUM(CASE WHEN location_state = 'in' THEN 1 ELSE 0 END) AS stockNumber,
count(*) - SUM(CASE WHEN location_state = 'in' THEN 1 ELSE 0 END) AS outboundNumber,
sum(case when bi.state = 'destory' then 1 else 0 end) as destructionNumber,
sum(case when bi.warranty_period=0 then 0 when DATE_ADD(bi.production_date,INTERVAL bi.warranty_period MONTH) &lt; NOW() then 1
else 0 end )as expireNumber,
bi.location_type
FROM base_inventory bi
join base_warehouse bw on bi.location_id = bw.id
join base_equipment_type t on t.id = bi.type_id
join base_equipment_size s on s.id = bi.size_id
join pub_org po on bi.org_id_int = po.org_id
WHERE location_type = 0
<if test="req.orgId!=null and req.orgId !=''">
and bi.org_id_int =#{req.orgId}
</if>
<if test="req.locationId!=null and req.locationId !=''">
and bi.location_id=#{req.locationId}
</if>
<if test="req.sizeId != null and req.sizeId !=''">
and bi.size_id =#{req.sizeId}
</if>
<if test="req.typeId != null and req.typeId !=''">
and bi.type_id =#{req.typeId}
</if>
GROUP BY type_id,size_id,bi.org_id_int,location_id,bi.price) as t
GROUP BY t.locationId,t.type_id,t.size_id,t.orgId,t.unitPrice
</insert>
<select id="EqsBySearchType" resultType="com.junmp.jyzb.api.bean.dto.InventoryDto">
select
......@@ -493,4 +539,5 @@ delete from base_inventory_summary
</select>
</mapper>
\ No newline at end of file
......@@ -6,8 +6,15 @@
<resultMap id="BaseResultMap" type="com.junmp.jyzb.entity.OrderLog">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="orderId" column="order_id" jdbcType="INTEGER"/>
<result property="orderType" column="order_type" jdbcType="VARCHAR"/>
<result property="bussinessType" column="bussiness_type" jdbcType="VARCHAR"/>
<result property="orderId" column="order_id" jdbcType="VARCHAR"/>
<result property="historyMsg" column="history_msg" jdbcType="VARCHAR"/>
<result property="orgId" column="org_id" jdbcType="BIGINT"/>
<result property="orderCode" column="order_code" jdbcType="VARCHAR"/>
<result property="inventoryQuantity" column="inventory_quantity" jdbcType="INTEGER"/>
<result property="actualQuantity" column="actual_quantity" jdbcType="INTEGER"/>
<result property="updateQuantity" column="update_quantity" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="createUser" column="create_user" jdbcType="VARCHAR"/>
......@@ -15,8 +22,10 @@
</resultMap>
<sql id="Base_Column_List">
id,order_id,history_msg,
create_time,update_time,create_user,
update_user
id,order_type,bussiness_type,
order_id,history_msg,org_id,
order_code,inventory_quantity,actual_quantity,
update_quantity,create_time,update_time,
create_user,update_user
</sql>
</mapper>
<?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.junmp.jyzb.mapper.StocktakeMapper">
<resultMap id="BaseResultMap" type="com.junmp.jyzb.entity.Stocktake">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="processId" column="process_id" jdbcType="VARCHAR"/>
<result property="bussinessType" column="bussiness_type" jdbcType="VARCHAR"/>
<result property="orderCode" column="order_code" jdbcType="VARCHAR"/>
<result property="orgId" column="org_id" jdbcType="BIGINT"/>
<result property="locationId" column="location_id" jdbcType="VARCHAR"/>
<result property="stocktakeType" column="stocktake_type" jdbcType="INTEGER"/>
<result property="shelfId" column="shelf_id" jdbcType="VARCHAR"/>
<result property="shelfLocation" column="shelf_location" jdbcType="VARCHAR"/>
<result property="sizeId" column="size_id" jdbcType="VARCHAR"/>
<result property="sizeName" column="size_name" jdbcType="VARCHAR"/>
<result property="typeId" column="type_id" jdbcType="VARCHAR"/>
<result property="typeName" column="type_name" jdbcType="VARCHAR"/>
<result property="applyUserId" column="apply_user_id" jdbcType="VARCHAR"/>
<result property="applyUser" column="apply_user" jdbcType="VARCHAR"/>
<result property="applyTime" column="apply_time" jdbcType="TIMESTAMP"/>
<result property="examineState" column="examine_state" jdbcType="VARCHAR"/>
<result property="note" column="note" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="createUser" column="create_user" jdbcType="VARCHAR"/>
<result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,process_id,bussiness_type,
order_code,org_id,location_id,
stocktake_type,shelf_id,shelf_location,
size_id,size_name,type_id,
type_name,apply_user_id,apply_user,
apply_time,examine_state,note,
create_time,update_time,create_user,
update_user
</sql>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论