Commit ec70df2b by 李小惠

修改前端返回数据

parent 5f948795
......@@ -69,6 +69,8 @@ public class InventoryDto implements Serializable {
*/
private String locationId ;
private String locationName;
/**
* 价格
*/
......@@ -91,7 +93,8 @@ public class InventoryDto implements Serializable {
/**
* 组织机构id
*/
private Long orgId;
private String orgId;
private Long orgIdInt;
/**
* 组织机构
*/
......
......@@ -92,4 +92,15 @@ public class OrderDto implements Serializable {
private String repairName;
private String destoryName;
/**
* 附件地址
*/
private String attachmentLocation;
/**
* 归还人id,归还入库特有(相当于领用人)
*/
private String returnUserId;
private String returnUser;
}
......@@ -139,7 +139,7 @@ public class UpdateOrderReq extends BaseRequest implements Serializable {
/**
* 调拨类型(2支拨,1价拨),调拨出入库才有
*/
private Integer transferType;
private Integer allocateType;
/**
* 归还人id,归还入库特有(相当于领用人)
......
......@@ -94,6 +94,12 @@ public class InventoryController {
return ApiRes.success(inventorySummaryService.getEquipmentInfo(req));
}
@PostMapping("/getOne")
@ApiOperation("获取单个库存的数量")
public ApiRes<InventorySummary> getOne(@RequestBody InventorySumReq req){
return ApiRes.success(inventorySummaryService.getOne(req));
}
//根据组织机构id/单警柜id/仓库id查询出库存汇总数量以及金额(和getEquipmentInfo同时调用,汇总出符合查询条件的装备)
......@@ -239,5 +245,12 @@ public class InventoryController {
return ApiRes.success(inventoryService.checkEPCList(req));
}
//调用存储过程将汇总信息进行插入
@PostMapping("/insertToSummary")
@ApiOperation("将汇总信息进行插入")
public ApiRes<Boolean> insertToSummary(){
return ApiRes.success(inventorySummaryService.insertToSummary());
}
}
......@@ -133,6 +133,14 @@ public class InventorySummary implements Serializable {
@TableField("destruction_number")
private Integer destructionNumber;
/**
* 销毁金额
*/
@ApiModelProperty(value = "销毁金额")
@TableField("destruction_price")
private BigDecimal destructionPrice;
/**
* 过质保数量
*/
......
......@@ -20,7 +20,7 @@ public class OrderMain implements Serializable {
@TableField("order_type")
private String orderType;
@TableField("process_id")
@TableField(value = "process_id",updateStrategy = FieldStrategy.IGNORED)
private String processId;
@TableField("bussiness_type")
......
......@@ -81,7 +81,7 @@ import java.util.stream.Collectors;
String Type= orderType.get(0).getValue().toString();
if (Type.equals("workOrder"))//出入库单据
if (Type.equals("workOrder") || Type.equals("quickOrder"))//出入库单据(包含快速移库出库单)
{
// OrderMainReq req=new OrderMainReq();
// req.setProcessId(processInstanceId);
......@@ -122,21 +122,7 @@ import java.util.stream.Collectors;
if (Type.equals("stocktakeOrder")){//盘库申请单
}
if (Type.equals("quickOrder")){
OrderMain existOrder= orderMainService.getOne(new LambdaQueryWrapper<OrderMain>()
.eq(OrderMain::getProcessId, processInstanceId));
existOrder.setExamineState("finished");
existOrder.setOrderState("ready");
orderMainService.updateById(existOrder);
//创建快速出库单并且通过快速出库单再去创建入库单(主单)
boolean b = orderMainService.addQuickOrder(existOrder);
if (!b){
throw new ServiceException(OrderExceptionEnum.ORDER_CREATE_ERROR);
}
}
}
}
......
......@@ -64,4 +64,7 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
//根据条件查询满足条件的数据(用于快速移库修改装备仓库id)
List<Inventory> selectEqsByItem(@Param("list") List<Object[]> searchCriteria);
//根据epc获取装备信息
List<InventoryDto> GetInvInfoByEpc(@Param("list") List<String> epcList);
}
\ No newline at end of file
......@@ -45,4 +45,6 @@ public interface InventorySummaryMapper extends BaseMapper<InventorySummary> {
List<TjOrgEqsDto> test(@Param("req") InventoryReq req);
List<TjOrgEqsDto> selectDynamicView();
void insertToSummary(@Param("summaryTableName") String summaryTableName,@Param("sourceTableName") String sourceTableName, @Param("warrantyThreshold") Integer warrantyThreshold);
}
\ No newline at end of file
......@@ -22,6 +22,8 @@ public interface InventorySummaryService extends IService<InventorySummary> {
//根据条件查询装备汇总信息,用于出库单的选择装备
List<InventorySumDto> GetInventorySumInfo(InventorySumReq req);
InventorySummary getOne(InventorySumReq req);
//对summary表中数据进行重新计算装备信息汇总
Boolean updateSummaryInsByOrder(Long orgId);
......@@ -37,4 +39,6 @@ public interface InventorySummaryService extends IService<InventorySummary> {
//出入库时无单据查询库存汇总并统计更新或者记账时根据单据查询库存汇总并统计更新
List<InventorySummary> selectSumByItems(List<Object[]> searchCriteria);
boolean insertToSummary();
}
......@@ -194,22 +194,8 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
if (epcList.size()==0){
throw new ServiceException(CabinetExceptionEnum.PARAMETER_ERROR);
}
List<InventoryDto> inventoryDtoList=new ArrayList<>();
List<Inventory> inventoryList = list(new LambdaQueryWrapper<Inventory>().in(Inventory::getEpc, epcList));
for (Inventory inventory:inventoryList) {
InventoryDto inventoryDto = new InventoryDto();
BeanPlusUtil.copyProperties(inventory, inventoryDto);
//设置型号名称,类别名称,供应商名称
String sizeName = equipmentSizeService.getById(inventory.getSizeId()).getName();
String typeName = equipmentTypeService.getById(inventory.getTypeId()).getName();
if (inventory.getSupplierId() != null) {
String supplierName = supplierService.getById(inventory.getSupplierId()).getName();
inventoryDto.setSupplierName(supplierName);
}
inventoryDto.setSizeName(sizeName);
inventoryDto.setTypeName(typeName);
inventoryDtoList.add(inventoryDto);
}
List<InventoryDto> inventoryDtoList=inventoryMapper.GetInvInfoByEpc(epcList);
return inventoryDtoList;
}
......
......@@ -93,6 +93,7 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
return o1.getTypeId().compareTo(o2.getTypeId());
}
});
Page<InventorySummary> page1 = PageFactory.getDefaultPage(req.getPageNo(), req.getPageSize());
page1.setRecords(list);
page1.setTotal(size);
......@@ -109,7 +110,17 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
return inventorySummaryMapper.GetInventorySumInfo(req);
}
@Override
public InventorySummary getOne(InventorySumReq req) {
LambdaQueryWrapper<InventorySummary> eq = new LambdaQueryWrapper<InventorySummary>()
.eq(ObjectUtil.isNotEmpty(req.getOrgId()), InventorySummary::getOrgId, req.getOrgId())
.eq(ObjectUtil.isNotEmpty(req.getLocationId()), InventorySummary::getLocationId, req.getLocationId())
.eq(ObjectUtil.isNotEmpty(req.getTypeId()), InventorySummary::getTypeId, req.getTypeId())
.eq(ObjectUtil.isNotEmpty(req.getSizeId()), InventorySummary::getSizeId, req.getSizeId())
.eq(ObjectUtil.isNotEmpty(req.getUnitPrice()), InventorySummary::getUnitPrice, req.getUnitPrice());
InventorySummary one = getOne(eq);
return one;
}
//对summary表中数据进行重新计算装备信息汇总
......@@ -229,6 +240,14 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
return inventorySummaryMapper.selectSumByItems(searchCriteria);
}
@Override
public boolean insertToSummary() {
String summaryTableName="base_inventory_summary";
String sourceTableName="base_inventory";
Integer warrantyThreshold=15;
inventorySummaryMapper.insertToSummary(summaryTableName,sourceTableName,warrantyThreshold);
return true;
}
private LambdaQueryWrapper<InventorySummary> createWrapper(InventorySumReq req) {
......
......@@ -172,15 +172,16 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
startProcessInstanceDTO.setOrderType("workOrder");
processInstanceId= FlowInstanceService.startProcessInstanceById(startProcessInstanceDTO);
}else {//快速移库单
}else if (req.getBussinessType().equals("quick") && req.getExamineState().equals("working")){//快速移库单
startProcessInstanceDTO.setOrderType("quickOrder");
processInstanceId= FlowInstanceService.startProcessInstanceById(startProcessInstanceDTO);
}
//list返回数据
List<String> list=new ArrayList<>();
//当前审核是否跳过
if (processInstanceId.substring(0,2).equals("TG")){
String substring = processInstanceId.substring(2);
if (processInstanceId!=null && processInstanceId.substring(0,4).equals("skip") ){
String substring = processInstanceId.substring(4);
order.setProcessId(substring);
if (ObjectUtil.isNotNull(req.getId()) && !req.getId().trim().isEmpty()) {
updateById(order);
......@@ -548,9 +549,18 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
boolean d = updateSummaryInfo(req, orderDetailReqList, orgId);
//如果是领用,警员绑定装备
boolean e = policeBindEqs(req, reqList, orgId);
boolean e=true;
if (req.getBussinessType().equals("use")){
e = policeBindEqs(req, reqList, orgId);
}
//如果是快速移库,记账完成之后新增入库单并且该单据不走审核流,但是审核状态和入库状态显示已完成
boolean f=true;
if (req.getBussinessType().equals("quick")){
f = addQuickOrder(orderMain);
}
//更新主单据
return (a && b && c && d && e);
return (a && b && c && d && e && f );
}
public boolean policeBindEqs(UpdateOrderReq req,List<UpdateOrderDetailReq> reqList,Long orgId){
......@@ -850,14 +860,16 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
//快速生成入库单
@Override
public boolean addQuickOrder(OrderMain existOrder) {
//orderMain入库单
//创建新的orderMain入库单
OrderMain orderMain = new OrderMain();
BeanPlusUtil.copyProperties(existOrder,orderMain);
orderMain.setEndOrgId(existOrder.getStartOrgId());
orderMain.setEndOrgName(existOrder.getStartOrgName());
orderMain.setOrderType("in");
orderMain.setId(UUID.randomUUID().toString());
//修改订单编号
//工作流流程设为空
orderMain.setProcessId(null);
//修改订单编号,设置为入库的单号
UpdateOrderReq req = new UpdateOrderReq();
BeanPlusUtil.copyProperties(orderMain,req);
OrderNum orderNum = setOrderCode(req);
......@@ -867,14 +879,16 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
String.format("%02d",LocalDateTime.now().getDayOfMonth())+codeValue);
//保存入库单
save(orderMain);
//查询出库子单
//查询出库子单用于赋值到入库单中
List<OrderDetail> list = orderDetailService.list(new LambdaQueryWrapper<OrderDetail>()
.eq(OrderDetail::getOrderId, existOrder.getId()));
//查询条件,将所有查询条件放在searchCriteria中,用于修改库存表中的装备的仓库位置
//原来出库单的查询条件list
//原来出库单的查询条件list(根据条件查询库存汇总表中包含有相同条件的数据)
List<Object[]> searchCriteria=new ArrayList<>();
//新建的入库单查询条件list
//新建的入库单查询条件list(根据条件查询库存汇总表中是否包含有相同条件的数据)
List<Object[]> updateCriteria=new ArrayList<>();
//仓库id
String locationId = orderMain.getLocationId();
//创建入库单子单
List<OrderDetail> collect = list.stream().map(orderDetail -> {
OrderDetail orderDetail1 = new OrderDetail();
......@@ -884,60 +898,68 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
//修改单据出入状态
orderDetail1.setType("in");
//修改仓库id
orderDetail1.setWarehouseId(orderMain.getLocationId());
orderDetail1.setWarehouseId(locationId);
orderDetail1.setWarehouseName(orderMain.getLocationName());
//新增创建时间
orderDetail1.setCreateTime(DateTimeUtil.getCurrentDateTime());
Object[] criteria=new Object[]{existOrder.getStartOrgId(),orderDetail.getWarehouseId(),orderDetail.getTypeId(),orderDetail.getSizeId(),orderDetail.getPrice()};
searchCriteria.add(criteria);
Object[] update=new Object[]{orderMain.getEndOrgId(),orderDetail1.getWarehouseId(),orderDetail1.getTypeId(),orderDetail1.getSizeId(),orderDetail1.getPrice()};
Object[] update=new Object[]{orderMain.getEndOrgId(),locationId,orderDetail1.getTypeId(),orderDetail1.getSizeId(),orderDetail1.getPrice()};
updateCriteria.add(update);
return orderDetail1;
}).collect(Collectors.toList());
orderDetailService.saveBatch(collect);
//将库存表中的装备的仓库id进行修改
List<Inventory> eqsList = inventoryService.selectEqsByItem(searchCriteria);
for (Inventory inventory : eqsList) {
for (OrderDetail detail2 : collect) {
if (inventory.getOrgId().equals(existOrder.getStartOrgId())
&& inventory.getSizeId().equals(detail2.getSizeId())
&& inventory.getTypeId().equals(detail2.getTypeId())
&& inventory.getPrice().equals(detail2.getPrice())) {
// 修改 仓库id
inventory.setLocationId(detail2.getWarehouseId());
break; // 找到匹配的对象后跳出内循环
}
}
}
inventoryService.updateBatchById(eqsList);
//将summary汇总表中数据进行修改(修改该组织机构下的装备汇总信息将库存信息的在库数,库存总数,总价还有其他数据数量进行修改)
//那么首先将原来的仓库下的装备汇总信息进行查询出来,对其进行修改
List<InventorySummary> oldSummaryList = inventorySummaryService.selectSumByItems(searchCriteria);
//其次查询出修改后的仓库下面的汇总信息,判断该仓库下是否已经存在该号型、类型、单价相同的装备数据
List<InventorySummary> newSummaryList = inventorySummaryService.selectSumByItems(updateCriteria);
//创建删除列表用于将没用的数据汇总信息进行删除
List<InventorySummary> deleteList=new ArrayList<>();
for (OrderDetail orderDetail: list ) {
for (InventorySummary oldSum:oldSummaryList) {
//如果组织机构、仓库id、sizeId、typeId、unitPrice相同,那么修改其各项数值(不会存在两个列表长度不对等的情况,一定是一对一的,只不过是顺序问题,所以需要进行遍历)
//需要判断传递的计划数量是否和在库数相等,如果相等表示将报废区数的数量也一起移库,否则表示报废区的数量
if (orderDetail.getSizeId().equals(oldSum.getSizeId())
&& orderDetail.getTypeId().equals(oldSum.getTypeId())
&& orderDetail.getPrice().compareTo(oldSum.getUnitPrice())==0){
&& orderDetail.getPrice().compareTo(oldSum.getUnitPrice())==0 ){
//直接修改各项数据,并且判断库存总数是否为0,如果为0 ,判断其他数据是否为0,只有当所有数据为0才能将这条信息进行删除,否则装备数据会不准确(销毁数量)
oldSum.setNumber(oldSum.getNumber()-orderDetail.getPlanNum());
oldSum.setPrice(oldSum.getPrice().subtract(orderDetail.getPrice().multiply(BigDecimal.valueOf(orderDetail.getPlanNum()))));
oldSum.setStockNumber(oldSum.getStockNumber()-orderDetail.getPlanNum());
//如果存在删减数量完成之后所有的数量值都是0的情况,那么将这一条数据进行删除操作
if (oldSum.getStockNumber()==0 && oldSum.getNumber()==0 && oldSum.getOutboundNumber()==0 && oldSum.getDestructionNumber()!=0 ){
if (oldSum.getStockNumber()==0 && oldSum.getNumber()==0 && oldSum.getOutboundNumber()==0
&& oldSum.getBrokenNumber()==0 && oldSum.getDestructionNumber()!=0 ){
deleteList.add(oldSum);
}
break;
break;//查询到直接跳过该循环进入下一循环
}
}
for (InventorySummary oldSum:oldSummaryList) {
if (orderDetail.getSizeId().equals(oldSum.getSizeId())
&& orderDetail.getTypeId().equals(oldSum.getTypeId())
&& orderDetail.getPrice().compareTo(oldSum.getUnitPrice())==0 ){
//直接修改各项数据,并且判断库存总数是否为0,如果为0 ,判断其他数据是否为0,只有当所有数据为0才能将这条信息进行删除,否则装备数据会不准确(销毁数量)
oldSum.setNumber(oldSum.getNumber()-orderDetail.getPlanNum());
oldSum.setPrice(oldSum.getPrice().subtract(orderDetail.getPrice().multiply(BigDecimal.valueOf(orderDetail.getPlanNum()))));
oldSum.setStockNumber(oldSum.getStockNumber()-orderDetail.getPlanNum());
//如果存在删减数量完成之后所有的数量值都是0的情况,那么将这一条数据进行删除操作
if (oldSum.getStockNumber()==0 && oldSum.getNumber()==0 && oldSum.getOutboundNumber()==0
&& oldSum.getBrokenNumber()==0 && oldSum.getDestructionNumber()!=0 ){
deleteList.add(oldSum);
}
break;//查询到直接跳过该循环进入下一循环
}
break;
}
}
//其次查询出修改后的仓库下面的汇总信息,判断该仓库下是否已经存在该号型、类型、单价相同的装备数据
List<InventorySummary> newSummaryList = inventorySummaryService.selectSumByItems(updateCriteria);
// 如果存在那么只需要修改在库数,出库数,库存总数和单价;
// 如果不存在那么新增一条该型号,类型和单价的数据,并且对在库数,出库数,库存总数和单价进行赋值添加;
//判断查询的汇总表中是否存在数据,如果list为空,那么直接进行新增即可,如果不为空,那么需要遍历哪些满足条件,如果满足条件只需要进行修改更新,如果未找到那么则进行新增
......@@ -962,6 +984,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
newSum.setPrice(newSum.getPrice().subtract(orderDetail1.getPrice().multiply(BigDecimal.valueOf(orderDetail1.getPlanNum()))));
newSum.setStockNumber(newSum.getStockNumber()-orderDetail1.getPlanNum());
//过质保数?临近质保?报废数?
flag=true;
break;
}
......@@ -975,18 +998,241 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
}
//保存新的inventorySummary数据
//如果newList不为空则save
boolean a=true;
if(newList.size()>0){
inventorySummaryService.saveBatch(newList);
a=inventorySummaryService.saveBatch(newList);
}
//如果删除list不为空,那么进行批量删除
boolean b=true;
if (deleteList.size()>0){
b=inventorySummaryService.removeBatchByIds(deleteList);
}
//将orderSum和newSum两个列表进行拼接,最终得到一个更新的list进行更新
List<InventorySummary> totalSumList=new ArrayList<>();
totalSumList.addAll(oldSummaryList);
totalSumList.addAll(newSummaryList);
boolean c =inventorySummaryService.updateBatchById(totalSumList);
//将库存表inventory中的装备的仓库id进行修改
List<Inventory> eqsList = inventoryService.selectEqsByItem(searchCriteria);
for (Inventory inventory : eqsList) {
for (OrderDetail detail2 : collect) {
if (inventory.getOrgId().equals(existOrder.getStartOrgId())
&& inventory.getSizeId().equals(detail2.getSizeId())
&& inventory.getTypeId().equals(detail2.getTypeId())
&& inventory.getPrice().equals(detail2.getPrice())) {
// 修改 仓库id
inventory.setLocationId(detail2.getWarehouseId());
break; // 找到匹配的对象后跳出内循环
}
}
}
boolean d=inventoryService.updateBatchById(eqsList);
return (a && b && c && d);
}
public boolean addQuickOrder1(OrderMain existOrder) {
//创建新的orderMain入库单
OrderMain orderMain = new OrderMain();
BeanPlusUtil.copyProperties(existOrder,orderMain);
orderMain.setEndOrgId(existOrder.getStartOrgId());
orderMain.setEndOrgName(existOrder.getStartOrgName());
orderMain.setOrderType("in");
orderMain.setId(UUID.randomUUID().toString());
//工作流流程设为空
orderMain.setProcessId(null);
//修改订单编号,设置为入库的单号
UpdateOrderReq req = new UpdateOrderReq();
BeanPlusUtil.copyProperties(orderMain,req);
OrderNum orderNum = setOrderCode(req);
String codeValue=String.format("%04d",orderNum.getNum());
orderMain.setOrderCode(orderNum.getBussinessType()+orderNum.getYear()+
String.format("%02d",LocalDateTime.now().getMonth().getValue())+
String.format("%02d",LocalDateTime.now().getDayOfMonth())+codeValue);
//保存入库单
save(orderMain);
//查询出库子单用于赋值到入库单中
List<OrderDetail> list = orderDetailService.list(new LambdaQueryWrapper<OrderDetail>()
.eq(OrderDetail::getOrderId, existOrder.getId()));
//查询条件,将所有查询条件放在searchCriteria中,用于修改库存表中的装备的仓库位置
//原来出库单的查询条件list(根据条件查询库存汇总表中包含有相同条件的数据)
List<Object[]> searchCriteria=new ArrayList<>();
//新建的入库单查询条件list(根据条件查询库存汇总表中是否包含有相同条件的数据)
List<Object[]> updateCriteria=new ArrayList<>();
//仓库id
String locationId = orderMain.getLocationId();
String locationName = orderMain.getLocationName();
//创建入库单子单
List<OrderDetail> collect = list.stream().map(orderDetail -> {
OrderDetail orderDetail1 = new OrderDetail();
BeanPlusUtil.copyProperties(orderDetail, orderDetail1);
//修改主单据id
orderDetail1.setOrderId(orderMain.getId());
//修改单据出入状态
orderDetail1.setType("in");
//修改仓库id
orderDetail1.setWarehouseId(locationId);
orderDetail1.setWarehouseName(locationName);
Object[] criteria=new Object[]{existOrder.getStartOrgId(),orderDetail.getWarehouseId(),orderDetail.getTypeId(),orderDetail.getSizeId(),orderDetail.getPrice()};
searchCriteria.add(criteria);
Object[] update=new Object[]{orderMain.getEndOrgId(),locationId,orderDetail1.getTypeId(),orderDetail1.getSizeId(),orderDetail1.getPrice()};
updateCriteria.add(update);
return orderDetail1;
}).collect(Collectors.toList());
orderDetailService.saveBatch(collect);
//将summary汇总表中数据进行修改(修改该组织机构下的装备汇总信息将库存信息的在库数,库存总数,总价还有其他数据数量进行修改)
//那么首先将原来的仓库下的装备汇总信息进行查询出来,对其进行修改
List<InventorySummary> oldSummaryList = inventorySummaryService.selectSumByItems(searchCriteria);
//其次查询出修改后的仓库下面的汇总信息,判断该仓库下是否已经存在该号型、类型、单价相同的装备数据
List<InventorySummary> newSummaryList = inventorySummaryService.selectSumByItems(updateCriteria);
//第一步:判断是否将报废区的数据也同样进行移库(flag=true表示将报废区的数量进行一起移动)
boolean flag = oldSummaryList.stream()
.filter(oldsum -> oldsum.getBrokenNumber() > 0)
.anyMatch(oldsum -> list.stream()
.anyMatch(orderDetail -> orderDetail.getSizeId().equals(oldsum.getSizeId())
&& orderDetail.getTypeId().equals(oldsum.getTypeId())
&& orderDetail.getPrice().compareTo(oldsum.getUnitPrice()) == 0
&& oldsum.getBrokenNumber() + orderDetail.getPlanNum() == oldsum.getStockNumber())
);
//创建删除列表用于将没用的数据汇总信息进行删除
List<InventorySummary> deleteList=new ArrayList<>();
//将修改的信息直接保存(需要的只是各种数量方便计算)
List<InventorySummary> saveList=new ArrayList<>();
//如果整个报废区进行移动,那么将各个数量进行修改
if (flag){
for (OrderDetail orderDetail: list ) {
for (InventorySummary oldSum : oldSummaryList) {
//如果组织机构、仓库id、sizeId、typeId、unitPrice相同,那么修改其各项数值(不会存在两个列表长度不对等的情况,一定是一对一的,只不过是顺序问题,所以需要进行遍历)
if (orderDetail.getSizeId().equals(oldSum.getSizeId())
&& orderDetail.getTypeId().equals(oldSum.getTypeId())
&& orderDetail.getPrice().compareTo(oldSum.getUnitPrice()) == 0) {
InventorySummary inventorySummary = new InventorySummary();
BeanPlusUtil.copyProperties(oldSum,inventorySummary);
inventorySummary.setLocationId(locationId);
inventorySummary.setLocationName(locationName);
inventorySummary.setNumber(orderDetail.getPlanNum()+oldSum.getOutboundNumber());
inventorySummary.setPrice(orderDetail.getPrice().multiply(BigDecimal.valueOf(orderDetail.getPlanNum())));
inventorySummary.setStockNumber(orderDetail.getPlanNum());
inventorySummary.setDestructionNumber(0);
//销毁金额也为0
inventorySummary.setDestructionPrice(BigDecimal.ZERO);
saveList.add(inventorySummary);
//如果存在删减数量完成之后所有的数量值都是0的情况,那么将这一条数据进行删除操作
if (oldSum.getDestructionNumber() == 0) {
deleteList.add(oldSum);
}else {
oldSum.setBrokenNumber(0);
oldSum.setNumber(0);
oldSum.setPrice(BigDecimal.ZERO);
oldSum.setStockNumber(0);
oldSum.setOutboundNumber(0);
oldSum.setUseNumber(0);
oldSum.setExpireNumber(0);
oldSum.setNearBrokenNumber(0);
}
break;//查询到直接跳过该循环进入下一循环
}
}
}
}else {
for (OrderDetail orderDetail: list ) {
for (InventorySummary oldSum : oldSummaryList) {
//如果组织机构、仓库id、sizeId、typeId、unitPrice相同,那么修改其各项数值(不会存在两个列表长度不对等的情况,一定是一对一的,只不过是顺序问题,所以需要进行遍历)
if (orderDetail.getSizeId().equals(oldSum.getSizeId())
&& orderDetail.getTypeId().equals(oldSum.getTypeId())
&& orderDetail.getPrice().compareTo(oldSum.getUnitPrice()) == 0) {
InventorySummary inventorySummary = new InventorySummary();
BeanPlusUtil.copyProperties(oldSum,inventorySummary);
inventorySummary.setLocationId(locationId);
inventorySummary.setLocationName(locationName);
//在库数量进行修改并且报废数设为0
inventorySummary.setBrokenNumber(0);
inventorySummary.setNumber(orderDetail.getPlanNum()+oldSum.getOutboundNumber());
inventorySummary.setPrice(orderDetail.getPrice().multiply(BigDecimal.valueOf(orderDetail.getPlanNum()+oldSum.getOutboundNumber())));
inventorySummary.setStockNumber(orderDetail.getPlanNum());
inventorySummary.setDestructionNumber(0);
inventorySummary.setDestructionPrice(BigDecimal.ZERO);
saveList.add(inventorySummary);
oldSum.setNumber(oldSum.getNumber()-orderDetail.getPlanNum());
oldSum.setPrice(oldSum.getPrice().subtract(orderDetail.getPrice().multiply(BigDecimal.valueOf(orderDetail.getPlanNum()))));
oldSum.setOutboundNumber(0);
oldSum.setStockNumber(oldSum.getNumber()-orderDetail.getPlanNum());
oldSum.setNearBrokenNumber(0);
oldSum.setExpireNumber(0);
oldSum.setUseNumber(0);
//如果存在删减数量完成之后所有的数量值都是0的情况,那么将这一条数据进行删除操作
if (oldSum.getBrokenNumber()==0&& oldSum.getDestructionNumber() == 0) {
deleteList.add(oldSum);
}
break;//查询到直接跳过该循环进入下一循环
}
}
}
}
//判断查询到的newList是否有值,如果有值直接进行修改即可,但是如果不存在,则默认新增一条数据
if (newSummaryList.size()>0){
for (InventorySummary save: saveList) {
for (InventorySummary newsum:newSummaryList) {
if (save.getSizeId().equals(newsum.getSizeId())
&& save.getTypeId().equals(newsum.getTypeId())
&& save.getPrice().compareTo(newsum.getUnitPrice()) == 0){
newsum.setBrokenNumber(save.getBrokenNumber()+newsum.getBrokenNumber());
newsum.setNumber(save.getNumber()+newsum.getNumber());
newsum.setStockNumber(save.getStockNumber()+newsum.getStockNumber());
newsum.setPrice(newsum.getPrice().multiply(BigDecimal.valueOf(newsum.getStockNumber())));
newsum.setOutboundNumber(save.getOutboundNumber()+newsum.getOutboundNumber());
newsum.setExpireNumber(save.getExpireNumber()+newsum.getExpireNumber());
newsum.setNearBrokenNumber(save.getNearBrokenNumber()+newsum.getNearBrokenNumber());
newsum.setUseNumber(save.getUseNumber()+newsum.getUseNumber());
saveList.remove(save);
break;
}
}
}
}
//如果saveList不为空则save
boolean a=true;
if(saveList.size()>0){
a=inventorySummaryService.saveBatch(saveList);
}
//如果删除list不为空,那么进行批量删除
boolean b=true;
if (deleteList.size()>0){
inventorySummaryService.removeBatchByIds(deleteList);
b=inventorySummaryService.removeBatchByIds(deleteList);
}
//将orderSum和newSum两个列表进行拼接,最终得到一个更新的list进行更新
List<InventorySummary> totalSumList=new ArrayList<>();
totalSumList.addAll(oldSummaryList);
totalSumList.addAll(newSummaryList);
return inventorySummaryService.updateBatchById(totalSumList);
boolean c =inventorySummaryService.updateBatchById(totalSumList);
//将库存表inventory中的装备的仓库id进行修改
//需要判断是否将报废区的数据进行移库,如果移动,那么所有的装备修改仓库id
//如果保留报废区,那么将报废区的数量不进行修改,其余数据进行修改
List<Inventory> eqsList = inventoryService.selectEqsByItem(searchCriteria);
for (Inventory inventory : eqsList) {
for (OrderDetail detail2 : collect) {
if (inventory.getOrgId().equals(existOrder.getStartOrgId())
&& inventory.getSizeId().equals(detail2.getSizeId())
&& inventory.getTypeId().equals(detail2.getTypeId())
&& inventory.getPrice().equals(detail2.getPrice())) {
// 修改 仓库id
inventory.setLocationId(detail2.getWarehouseId());
break; // 找到匹配的对象后跳出内循环
}
}
}
boolean d=inventoryService.updateBatchById(eqsList);
return true;
}
//新增一条inventorysummary数据
......
......@@ -34,7 +34,7 @@ import java.util.Map;
/**
* @Author: Zhaojw
* @Description: 过期物资消息提醒
* @Description: 过期物资消息提醒(过质保期数量的消息提醒)
* @DateTime: 2023/7/14 16:25
* @Params:
* @Return
......@@ -62,6 +62,7 @@ public class InvExpireMsg implements JobAction {
//所有待判断的物资
wrapper.eq( Inventory::getTermState, 0);
//获取未超期的物资数量
long termCount= inventoryService.count(wrapper);
List<Inventory> list=new ArrayList<>();
......
......@@ -474,6 +474,32 @@
)
</foreach>
</select>
<select id="GetInvInfoByEpc" resultType="com.junmp.jyzb.api.bean.dto.InventoryDto">
SELECT bi.*, po.org_name, es.name, et.name, bs.name, bw.name
FROM base_inventory bi
JOIN pub_org po ON po.org_id = bi.org_id_int
JOIN base_equipment_size es ON es.id = bi.size_id
JOIN base_equipment_type et ON et.id = bi.type_id
JOIN base_supplier bs ON bs.id = bi.supplier_id
JOIN base_warehouse bw ON bw.id = bi.location_id
WHERE bi.location_type = 0 AND epc IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
UNION ALL
SELECT bi.*, po.org_name, es.name, et.name, bs.name, bc.name
FROM base_inventory bi
JOIN pub_org po ON po.org_id = bi.org_id_int
JOIN base_equipment_size es ON es.id = bi.size_id
JOIN base_equipment_type et ON et.id = bi.type_id
JOIN base_supplier bs ON bs.id = bi.supplier_id
JOIN base_cabinet_box bcb ON bcb.id = bi.location_id
JOIN base_cabinet bc ON bc.id = bcb.cabinet_id
WHERE bi.location_type = 1 AND epc IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>
\ No newline at end of file
......@@ -268,7 +268,7 @@
select * from base_inventory_summary where
<foreach collection="list" item="item" separator="or">
(
org_id_int = ${item[0]} AND location_id = '${item[1]}' AND type_id = ${item[3]} AND size_id = '${item[2]}' AND unit_price = ${item[4]}
org_id_int = ${item[0]} AND location_id = '${item[1]}' AND type_id = ${item[2]} AND size_id = '${item[3]}' AND unit_price = ${item[4]}
)
</foreach>
</select>
......@@ -368,6 +368,13 @@
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="insertToSummary" statementType="CALLABLE">
{call InsertInventorySummary(
#{summaryTableName, mode=IN},
#{sourceTableName, mode=IN},
#{warrantyThreshold, mode=IN, jdbcType=INTEGER}
)}
</insert>
</mapper>
\ No newline at end of file
......@@ -165,7 +165,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
Object skip = runtimeService.getVariable(processInstance.getId(), "skip");
if (ObjectUtils.isNotEmpty(skip) && BooleanUtils.toBoolean(skip.toString())){
return "TG"+processInstance.getId();
return "skip"+processInstance.getId();
}
else
{
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论