Merge branch 'master' of http://gitea.zianxin.com/zianxin-tec/biz-api-cloud
This commit is contained in:
commit
884cfa4b32
18 files changed
+404
-26
No files matched your search
+12
@@ -0,0 +1,12 @@
|
||||
package com.bsd.pjcloud.canteen.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public final class CanteenFlowConstant {
|
||||
|
||||
/**
|
||||
* 包厢预约流程标识
|
||||
*/
|
||||
public static final String bx_marking_flow= "BX_MARKING_FLOW";
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.bsd.pjcloud.canteen.dto.flow;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class BxMarkingFlowDto {
|
||||
|
||||
/**
|
||||
* 包厢时间
|
||||
*/
|
||||
private String boxesName;
|
||||
|
||||
|
||||
/**
|
||||
* 预约时间
|
||||
*/
|
||||
private String markTime;
|
||||
}
|
||||
+2
@@ -38,4 +38,6 @@ public class DailyMenuAppVO {
|
||||
* 时间类型
|
||||
*/
|
||||
private Integer hourType;
|
||||
|
||||
private Integer sort;
|
||||
}
|
||||
+12
-4
@@ -10,6 +10,8 @@ import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.log.annotation.SysLog;
|
||||
import com.bsd.pjcloud.canteen.entity.BoxesBookingEntity;
|
||||
import com.bsd.pjcloud.canteen.service.BoxesBookingService;
|
||||
import com.bsd.pjcloud.common.security.annotation.Inner;
|
||||
import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum;
|
||||
import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordParamDto;
|
||||
import org.apache.seata.spring.annotation.GlobalTransactional;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
@@ -136,13 +138,19 @@ public class BoxesBookingController {
|
||||
|
||||
@PostMapping("/flow-callback")
|
||||
@Operation(summary = "流程节点回调通知")
|
||||
@Inner
|
||||
public R createBooking(@RequestBody ProcessNodeRecordParamDto processNodeRecordParamDto) {
|
||||
|
||||
// String flowId = processNodeRecordParamDto.getFlowId();
|
||||
// BoxesBookingEntity boxesBookingEntity = new BoxesBookingEntity();
|
||||
// boxesBookingEntity.setProcessInstanceId(flowId);
|
||||
// boxesBookingEntity.setCheckStatus();
|
||||
String processInstanceId = processNodeRecordParamDto.getProcessInstanceId();
|
||||
BoxesBookingEntity boxesBookingEntity = new BoxesBookingEntity();
|
||||
boxesBookingEntity.setProcessInstanceId(processInstanceId);
|
||||
boxesBookingEntity.setCheckStatus(TaskCheckStatusEnum.RESULT.getCode());
|
||||
System.out.println("***************************");
|
||||
System.out.println(processNodeRecordParamDto.getData());
|
||||
// boxesBookingService.update()
|
||||
LambdaQueryWrapper<BoxesBookingEntity> boxesBookingEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
boxesBookingEntityLambdaQueryWrapper.eq(BoxesBookingEntity::getProcessInstanceId, processInstanceId);
|
||||
boxesBookingService.update(boxesBookingEntity,boxesBookingEntityLambdaQueryWrapper);
|
||||
System.out.println(processNodeRecordParamDto);
|
||||
return R.ok();
|
||||
|
||||
|
||||
+19
-17
@@ -1,6 +1,9 @@
|
||||
package com.bsd.pjcloud.canteen.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.canteen.constant.CanteenFlowConstant;
|
||||
import com.bsd.pjcloud.canteen.dto.flow.BxMarkingFlowDto;
|
||||
import com.bsd.pjcloud.canteen.entity.BoxesBookingEntity;
|
||||
import com.bsd.pjcloud.canteen.entity.BoxesInfoEntity;
|
||||
import com.bsd.pjcloud.canteen.mapper.BoxesAvailabilityMapper;
|
||||
@@ -10,13 +13,17 @@ import com.bsd.pjcloud.canteen.service.BoxesBookingService;
|
||||
import com.bsd.pjcloud.canteen.vo.AppMakeSaveReqVO;
|
||||
import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.data.resolver.ParamResolver;
|
||||
import com.bsd.pjcloud.common.security.util.SecurityUtils;
|
||||
import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService;
|
||||
import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto;
|
||||
import com.bsd.pjcloud.flow.task.entity.Process;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.beans.beancontext.BeanContext;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 包厢预约记录表
|
||||
@@ -35,6 +42,8 @@ public class BoxesBookingServiceImpl extends ServiceImpl<BoxesBookingMapper, Box
|
||||
private final BoxesAvailabilityMapper bookingAvailabilityMapper;
|
||||
|
||||
private final RemoteFlowApiFlowService remoteFlowApiFlowService;
|
||||
|
||||
|
||||
@Override
|
||||
public R createBooking(AppMakeSaveReqVO createReqVO) {
|
||||
BoxesInfoEntity infoDO = boxesInfoMapper.selectById(createReqVO.getBoxesId());
|
||||
@@ -58,24 +67,17 @@ public class BoxesBookingServiceImpl extends ServiceImpl<BoxesBookingMapper, Box
|
||||
booking.setDeptId(infoDO.getDeptId());
|
||||
|
||||
|
||||
//todo 工作流部分,待定
|
||||
// Map<String, Object> objectObjectHashMap = new HashMap<>();
|
||||
// objectObjectHashMap.put("deptId", infoDO.getDeptId());
|
||||
// String processInstanceId = processInstanceApi.createProcessInstance(loginUserId,
|
||||
// new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY)
|
||||
// .setBusinessKey(String.valueOf(booking.getId()))
|
||||
// .setVariables(objectObjectHashMap));
|
||||
//
|
||||
//
|
||||
// // 将工作流的编号,更新到 OA 请假单中
|
||||
// BookingDO bookingDO = new BookingDO();
|
||||
// bookingDO.setId(booking.getId());
|
||||
// bookingDO.setProcessInstanceId(processInstanceId);
|
||||
|
||||
// bookingMapper.updateById(bookingDO);
|
||||
// 启动流程
|
||||
// 工作
|
||||
ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto();
|
||||
processInstanceParamDto.setFlowId("P20250205113641052EBCRV");
|
||||
R<Process> processByBusinessKey = remoteFlowApiFlowService.getProcessByBusinessKey(CanteenFlowConstant.bx_marking_flow);
|
||||
String flowId = processByBusinessKey.getData().getFlowId();
|
||||
processInstanceParamDto.setFlowId(flowId);
|
||||
|
||||
BxMarkingFlowDto bxMarkingFlowDto = new BxMarkingFlowDto();
|
||||
bxMarkingFlowDto.setBoxesName(infoDO.getName());
|
||||
bxMarkingFlowDto.setMarkTime(createReqVO.getBxDate() + " " + createReqVO.getStartTime() + "-" + createReqVO.getEndTime());
|
||||
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(bxMarkingFlowDto);
|
||||
processInstanceParamDto.setParamMap(stringObjectMap);
|
||||
R<String> stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto);
|
||||
booking.setCheckStatus("0");
|
||||
booking.setProcessInstanceId(stringR.getData());
|
||||
|
||||
+2
@@ -168,11 +168,13 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl<CanteenDailyMenuMap
|
||||
vo.setPrice(spuEntity.getPrice());
|
||||
vo.setPicUrl(spuEntity.getPicUrl());
|
||||
vo.setName(spuEntity.getName());
|
||||
vo.setSort(spuEntity.getSort());
|
||||
// 其他需要的字段
|
||||
}
|
||||
return vo;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
dailyMenuVOList.sort(Comparator.comparing(DailyMenuAppVO::getSort));
|
||||
pageData.setRecords(dailyMenuVOList);
|
||||
return pageData;
|
||||
}
|
||||
|
||||
+9
@@ -3,6 +3,7 @@ package com.bsd.pjcloud.flow.task.api.feign;
|
||||
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto;
|
||||
import com.bsd.pjcloud.flow.task.entity.Process;
|
||||
import com.bsd.pjcloud.flow.task.vo.FormGroupVo;
|
||||
import com.bsd.pjcloud.flow.task.vo.ProcessVO;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
@@ -47,4 +48,12 @@ public interface RemoteFlowApiFlowService {
|
||||
@PostMapping("/process-instance/startProcessInstance")
|
||||
R<String> startProcessInstance(@RequestBody ProcessInstanceParamDto paramDto);
|
||||
|
||||
|
||||
/**
|
||||
* 获取流程数据
|
||||
* @param businessKey 业务key
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/process/getProcessByBusinessKey")
|
||||
R<Process> getProcessByBusinessKey(@RequestParam("businessKey")String businessKey);
|
||||
}
|
||||
+6
@@ -2,6 +2,7 @@ package com.bsd.pjcloud.flow.task.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.bsd.pjcloud.common.core.util.TenantTable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -135,4 +136,9 @@ public class Process {
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
@Schema(description = "业务key")
|
||||
@TableField("business_key")
|
||||
private String businessKey;
|
||||
|
||||
}
|
||||
+2
@@ -27,6 +27,8 @@ public class CombinationGroupController {
|
||||
return combinationGroupService.listGroupWithProcess(page, groupId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询所有我可以发起的表单组
|
||||
* @return
|
||||
|
||||
+9
@@ -24,6 +24,15 @@ public class ProcessController {
|
||||
return processService.getDetail(flowId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流程数据
|
||||
* @param businessKey 业务key
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getProcessByBusinessKey")
|
||||
public R<Process> getProcessByBusinessKey(@RequestParam("businessKey")String businessKey) {
|
||||
return processService.getProcessByBusinessKey(businessKey);
|
||||
}
|
||||
/**
|
||||
* 创建流程
|
||||
* @param process
|
||||
|
||||
+7
@@ -43,4 +43,11 @@ public interface IProcessService extends IService<Process> {
|
||||
*/
|
||||
R update(String flowId, String type, Long groupId);
|
||||
|
||||
|
||||
/**
|
||||
* 根据业务key获取流程
|
||||
* @param businessKey
|
||||
* @return
|
||||
*/
|
||||
R<Process> getProcessByBusinessKey(String businessKey);
|
||||
}
|
||||
+8
@@ -224,6 +224,7 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
p.setUniqueId(IdUtil.fastSimpleUUID());
|
||||
p.setAdminList(process.getAdminList());
|
||||
p.setRangeShow(stringBuilder.toString());
|
||||
p.setBusinessKey(process.getBusinessKey());
|
||||
|
||||
this.save(p);
|
||||
|
||||
@@ -259,4 +260,11 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<Process> getProcessByBusinessKey(String businessKey) {
|
||||
Process one = this.lambdaQuery().eq(Process::getBusinessKey, businessKey).eq(Process::getHidden, false)
|
||||
.one();
|
||||
return R.ok(one);
|
||||
}
|
||||
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package com.bsd.pjcloud.supermarket.dto.inventoryrecords;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author zjf
|
||||
* @date 2025-02-11 17:11:41
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "盘点-item")
|
||||
public class PDItemUpdateDTO {
|
||||
|
||||
|
||||
/**
|
||||
* 库存商品id
|
||||
*/
|
||||
@Schema(description="库存商品id")
|
||||
private Long erpSpuId;
|
||||
|
||||
|
||||
@Schema(description="账面数量")
|
||||
private Double accountNumber;
|
||||
|
||||
@Schema(description="实际数量")
|
||||
private Double realNumber;
|
||||
|
||||
@Schema(description="账面单价")
|
||||
private Integer unitPrice;
|
||||
|
||||
|
||||
/**
|
||||
* 数据库意思就是实际单价,这里等价于盘点单价
|
||||
*/
|
||||
@Schema(description="盘点单价")
|
||||
private Integer realPrice;
|
||||
/**
|
||||
* 盘盈盘亏
|
||||
*/
|
||||
@Schema(description="盈")
|
||||
private Double profit;
|
||||
|
||||
/**
|
||||
* 盘盈盘亏
|
||||
*/
|
||||
@Schema(description="亏")
|
||||
private Double loss;
|
||||
|
||||
|
||||
|
||||
@Schema(description="盘后总数")
|
||||
private Integer totalNumber;
|
||||
|
||||
/**
|
||||
* 累计总金额
|
||||
*/
|
||||
@Schema(description="盘后总金额")
|
||||
private Integer totalAmount;
|
||||
|
||||
|
||||
/**
|
||||
* 1等于盘盈 2等于盘亏
|
||||
*/
|
||||
@Schema(description="订单类型,1入库,2出库")
|
||||
@NotNull
|
||||
private String orderType;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Schema(description="备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package com.bsd.pjcloud.supermarket.dto.inventoryrecords;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* 新增一个采购计划
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "盘点保存对象")
|
||||
public class PDUpdateDTO {
|
||||
|
||||
|
||||
@Schema(description="id")
|
||||
@NotNull
|
||||
private Long id;
|
||||
/**
|
||||
* 采编号
|
||||
*/
|
||||
@Schema(description="编号")
|
||||
private String inventoryCode;
|
||||
|
||||
/**
|
||||
* 采购计划单据日期
|
||||
*/
|
||||
@Schema(description="单据日期")
|
||||
private LocalDate inventoryDate;
|
||||
|
||||
/**
|
||||
* 仓库id
|
||||
*/
|
||||
@Schema(description="仓库id")
|
||||
private String warehouseId;
|
||||
|
||||
/**
|
||||
* 经办人id
|
||||
*/
|
||||
@Schema(description="经办人id")
|
||||
private Long handlerUserId;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Schema(description="备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @Link SmCgPlanSaveItemDTO
|
||||
*/
|
||||
@Schema(description="盘点-item")
|
||||
@NotNull
|
||||
private List<PDItemUpdateDTO> items;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+10
@@ -264,4 +264,14 @@ public class SmErpInventoryRecordsController {
|
||||
public R getPDById(@PathVariable("id" ) Long id) {
|
||||
return R.ok(smErpInventoryRecordsService.getPDDetailById(id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Operation(summary = "修改盘点" , description = "修改盘点" )
|
||||
@SysLog("修改盘点" )
|
||||
@PutMapping("/updatePD")
|
||||
@PreAuthorize("@pms.hasPermission('supermarket_smErpInventoryRecords_edit')" )
|
||||
public R updatePDById(@RequestBody PDUpdateDTO pdfUpdateDTO) {
|
||||
return R.ok(smErpInventoryRecordsService.updateIPD(pdfUpdateDTO));
|
||||
}
|
||||
}
|
||||
+9
-4
@@ -3,10 +3,7 @@ package com.bsd.pjcloud.supermarket.service;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryDetailQueryDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordEditDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.PDSaveDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.*;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpInventoryRecordsEntity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -93,4 +90,12 @@ public interface SmErpInventoryRecordsService extends IService<SmErpInventoryRec
|
||||
|
||||
|
||||
Object getPDDetailById(Long id);
|
||||
|
||||
|
||||
/**
|
||||
* 修改盘点
|
||||
* @param pdfUpdateDTO
|
||||
* @return
|
||||
*/
|
||||
Object updateIPD(PDUpdateDTO pdfUpdateDTO);
|
||||
}
|
||||
+128
-1
@@ -341,12 +341,51 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
SmErpInventoryRecordsEntity smErpInventoryRecordsEntity = BeanUtils.toBean(inventoryRecordEditDTO, SmErpInventoryRecordsEntity.class);
|
||||
int i = baseMapper.updateById(smErpInventoryRecordsEntity);
|
||||
List<InventoryRecordEditItemDTO> items = inventoryRecordEditDTO.getItems();
|
||||
List<SmErpInventoryRecordsItemEntity> smErpInventoryRecordsItemEntityList = BeanUtils.toBean(items, SmErpInventoryRecordsItemEntity.class);
|
||||
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
|
||||
List<SmErpInventoryRecordsItemEntity> smErpInventoryRecordsItemEntityList = new ArrayList<>();
|
||||
|
||||
for (InventoryRecordEditItemDTO item : items){
|
||||
SmErpInventoryRecordsItemEntity smErpInventoryRecordsItemEntity = new SmErpInventoryRecordsItemEntity();
|
||||
org.springframework.beans.BeanUtils.copyProperties(item,smErpInventoryRecordsItemEntity);
|
||||
//库存更新对象
|
||||
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
|
||||
updateStockDTO.setId(item.getErpSpuId());
|
||||
Double quantity = item.getQuantity();
|
||||
String orderType = item.getOrderType();
|
||||
smErpInventoryRecordsItemEntity.setOrderType(orderType);
|
||||
if (orderType.equals(OrderTypeEnum.RK.getType())){
|
||||
updateStockDTO.setIncrCount(quantity);
|
||||
}else if (orderType.equals(OrderTypeEnum.CK.getType())){
|
||||
updateStockDTO.setIncrCount(-quantity);
|
||||
}else {
|
||||
throw new RuntimeException("订单类型错误");
|
||||
}
|
||||
|
||||
smErpInventoryRecordsItemEntityList.add(smErpInventoryRecordsItemEntity);
|
||||
updateStockDTOS.add(updateStockDTO);
|
||||
|
||||
}
|
||||
|
||||
|
||||
List<SmErpInventoryRecordsItemEntity> insertItems = smErpInventoryRecordsItemEntityList.stream().
|
||||
filter(smErpInventoryRecordsItemEntity -> smErpInventoryRecordsItemEntity.getId() == null).collect(Collectors.toList());
|
||||
List<SmErpInventoryRecordsItemEntity> updateItems = smErpInventoryRecordsItemEntityList.stream().
|
||||
filter(smErpInventoryRecordsItemEntity -> smErpInventoryRecordsItemEntity.getId() != null).collect(Collectors.toList());
|
||||
|
||||
|
||||
//更新的话,查询之前保存了哪些item,然后去库存表删掉从新计算库存
|
||||
List<SmErpInventoryRecordsItemEntity> dataBaseSmErpInventoryRecordsItemEntityList = smErpInventoryRecordsItemMapper
|
||||
.selectList(new LambdaQueryWrapper<SmErpInventoryRecordsItemEntity>().eq(SmErpInventoryRecordsItemEntity::getInventoryId, inventoryRecordEditDTO.getId()));
|
||||
|
||||
//这部分是数据库原本添加的库存数据,需要全部减掉,重新添加更新的库存数据进去
|
||||
dataBaseSmErpInventoryRecordsItemEntityList.forEach(item -> {
|
||||
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
|
||||
updateStockDTO.setId(item.getErpSpuId());
|
||||
updateStockDTO.setIncrCount(-item.getQuantity());
|
||||
updateStockDTOS.add(updateStockDTO);
|
||||
});
|
||||
|
||||
|
||||
smErpInventoryRecordsItemMapper.updateById(updateItems);
|
||||
smErpInventoryRecordsItemMapper.insert(insertItems);
|
||||
|
||||
@@ -370,6 +409,9 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
if (!toDeleteCodeIds.isEmpty()) {
|
||||
smErpInventoryRecordsItemMapper.deleteByIds(toDeleteCodeIds);
|
||||
}
|
||||
//todo 实际上应该审批后才会入库
|
||||
//更新库存
|
||||
smErpStockService.updateStock(updateStockDTOS);
|
||||
|
||||
return i;
|
||||
}
|
||||
@@ -395,6 +437,7 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Object savePD(PDSaveDTO pdSaveDTO) {
|
||||
Long deptId = SecurityUtils.getUser().getDeptId();
|
||||
SmErpInventoryRecordsEntity smErpCgDdEntity = BeanUtils.toBean(pdSaveDTO, SmErpInventoryRecordsEntity.class);
|
||||
@@ -475,5 +518,89 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Object updateIPD(PDUpdateDTO pdfUpdateDTO) {
|
||||
SmErpInventoryRecordsEntity smErpInventoryRecordsEntity = BeanUtils.toBean(pdfUpdateDTO, SmErpInventoryRecordsEntity.class);
|
||||
int i = baseMapper.updateById(smErpInventoryRecordsEntity);
|
||||
List<PDItemUpdateDTO> items = pdfUpdateDTO.getItems();
|
||||
|
||||
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
|
||||
List<SmErpInventoryRecordsItemEntity> smErpInventoryRecordsItemEntityList = new ArrayList<>();
|
||||
for (PDItemUpdateDTO item : items){
|
||||
//库存更新对象
|
||||
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
|
||||
updateStockDTO.setId(item.getErpSpuId());
|
||||
//出入库对象
|
||||
SmErpInventoryRecordsItemEntity smErpInventoryRecordsItemEntity = new SmErpInventoryRecordsItemEntity();
|
||||
org.springframework.beans.BeanUtils.copyProperties(item,smErpInventoryRecordsItemEntity);
|
||||
String orderType = item.getOrderType();
|
||||
smErpInventoryRecordsItemEntity.setOrderType(orderType);
|
||||
if (orderType.equals(OrderTypeEnum.RK.getType())){
|
||||
Double profit = item.getProfit();
|
||||
updateStockDTO.setIncrCount(profit);
|
||||
smErpInventoryRecordsItemEntity.setQuantity(profit);
|
||||
}else if (orderType.equals(OrderTypeEnum.CK.getType())){
|
||||
Double loss = item.getLoss();
|
||||
updateStockDTO.setIncrCount(loss);
|
||||
smErpInventoryRecordsItemEntity.setQuantity(loss);
|
||||
}else {
|
||||
throw new RuntimeException("订单类型错误");
|
||||
}
|
||||
|
||||
smErpInventoryRecordsItemEntityList.add(smErpInventoryRecordsItemEntity);
|
||||
updateStockDTOS.add(updateStockDTO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
List<SmErpInventoryRecordsItemEntity> insertItems = smErpInventoryRecordsItemEntityList.stream().
|
||||
filter(smErpInventoryRecordsItemEntity -> smErpInventoryRecordsItemEntity.getId() == null).collect(Collectors.toList());
|
||||
List<SmErpInventoryRecordsItemEntity> updateItems = smErpInventoryRecordsItemEntityList.stream().
|
||||
filter(smErpInventoryRecordsItemEntity -> smErpInventoryRecordsItemEntity.getId() != null).collect(Collectors.toList());
|
||||
|
||||
//更新的话,查询之前保存了哪些item,然后减去之前出入的库存。从新计算库存
|
||||
List<SmErpInventoryRecordsItemEntity> dataBaseSmErpInventoryRecordsItemEntityList = smErpInventoryRecordsItemMapper
|
||||
.selectList(new LambdaQueryWrapper<SmErpInventoryRecordsItemEntity>().eq(SmErpInventoryRecordsItemEntity::getInventoryId, pdfUpdateDTO.getId()));
|
||||
|
||||
//这部分是数据库原本添加的库存数据,需要全部减掉,重新添加更新的库存数据进去
|
||||
dataBaseSmErpInventoryRecordsItemEntityList.forEach(item -> {
|
||||
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
|
||||
updateStockDTO.setId(item.getErpSpuId());
|
||||
updateStockDTO.setIncrCount(-item.getQuantity());
|
||||
updateStockDTOS.add(updateStockDTO);
|
||||
});
|
||||
|
||||
smErpInventoryRecordsItemMapper.updateById(updateItems);
|
||||
smErpInventoryRecordsItemMapper.insert(insertItems);
|
||||
|
||||
List<Long> existingCodeIds = smErpInventoryRecordsItemMapper.selectList(
|
||||
new LambdaQueryWrapper<SmErpInventoryRecordsItemEntity>()
|
||||
.eq(SmErpInventoryRecordsItemEntity::getInventoryId, smErpInventoryRecordsEntity.getId())
|
||||
).stream().map(SmErpInventoryRecordsItemEntity::getId).collect(Collectors.toList());
|
||||
|
||||
// 收集本次提交的ID(排除新增的)
|
||||
List<Long> submittedCodeIds = updateItems.stream()
|
||||
.map(SmErpInventoryRecordsItemEntity::getId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 计算需要删除的ID
|
||||
List<Long> toDeleteCodeIds = existingCodeIds.stream()
|
||||
.filter(id -> !submittedCodeIds.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 批量删除失效条码
|
||||
if (!toDeleteCodeIds.isEmpty()) {
|
||||
smErpInventoryRecordsItemMapper.deleteByIds(toDeleteCodeIds);
|
||||
}
|
||||
|
||||
//todo 实际上应该审批后才会入库
|
||||
//更新库存
|
||||
smErpStockService.updateStock(updateStockDTOS);
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+6
@@ -96,6 +96,12 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
|
||||
@Override
|
||||
@Transactional
|
||||
public R saveSpu(SmErpSpuEntity supermarketSpu) {
|
||||
|
||||
//查询货号是否存在
|
||||
if (baseMapper.selectOne(new LambdaQueryWrapper<SmErpSpuEntity>().eq(SmErpSpuEntity::getProductCode, supermarketSpu.getProductCode())) != null) {
|
||||
return R.failed("货号为" + supermarketSpu.getProductCode() + "的货号已存在");
|
||||
}
|
||||
|
||||
baseMapper.insert(supermarketSpu);
|
||||
|
||||
//库存表
|
||||
|
||||
Reference in new issue
Block a user