Commit c4afd4c1 by 赵剑炜

修改盘点接口, 新增盘点结算逻辑

parent 1a5ac0b8
...@@ -15,6 +15,7 @@ public class BussinessInventoryDto implements Serializable { ...@@ -15,6 +15,7 @@ public class BussinessInventoryDto implements Serializable {
private String addNum; private String addNum;
private String deleteNum; private String deleteNum;
private String state; private String state;
private String accountNum;
private List<EquipmentListDto> equipmentList; private List<EquipmentListDto> equipmentList;
} }
\ No newline at end of file
...@@ -14,4 +14,6 @@ public class EquipmentListDto { ...@@ -14,4 +14,6 @@ public class EquipmentListDto {
private String fixNumber; private String fixNumber;
private String num; private String num;
private String state; private String state;
private String accountNumber;
} }
package com.junmp.jyzb.api.bean.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class InventoryMapDto {
private String id;
private String warehouseId;
private String warehouseName;
private Long orgId;
private String orgName;
private String typeId;
private String typeName;
private String sizeId;
private String sizeName;
private String num;
private BigDecimal price;
private Date productionDate;
private Integer maintenancePeriod;
private Integer warrantyPeriod;
}
\ No newline at end of file
package com.junmp.jyzb.api.bean.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class ViewEquipmentDto implements Serializable {
private String epc;
private String sizeId;
private String sizeName;
private String typeId;
private String typeName;
}
\ No newline at end of file
package com.junmp.jyzb.api.bean.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class WarehouseInvDto implements Serializable {
private String epc;
private String locationId;
private String orgId;
private String orgName;
}
package com.junmp.jyzb.api.bean.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.junmp.jyzb.api.util.WsWarehouseReq;
import com.junmp.v2.common.bean.request.ValidationApi;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;
@Data
public class UpdateDetailReq {
@NotBlank(message = "明细Id", groups = {ValidationApi.edit.class})
private String detailId;
private List<eqList> eqList;
@Data
// 内部类
public static class eqList {
private String productionDate;
private String warrantyPeriod;
private String maintenancePeriod;
private String num;
private String price;
}
}
\ No newline at end of file
...@@ -13,6 +13,7 @@ public enum InventoryExceptionEnum implements IExceptionEnum { ...@@ -13,6 +13,7 @@ public enum InventoryExceptionEnum implements IExceptionEnum {
ORDER_NOT_EXIST(CommonConstant.DEFAULT_BIZ_ERROR_CODE,"盘点单据不存在"), ORDER_NOT_EXIST(CommonConstant.DEFAULT_BIZ_ERROR_CODE,"盘点单据不存在"),
ORDER_HAS_START(CommonConstant.DEFAULT_BIZ_ERROR_CODE,"单据已经开始,请勿重复操作"), ORDER_HAS_START(CommonConstant.DEFAULT_BIZ_ERROR_CODE,"单据已经开始,请勿重复操作"),
RUNNINGORDER_EXIST(CommonConstant.DEFAULT_BIZ_ERROR_CODE,"已存在盘点单据"), RUNNINGORDER_EXIST(CommonConstant.DEFAULT_BIZ_ERROR_CODE,"已存在盘点单据"),
ORDER_CLOSED(CommonConstant.DEFAULT_BIZ_ERROR_CODE,"单据已结算,无法重复操作"),
/** /**
* 装备不存在 * 装备不存在
*/ */
......
...@@ -4,6 +4,7 @@ package com.junmp.jyzb.controller; ...@@ -4,6 +4,7 @@ package com.junmp.jyzb.controller;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.junmp.jyzb.api.bean.dto.BussinessInventoryDto; import com.junmp.jyzb.api.bean.dto.BussinessInventoryDto;
import com.junmp.jyzb.api.bean.query.BussinessInventoryReq; import com.junmp.jyzb.api.bean.query.BussinessInventoryReq;
import com.junmp.jyzb.api.bean.req.UpdateDetailReq;
import com.junmp.jyzb.api.bean.req.UpdateInventoryReq; import com.junmp.jyzb.api.bean.req.UpdateInventoryReq;
import com.junmp.jyzb.api.bean.req.UploadInventoryReq; import com.junmp.jyzb.api.bean.req.UploadInventoryReq;
import com.junmp.jyzb.entity.BussinessInventory; import com.junmp.jyzb.entity.BussinessInventory;
...@@ -91,6 +92,12 @@ BussinessInventoryController { ...@@ -91,6 +92,12 @@ BussinessInventoryController {
//判断是否有工作流id,如果有则将状态进行修改 //判断是否有工作流id,如果有则将状态进行修改
return ApiRes.success(BussinessInventoryService.UploadStock(req)); return ApiRes.success(BussinessInventoryService.UploadStock(req));
} }
@PostMapping(path="/UpdateDetail",name="修改盘点单人工明细信息#logType=30")
@ApiOperation("修改盘点单人工明细信息")
public ApiRes<Boolean> UpdateDetail (@RequestBody UpdateDetailReq req){
//判断是否有工作流id,如果有则将状态进行修改
return ApiRes.success(BussinessInventoryService.UpdateDetail(req));
}
//盘库申请 //盘库申请
@PostMapping(path="/UseOrFinished",name="确认结果/结束盘点#logType=30") @PostMapping(path="/UseOrFinished",name="确认结果/结束盘点#logType=30")
@ApiOperation("确认结果/结束盘点") @ApiOperation("确认结果/结束盘点")
......
...@@ -67,6 +67,8 @@ public class BussinessDetail implements Serializable { ...@@ -67,6 +67,8 @@ public class BussinessDetail implements Serializable {
*/ */
@TableField(value = "stock_price") @TableField(value = "stock_price")
private BigDecimal stockPrice; private BigDecimal stockPrice;
@TableField(value = "price")
private BigDecimal price;
/** /**
* 月 * 月
*/ */
...@@ -88,7 +90,11 @@ public class BussinessDetail implements Serializable { ...@@ -88,7 +90,11 @@ public class BussinessDetail implements Serializable {
*/ */
@TableField(value = "state") @TableField(value = "state")
private String state; private String state;
/**
* 人工添加数量
*/
@TableField(value = "account_num")
private String accountNum;
/** /**
* 创建时间 * 创建时间
......
...@@ -157,7 +157,7 @@ public class BussinessInventory implements Serializable { ...@@ -157,7 +157,7 @@ public class BussinessInventory implements Serializable {
* 需要更新的epc汇总 * 需要更新的epc汇总
*/ */
@TableField(value = "epc_update") @TableField(value = "epc_update")
private String epc_update; private String epcUpdate;
/** /**
* 归还人 * 归还人
......
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.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@TableName(value ="bussiness_inventory_children_detail")
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BussinessInventoryChildrenDetail implements Serializable {
/**
* id
*/
@TableId(value = "id")
@Id
private String id;
/**
* 工作流id
*/
@TableField(value = "inv_detail_id")
private String InvDetailId;
/**
* 是否已使用
*/
@TableField(value = "is_use")
private Integer isUse;
/**
* 工作流id
*/
@TableField(value = "production_date")
private String productionDate;
/**
* 工作流id
*/
@TableField(value = "warranty_period")
private String warrantyPeriod;
/**
* 单据编号
*/
@TableField(value = "maintenance_period")
private String maintenancePeriod;
/**
* 年度
*/
@TableField(value = "num")
private Integer num;
/**
* 月
*/
@TableField(value = "price")
private Integer price;
/**
* 创建时间
*/
@TableField(value = "create_time",fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新时间
*/
@TableField(value = "update_time",fill = FieldFill.UPDATE)
private Date updateTime;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
...@@ -35,6 +35,8 @@ public class Inventory implements Serializable { ...@@ -35,6 +35,8 @@ public class Inventory implements Serializable {
*/ */
@TableField("type_id") @TableField("type_id")
private String typeId; private String typeId;
@TableField("epc_type")
private Integer epcType;
@TableField(exist = false) @TableField(exist = false)
private String typeName; private String typeName;
......
...@@ -26,7 +26,8 @@ public class WarehouseInventory implements Serializable { ...@@ -26,7 +26,8 @@ public class WarehouseInventory implements Serializable {
*/ */
@TableField(value = "org_id") @TableField(value = "org_id")
private Long orgId; private Long orgId;
@TableField(value = "epc_type")
private Integer epcType;
/** /**
* 类型id * 类型id
*/ */
......
package com.junmp.jyzb.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.junmp.jyzb.api.bean.dto.TjDto.TjOrgEqsDto;
import com.junmp.jyzb.entity.BussinessDetail;
import com.junmp.jyzb.entity.BussinessInventoryChildrenDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface BussinessInventoryChildrenDetailMapper extends BaseMapper<BussinessInventoryChildrenDetail> {
// List<TjOrgEqsDto> getByOrgId(@Param("orgId") Long orgId);
}
...@@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.junmp.jyzb.api.bean.PeriodAndDateDto; import com.junmp.jyzb.api.bean.PeriodAndDateDto;
import com.junmp.jyzb.api.bean.dto.EqsBriefDto; import com.junmp.jyzb.api.bean.dto.*;
import com.junmp.jyzb.api.bean.dto.EqsSumDto;
import com.junmp.jyzb.api.bean.dto.FetchingDataDto.EquipmentDto; import com.junmp.jyzb.api.bean.dto.FetchingDataDto.EquipmentDto;
import com.junmp.jyzb.api.bean.dto.InventoryDto;
import com.junmp.jyzb.api.bean.query.InventoryReq; import com.junmp.jyzb.api.bean.query.InventoryReq;
import com.junmp.jyzb.api.bean.req.BatchEditingInvsReq; import com.junmp.jyzb.api.bean.req.BatchEditingInvsReq;
import com.junmp.jyzb.api.bean.req.InvExpireReq; import com.junmp.jyzb.api.bean.req.InvExpireReq;
...@@ -29,6 +27,13 @@ public interface InventoryMapper extends BaseMapper<Inventory> { ...@@ -29,6 +27,13 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
//根据单警柜统计装备信息 //根据单警柜统计装备信息
List<WarehouseInvDto> GetViewWarehouseInv(@Param("warehouseId") Long orgId,@Param("typeIdsList") List<String> typeIdsList,@Param("sizeIds") List<String> sizeIds);
List<ViewEquipmentDto> GetViewEquipment(@Param("epcList") List<String> epcList);
List<InventoryMapDto> GetViewInventoryMap(@Param("warehouseId") String warehouseId);
Boolean deleteByEpcs(@Param("list") List<String> epcs);
//根据单警柜统计装备信息
boolean SetCabinetInventory(@Param("brokenNumberDays") Integer brokenNumberDays); boolean SetCabinetInventory(@Param("brokenNumberDays") Integer brokenNumberDays);
//根据仓库统计装备信息 //根据仓库统计装备信息
......
package com.junmp.jyzb.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junmp.jyzb.entity.BussinessDetail;
import com.junmp.jyzb.entity.BussinessInventoryChildrenDetail;
public interface BussinessInventoryChildrenDetailService extends IService<BussinessInventoryChildrenDetail> {
}
\ No newline at end of file
...@@ -5,10 +5,7 @@ import com.junmp.jyzb.api.bean.dto.BusFormDto; ...@@ -5,10 +5,7 @@ import com.junmp.jyzb.api.bean.dto.BusFormDto;
import com.junmp.jyzb.api.bean.dto.BussinessInventoryDto; import com.junmp.jyzb.api.bean.dto.BussinessInventoryDto;
import com.junmp.jyzb.api.bean.query.BussinessInventoryReq; import com.junmp.jyzb.api.bean.query.BussinessInventoryReq;
import com.junmp.jyzb.api.bean.query.QueryBusFormReq; import com.junmp.jyzb.api.bean.query.QueryBusFormReq;
import com.junmp.jyzb.api.bean.req.UpdateBusFormReq; import com.junmp.jyzb.api.bean.req.*;
import com.junmp.jyzb.api.bean.req.UpdateInventoryReq;
import com.junmp.jyzb.api.bean.req.UpdateStocktakeReq;
import com.junmp.jyzb.api.bean.req.UploadInventoryReq;
import com.junmp.jyzb.entity.BusForm; import com.junmp.jyzb.entity.BusForm;
import com.junmp.jyzb.entity.BussinessInventory; import com.junmp.jyzb.entity.BussinessInventory;
import com.junmp.v2.db.api.page.PageResult; import com.junmp.v2.db.api.page.PageResult;
...@@ -31,5 +28,6 @@ public interface BussinessInventoryService extends IService<BussinessInventory> ...@@ -31,5 +28,6 @@ public interface BussinessInventoryService extends IService<BussinessInventory>
BussinessInventoryDto GetDetailById(BussinessInventoryReq req); BussinessInventoryDto GetDetailById(BussinessInventoryReq req);
Boolean UploadStock(UploadInventoryReq req); Boolean UploadStock(UploadInventoryReq req);
Boolean UpdateDetail(UpdateDetailReq req);
Boolean UseOrFinished(UploadInventoryReq req); Boolean UseOrFinished(UploadInventoryReq req);
} }
...@@ -21,12 +21,10 @@ import java.util.Date; ...@@ -21,12 +21,10 @@ import java.util.Date;
import java.util.List; import java.util.List;
public interface InventoryService extends IService<Inventory> { public interface InventoryService extends IService<Inventory> {
//根据装备id查询出装备的详细信息 //根据装备id查询出装备的详细信息
InventoryDto getInventoryDetail(InventoryReq msg); InventoryDto getInventoryDetail(InventoryReq msg);
boolean UpdateWarehouseInsNum(WarehouseReq req); boolean UpdateWarehouseInsNum(WarehouseReq req);
boolean UpdateCabinetInsNum(CabinetReq req); boolean UpdateCabinetInsNum(CabinetReq req);
......
package com.junmp.jyzb.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.entity.BussinessDetail;
import com.junmp.jyzb.entity.BussinessInventoryChildrenDetail;
import com.junmp.jyzb.mapper.BussinessInventoryChildrenDetailMapper;
import com.junmp.jyzb.mapper.BussinessInventoryDetailMapper;
import com.junmp.jyzb.service.BussinessInventoryChildrenDetailService;
import com.junmp.jyzb.service.BussinessInventoryDetailService;
import org.springframework.stereotype.Service;
@Service
public class BussinessInventoryChildrenDetailServiceImpl extends ServiceImpl<BussinessInventoryChildrenDetailMapper, BussinessInventoryChildrenDetail>
implements BussinessInventoryChildrenDetailService {
}
\ No newline at end of file
...@@ -10,17 +10,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -10,17 +10,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.junmpProcess.dto.StartProcessInstanceDTO; import com.junmp.junmpProcess.dto.StartProcessInstanceDTO;
import com.junmp.junmpProcess.service.IFlowInstanceService; import com.junmp.junmpProcess.service.IFlowInstanceService;
import com.junmp.jyzb.api.bean.dto.BussinessInventoryDto; import com.junmp.jyzb.api.bean.dto.*;
import com.junmp.jyzb.api.bean.dto.EquipmentListDto;
import com.junmp.jyzb.api.bean.dto.MQDto;
import com.junmp.jyzb.api.bean.query.BussinessInventoryReq; import com.junmp.jyzb.api.bean.query.BussinessInventoryReq;
import com.junmp.jyzb.api.bean.query.InventorySumReq; import com.junmp.jyzb.api.bean.query.InventorySumReq;
import com.junmp.jyzb.api.bean.req.UpdateDetailReq;
import com.junmp.jyzb.api.bean.req.UpdateInventoryReq; import com.junmp.jyzb.api.bean.req.UpdateInventoryReq;
import com.junmp.jyzb.api.bean.req.UploadInventoryReq; import com.junmp.jyzb.api.bean.req.UploadInventoryReq;
import com.junmp.jyzb.api.exception.enums.InventoryExceptionEnum; import com.junmp.jyzb.api.exception.enums.InventoryExceptionEnum;
import com.junmp.jyzb.cache.MsgRedisCache; import com.junmp.jyzb.cache.MsgRedisCache;
import com.junmp.jyzb.entity.*; import com.junmp.jyzb.entity.*;
import com.junmp.jyzb.mapper.BussinessInventoryMapper; import com.junmp.jyzb.mapper.BussinessInventoryMapper;
import com.junmp.jyzb.mapper.InventoryMapper;
import com.junmp.jyzb.mapper.InventorySummaryMapper;
import com.junmp.jyzb.service.*; import com.junmp.jyzb.service.*;
import com.junmp.jyzb.utils.DateTimeUtil; import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.jyzb.utils.RabbitMQSendMsg; import com.junmp.jyzb.utils.RabbitMQSendMsg;
...@@ -46,6 +47,7 @@ import java.math.BigDecimal; ...@@ -46,6 +47,7 @@ import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Service @Service
public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventoryMapper, BussinessInventory> public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventoryMapper, BussinessInventory>
...@@ -64,6 +66,8 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor ...@@ -64,6 +66,8 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor
@Resource @Resource
private BussinessInventoryDetailService bussinessInventoryDetailService; private BussinessInventoryDetailService bussinessInventoryDetailService;
@Resource @Resource
private BussinessInventoryChildrenDetailService bussinessInventoryChildrenDetailService;
@Resource
private WarehouseService warehouseService; private WarehouseService warehouseService;
@Resource @Resource
private PubOrgService orgService; private PubOrgService orgService;
...@@ -74,6 +78,12 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor ...@@ -74,6 +78,12 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor
@Resource @Resource
private WarehouseInventoryService warehouseInventoryService; private WarehouseInventoryService warehouseInventoryService;
@Resource @Resource
private InventoryService inventoryService;
@Resource
private InventoryMapper inventoryMapper;
@Resource
private OrderNumService orderNumService; private OrderNumService orderNumService;
@Autowired @Autowired
private RabbitMQSendMsg MQ; private RabbitMQSendMsg MQ;
...@@ -393,8 +403,8 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor ...@@ -393,8 +403,8 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor
BeanPlusUtil.copyProperties(inventory,BIDTO); BeanPlusUtil.copyProperties(inventory,BIDTO);
for (BussinessDetail detail : details) { for (BussinessDetail detail : details) {
EquipmentListDto eqDto = new EquipmentListDto(); EquipmentListDto eqDto = new EquipmentListDto();
BeanPlusUtil.copyProperties(detail, eqDto); BeanPlusUtil.copyProperties(detail, eqDto);
eqDto.setAccountNumber(detail.getAccountNum());
eqDtoList.add(eqDto); eqDtoList.add(eqDto);
} }
BIDTO.setState(inventory.getResult()); BIDTO.setState(inventory.getResult());
...@@ -408,6 +418,9 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor ...@@ -408,6 +418,9 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor
//更新之前先把库存表的epc备份 //更新之前先把库存表的epc备份
BussinessInventory BI= this.getById(req.getOrderId()); BussinessInventory BI= this.getById(req.getOrderId());
String type= BI.getInventoryType().toString(); String type= BI.getInventoryType().toString();
InventorySumReq sumreq=new InventorySumReq(); InventorySumReq sumreq=new InventorySumReq();
String epcList=""; String epcList="";
List<WarehouseInventory> details=new ArrayList<>(); List<WarehouseInventory> details=new ArrayList<>();
...@@ -435,77 +448,145 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor ...@@ -435,77 +448,145 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor
.and(qw -> sizeIds.forEach(size -> qw.or().eq(WarehouseInventory::getSizeId, size))) .and(qw -> sizeIds.forEach(size -> qw.or().eq(WarehouseInventory::getSizeId, size)))
); );
} }
for (WarehouseInventory detail : details) {
String epc = detail.getEpc();
if (epc != null && !epc.isEmpty()) {
if (!epcList.isEmpty()) {
epcList += ",";
List<BussinessDetail> ChildrenList = bussinessInventoryDetailService.list(
new LambdaQueryWrapper<BussinessDetail>().eq(BussinessDetail::getInventoryId, req.getOrderId())
);
for (BussinessDetail detail : ChildrenList) {
List<BussinessInventoryChildrenDetail> ChildrenDetail = bussinessInventoryChildrenDetailService.list(
new LambdaQueryWrapper<BussinessInventoryChildrenDetail>().eq(BussinessInventoryChildrenDetail::getInvDetailId, detail.getId())
);
if (ChildrenDetail.size()>0)//子单据有数据就先清除
{
bussinessInventoryChildrenDetailService.removeBatchByIds(ChildrenDetail);
} }
epcList += epc;
} }
List<BussinessInventoryChildrenDetail> updateInvChilred=new ArrayList<>();
for (BussinessDetail detail : ChildrenList) {//子单据中的数据打上标记,以后不会再使用
List<BussinessInventoryChildrenDetail> ChildrenDetail = bussinessInventoryChildrenDetailService.list(
new LambdaQueryWrapper<BussinessInventoryChildrenDetail>().eq(BussinessInventoryChildrenDetail::getInvDetailId, detail.getId())
);
updateInvChilred.addAll(ChildrenDetail);
} }
// 去除最后一个逗号 if (updateInvChilred.size()>0)
if (epcList.endsWith(",")) { {
epcList = epcList.substring(0, epcList.length() - 1); updateInvChilred.forEach(p->p.setIsUse(1));
updateInvChilred.forEach(p->p.setUpdateTime(DateTimeUtil.getCurrentDateTime()));
bussinessInventoryChildrenDetailService.updateBatchById(updateInvChilred);
}
if (ChildrenList.size()>0)
{
bussinessInventoryDetailService.removeBatchByIds(ChildrenList);
} }
BI.setEpcBack(epcList);
//将上报的数据传入数据库存储 //将上报的数据传入数据库存储
BeanPlusUtil.copyProperties(req,BI); BeanPlusUtil.copyProperties(req,BI);
List<BussinessDetail> Bussinessdetails=new ArrayList<>(); List<BussinessDetail> Bussinessdetails=new ArrayList<>();
for (EquipmentListDto detail : req.getEquipmentList()) { for (EquipmentListDto detail : req.getEquipmentList()) {
BussinessDetail eqDto = new BussinessDetail(); BussinessDetail eqDto = new BussinessDetail();
BeanPlusUtil.copyProperties(detail, eqDto); BeanPlusUtil.copyProperties(detail, eqDto);
eqDto.setAccountNum(detail.getAccountNumber());
eqDto.setInventoryId(Long.valueOf(req.getOrderId())); eqDto.setInventoryId(Long.valueOf(req.getOrderId()));
Bussinessdetails.add(eqDto); Bussinessdetails.add(eqDto);
} }
BI.setEpcUpdate(req.getEpcList());
BI.setResult(req.getState()); BI.setResult(req.getState());
BI.setInventoryState("finished"); BI.setInventoryState("finished");
this.updateById(BI); this.updateById(BI);
bussinessInventoryDetailService.saveBatch(Bussinessdetails); bussinessInventoryDetailService.saveBatch(Bussinessdetails);
MQDto mqDto = new MQDto();
mqDto.setApi("BussinessInventoryFinish");
mqDto.setOrderId(BI.getId());
MQ.SendMsg("orderExchange", BI.getOrgId().toString(),mqDto);
return true; return true;
} }
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean UpdateDetail(UpdateDetailReq req) {
List<BussinessInventoryChildrenDetail> ChildrenDetail = bussinessInventoryChildrenDetailService.list(
new LambdaQueryWrapper<BussinessInventoryChildrenDetail>().eq(BussinessInventoryChildrenDetail::getInvDetailId, req.getDetailId())
);
if (ChildrenDetail.size()>0)//子单据有数据就先清除
{
bussinessInventoryChildrenDetailService.removeBatchByIds(ChildrenDetail);
}
List<BussinessInventoryChildrenDetail> AddChildrenDetail=new ArrayList<>();
for (UpdateDetailReq.eqList eqInfo : req.getEqList()) {
BussinessInventoryChildrenDetail Bcd=new BussinessInventoryChildrenDetail();
BeanPlusUtil.copyProperties(eqInfo,Bcd);
Bcd.setInvDetailId(req.getDetailId());
Bcd.setUpdateTime(DateTimeUtil.getCurrentDateTime());
Bcd.setCreateTime(DateTimeUtil.getCurrentDateTime());
AddChildrenDetail.add(Bcd);
}
return bussinessInventoryChildrenDetailService.saveBatch(AddChildrenDetail);
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean UseOrFinished(UploadInventoryReq req) { public Boolean UseOrFinished(UploadInventoryReq req) {
//更新之前先把库存表的epc备份
BussinessInventory BI= this.getById(req.getOrderId()); BussinessInventory BI= this.getById(req.getOrderId());
if (BI.getInventoryState().equals("close"))
{
throw new ServiceException(InventoryExceptionEnum.ORDER_CLOSED);
}
PubOrg org= orgService.getById(BI.getOrgId());
if(req.getState().equals("0"))//确认结果
{
Map<String, Object> params = new HashMap<>();
List<WarehouseInventory> DeleteList; List<WarehouseInventory> DeleteList;
List<WarehouseInventory> UpdateList; List<WarehouseInventory> SaveEpcList =new ArrayList<>();
List<BussinessDetail> BusinessDetail = bussinessInventoryDetailService.list( List<BussinessDetail> bussinessDetail = bussinessInventoryDetailService.list(
new LambdaQueryWrapper<BussinessDetail>().eq(BussinessDetail::getInventoryId, req.getOrderId()) new LambdaQueryWrapper<BussinessDetail>().eq(BussinessDetail::getInventoryId, req.getOrderId())
); );
InventorySumReq sumreq=new InventorySumReq(); InventorySumReq sumreq=new InventorySumReq();
sumreq.setLocationType("0"); sumreq.setLocationType("0");
sumreq.setLocationId(BI.getWarehouseId()); sumreq.setLocationId(BI.getWarehouseId());
if (BI.getInventoryType().equals("1"))//按装备类型盘点
if (BI.getInventoryType().equals(1))//按装备类型盘点
{ {
List<String> typeIds = Arrays.asList(BI.getRules().split(",")); List<String> typeIds = Arrays.asList(BI.getRules().split(","));
sumreq.setTypeIds(typeIds); sumreq.setTypeIds(typeIds);
} else if (BI.getInventoryType().equals("2"))//按装备号型盘点 params.put("typeIds", typeIds); //
params.put("sizeIds", Collections.emptyList()); // 添加一个空的列表
} else if (BI.getInventoryType().equals(2))//按装备号型盘点
{ {
List<String> sizeIds = Arrays.asList(BI.getRules().split(",")); List<String> sizeIds = Arrays.asList(BI.getRules().split(","));
sumreq.setSizeIds(sizeIds); sumreq.setSizeIds(sizeIds);
params.put("sizeIds", sizeIds); //
params.put("typeIds", Collections.emptyList()); // 添加一个空的列表
} }
List<InventorySummary> SumResult = inventorySummaryService.getEquipmentInfoList(sumreq); List<InventorySummary> SumResult = inventorySummaryService.getEquipmentInfoList(sumreq);
List<InventorySummary> InsertSumResult=new ArrayList<>();
if (SumResult.size()>0)//库存表中有对应数据,进行更新
{
for (InventorySummary summary : SumResult) { for (InventorySummary summary : SumResult) {
for (BussinessDetail businessDetail : BusinessDetail) { for (BussinessDetail bussiness : bussinessDetail) {
if (summary.getTypeId().equals(businessDetail.getTypeId()) && summary.getSizeId().equals(businessDetail.getSizeId())) { if (summary.getTypeId().equals(bussiness.getTypeId())&&summary.getUnitPrice().equals(bussiness.getPrice())
summary.setStockNumber(businessDetail.getFixNumber()); && summary.getSizeId().equals(bussiness.getSizeId())) {
summary.setStockNumber(bussiness.getFixNumber());
summary.setOutboundNumber(0); summary.setOutboundNumber(0);
summary.setNumber(businessDetail.getFixNumber()); summary.setNumber(bussiness.getFixNumber());
if (businessDetail.getState().equals(1))//盈余状态需要增加金额和数量 if (bussiness.getState().equals(1))//盈余状态需要增加金额和数量
{ {
summary.setPrice( summary.getPrice().add(businessDetail.getFixPrice())); summary.setPrice( summary.getPrice().add(bussiness.getFixPrice()));
businessDetail.setStockPrice(summary.getStockNumberPrice()); bussiness.setStockPrice(summary.getStockNumberPrice());
} }
else if (businessDetail.getState().equals(2))//亏损状态需要减少金额和数量 else if (bussiness.getState().equals(2))//亏损状态需要减少金额和数量
{ {
BigDecimal fixPriceNew=summary.getPrice().subtract(businessDetail.getFixPrice()); BigDecimal fixPriceNew=summary.getPrice().subtract(bussiness.getFixPrice());
int i = fixPriceNew.compareTo(BigDecimal.ZERO); int i = fixPriceNew.compareTo(BigDecimal.ZERO);
if (i == -1) { if (i == -1) {
summary.setPrice(BigDecimal.ZERO); summary.setPrice(BigDecimal.ZERO);
...@@ -521,52 +602,196 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor ...@@ -521,52 +602,196 @@ public class BussinessInventoryServiceImpl extends ServiceImpl<BussinessInventor
} }
}
else
{
for (BussinessDetail bdList :bussinessDetail) {
InventorySummary InsertSum=new InventorySummary();
InsertSum.setValuekey(org.getOrgCode()+BI.getWarehouseId()+bdList.getTypeId()+bdList.getSizeId()+bdList.getPrice()+"0");
InsertSum.setNumber(bdList.getNum());
InsertSum.setOrgId(BI.getOrgId());
InsertSum.setOrgName(BI.getOrgName());
InsertSum.setOrgCode(org.getOrgCode());
InsertSum.setTypeId(bdList.getTypeId());
InsertSum.setTypeName(bdList.getTypeName());
InsertSum.setSizeId(bdList.getSizeId());
InsertSum.setSizeName(bdList.getSizeName());
InsertSum.setLocationType("0");
InsertSum.setLocationId(BI.getWarehouseId());
InsertSum.setLocationName(BI.getWarehouseName());
InsertSum.setUnitPrice(bdList.getPrice());
InsertSum.setPrice(bdList.getStockPrice());
InsertSum.setStockNumber(bdList.getStockNumber());
InsertSum.setStockNumberPrice(bdList.getStockPrice());
InsertSum.setOutboundNumber(0);
InsertSum.setOutboundNumberPrice(BigDecimal.valueOf(0));
InsertSum.setDestructionNumber(0);
InsertSum.setDestructionPrice(BigDecimal.valueOf(0));
InsertSum.setExpireNumber(0);
InsertSum.setExpireNumberPrice(BigDecimal.valueOf(0));
InsertSum.setBrokenNumber(0);
InsertSum.setBrokenNumberPrice(BigDecimal.valueOf(0));
InsertSumResult.add(InsertSum);
}
}
LambdaQueryWrapper<WarehouseInventory> queryWrapper = new LambdaQueryWrapper<>();
params.put("warehouseId", BI.getWarehouseId()); // 添加一个空的列表
// 从Map中获取sizeIds,假设它们存储为List类型
List<String> sizeIds = (List<String>) params.get("sizeIds");
List<String> typeIds = (List<String>) params.get("typeIds");
// 检查sizeIds是否不为空且不是空列表
if (sizeIds != null && !sizeIds.isEmpty()) {
queryWrapper.in(WarehouseInventory::getSizeId, sizeIds);
}
// 检查sizeIds是否不为空且不是空列表
if (typeIds != null && !typeIds.isEmpty()) {
queryWrapper.in(WarehouseInventory::getTypeId, typeIds);
}
// 添加查询条件,仅查询warehouseId为111的记录
queryWrapper.eq(WarehouseInventory::getLocationId, BI.getWarehouseId());
DeleteList = warehouseInventoryService.list(queryWrapper);
// 检查sizeIds是否不为空且不是空列表
if (sizeIds != null && !sizeIds.isEmpty()) {
queryWrapper.in(WarehouseInventory::getSizeId, sizeIds);
}
List<WarehouseInvDto> DeleteFakeEpc = inventoryMapper.GetViewWarehouseInv(BI.getOrgId(), typeIds, sizeIds);
List<Inventory> addInvList=new ArrayList<>();
List<WarehouseInventory> addWareInvList=new ArrayList<>();
List<InventoryMapDto> InvFakeList= inventoryMapper.GetViewInventoryMap(BI.getWarehouseId());
for (InventoryMapDto invFake:InvFakeList) {
Random random = new Random();
//先插入仓库实体表
for (int i = 0; i < Integer.valueOf(invFake.getNum()); i++) {
String epc="000000"+DateTimeUtil.getCurrentDateTime().getTime()+(random.nextInt(999999 - 100000 + 1) + 100000);
Inventory inventory = new Inventory();
inventory.setEpc(epc);
inventory.setSizeId(invFake.getSizeId());
inventory.setTypeId(invFake.getTypeId());
inventory.setPrice(invFake.getPrice());
inventory.setProperty(0);
inventory.setState("normal");
inventory.setBussinessState("normal");
inventory.setCreateTime(DateTimeUtil.getCurrentDateTime());
inventory.setProductionDate(invFake.getProductionDate());
inventory.setWarrantyPeriod(invFake.getWarrantyPeriod());
inventory.setMaintenancePeriod(invFake.getMaintenancePeriod());
inventory.setTypeName(invFake.getTypeName());
inventory.setSizeName(invFake.getSizeName());
inventory.setBussinessType("normal");
inventory.setLocationState("in");
addInvList.add(inventory);
WarehouseInventory warehouseInventory = new WarehouseInventory();
warehouseInventory.setOrgId(invFake.getOrgId());
warehouseInventory.setEpc(epc);
warehouseInventory.setLocationId(invFake.getWarehouseId());
warehouseInventory.setTypeId(invFake.getTypeId());
warehouseInventory.setSizeId(invFake.getSizeId());
warehouseInventory.setLocationType("0");
warehouseInventory.setLocationState("in");
warehouseInventory.setCreateTime(DateTimeUtil.getCurrentDateTime());
warehouseInventory.setOrgName(invFake.getOrgName());
warehouseInventory.setEpcType(1);
warehouseInventory.setTypeName(invFake.getTypeName());
warehouseInventory.setSizeName(invFake.getSizeName());
warehouseInventory.setLocationName(invFake.getWarehouseName());
addWareInvList.add(warehouseInventory);
}
//再插入库存位置关联表
}
List<String> epcList = DeleteFakeEpc.stream()
.map(WarehouseInvDto::getEpc) // 假设 getEpc 是获取 epc 属性的方法
.collect(Collectors.toList());
if (epcList.size()>0)
{
inventoryMapper.deleteByEpcs(epcList);//删除库存内所有epc
}
// if (req.getState().equals("0"))//确认结果 String epcUpdate = BI.getEpcUpdate();
// { List<String> UpdateInventorys;
List<String> DeleteInventorys = Arrays.asList(BI.getEpcBack().split(","));
DeleteList = warehouseInventoryService.list(//找出所有
new LambdaQueryWrapper<WarehouseInventory>()
.and(qw -> DeleteInventorys.forEach(epc -> qw.or().eq(WarehouseInventory::getEpc, epc)))
);
List<String> UpdateInventorys = Arrays.asList(BI.getEpc_update().split(",")); if (epcUpdate!=null&&epcUpdate.contains(",")) {
UpdateList = warehouseInventoryService.list(//找出所有 UpdateInventorys = Arrays.asList(epcUpdate.split(","));
new LambdaQueryWrapper<WarehouseInventory>() } else {
.and(qw -> UpdateInventorys.forEach(epc -> qw.or().eq(WarehouseInventory::getEpc, epc))) UpdateInventorys = new ArrayList<>(Collections.singletonList(epcUpdate));
); }
warehouseInventoryService.removeBatchByIds(DeleteList);
warehouseInventoryService.saveBatch(UpdateList);
List<ViewEquipmentDto> viewEd= inventoryMapper.GetViewEquipment(UpdateInventorys);
for (ViewEquipmentDto inv:viewEd
) {
WarehouseInventory Wi=new WarehouseInventory();
Wi.setEpc(inv.getEpc());
Wi.setOrgId(BI.getOrgId());
Wi.setLocationId(BI.getWarehouseId());
Wi.setTypeId(inv.getTypeId());
Wi.setSizeId(inv.getSizeId());
Wi.setLocationType("0");
Wi.setLocationState("in");
Wi.setOrgName(BI.getOrgName());
Wi.setEpcType(0);
Wi.setTypeName(inv.getTypeName());
Wi.setSizeName(inv.getSizeName());
Wi.setLocationName(BI.getWarehouseName());
Wi.setLocationId(BI.getWarehouseId());
Wi.setLocationType("0");
Wi.setCreateTime(DateTimeUtil.getCurrentDateTime());
Wi.setUpdateTime(DateTimeUtil.getCurrentDateTime());
SaveEpcList.add(Wi);
}
BI.setInventoryState("close"); BI.setInventoryState("close");
BI.setUpdateTime(DateTimeUtil.getCurrentDateTime()); BI.setUpdateTime(DateTimeUtil.getCurrentDateTime());
if (DeleteList.size()>0)
{
warehouseInventoryService.removeBatchByIds(DeleteList);
}
if (SaveEpcList.size()>0)
{
warehouseInventoryService.saveBatch(SaveEpcList);
}
this.updateById(BI); this.updateById(BI);
if (SumResult.size()>0)
{
inventorySummaryService.updateBatchById(SumResult); inventorySummaryService.updateBatchById(SumResult);
}
if (InsertSumResult.size()>0)
{
inventorySummaryService.saveBatch(SumResult);
}
//入库添加虚拟装备
if (CollectionUtil.isNotEmpty(addInvList)){
inventoryService.saveBatch(addInvList);
}
//入库添加虚拟装备
if (CollectionUtil.isNotEmpty(addWareInvList)){
warehouseInventoryService.saveBatch(addWareInvList);
}
Warehouse warehouse= warehouseService.getById(BI.getWarehouseId()); Warehouse warehouse= warehouseService.getById(BI.getWarehouseId());
warehouse.setIsLocked(0); warehouse.setIsLocked(0);
warehouseService.updateById(warehouse); warehouseService.updateById(warehouse);
// } }
// else if (req.getState().equals("1"))//回滚结果 else//废除单据 req.getState().equals(1)
// { {
// List<String> DeleteInventorys = Arrays.asList(BI.getEpcBack().split(",")); Warehouse warehouse= warehouseService.getById(BI.getWarehouseId());
// UpdateList= warehouseInventoryService.list(//找出所有 warehouse.setIsLocked(0);
// new LambdaQueryWrapper<WarehouseInventory>() warehouseService.updateById(warehouse);
// .and(qw -> DeleteInventorys.forEach(epc -> qw.or().eq(WarehouseInventory::getEpc, epc))) BI.setInventoryState("cancel");
// ); BI.setUpdateTime(DateTimeUtil.getCurrentDateTime());
// List<String> UpdateInventorys = Arrays.asList(BI.getEpc_update().split(",")); this.updateById(BI);
// DeleteList = warehouseInventoryService.list(//找出所有 }
// new LambdaQueryWrapper<WarehouseInventory>() MQDto mqDto = new MQDto();
// .and(qw -> UpdateInventorys.forEach(epc -> qw.or().eq(WarehouseInventory::getEpc, epc))) mqDto.setApi("BussinessInventoryFinish");
// ); mqDto.setOrderId(BI.getId());
// warehouseInventoryService.removeBatchByIds(DeleteList); MQ.SendMsg("orderExchange", BI.getOrgId().toString(),mqDto);
// warehouseInventoryService.saveBatch(UpdateList);
// BI.setInventoryState("close");
// BI.setUpdateTime(DateTimeUtil.getCurrentDateTime());
// this.updateById(BI);
// }
return true; return true;
} }
......
...@@ -115,6 +115,8 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory ...@@ -115,6 +115,8 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
private InventorySummaryMapper inventorySummaryMapper; private InventorySummaryMapper inventorySummaryMapper;
//根据装备id查询出装备的详细信息 //根据装备id查询出装备的详细信息
@Override @Override
public InventoryDto getInventoryDetail(InventoryReq req) { public InventoryDto getInventoryDetail(InventoryReq req) {
......
...@@ -38,7 +38,57 @@ ...@@ -38,7 +38,57 @@
</sql> </sql>
<select id="GetViewEquipment" resultType="com.junmp.jyzb.api.bean.dto.ViewEquipmentDto">
SELECT
*
FROM
view_equipment
WHERE
epc IN
<foreach collection="epcList " item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="GetViewWarehouseInv" resultType="com.junmp.jyzb.api.bean.dto.WarehouseInvDto">
SELECT
epc, orgId, locationId, orgName
FROM
view_warehouse_inv
WHERE
orgId = #{orgId}
<if test="typeIdsList!=null and typeIdsList.size() > 0">
AND type_id IN
<foreach collection="typeIdsList " item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="sizeIds != null and sizeIds.size() > 0">
AND size_id IN
<foreach item="item" collection="sizeIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
<select id="GetViewInventoryMap" resultType="com.junmp.jyzb.api.bean.dto.InventoryMapDto"
parameterType="java.lang.String">
select * from view_inventory_map
where warehouseId=#{warehouseId}
</select>
<delete id="deleteByEpcs" parameterType="java.util.List">
DELETE FROM inventory
WHERE epc IN
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<insert id="SetCabinetInventory"> <insert id="SetCabinetInventory">
INSERT INTO base_inventory_summary_type2 (id,org_id_int,org_name, org_code,type_id,type_name,size_id,size_name,location_id,location_name, INSERT INTO base_inventory_summary_type2 (id,org_id_int,org_name, org_code,type_id,type_name,size_id,size_name,location_id,location_name,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论