Commit f6e41acb by 李小惠

修改报废业务单逻辑

parent 4b0c70d3
......@@ -8,6 +8,7 @@ import lombok.Getter;
public enum InventoryExceptionEnum implements IExceptionEnum {
INVENTORY_NOT_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"装备信息不存在"),
INVENTORY_BEYOND_STOCK(CommonConstant.DEFAULT_USER_ERROR_CODE,"填写的报废的装备数量大于实际能进行报废的数量"),
BROKENNUM_BEYOND_STOCK(CommonConstant.DEFAULT_USER_ERROR_CODE,"审核中的数量已存在最大可报废数量,现提交失败"),
;
/**
* 错误编码
......
......@@ -46,7 +46,7 @@ public class TestController {
// return ApiRes.success(testService.test(req));
// }
//消息队列中是否有消费者
@PostMapping("/hasConsumers")
public ApiRes<Boolean> hasConsumers(@RequestBody TestReq req){
Long execute = rabbitAdmin.getRabbitTemplate().execute(channel -> channel.consumerCount(req.getQueueName()));
......
......@@ -193,6 +193,11 @@ public class InventorySummary implements Serializable {
@TableField("threshold")
private Integer threshold;
/**
* 审核中的报废数量(仅移入报废区的业务单使用)
*/
@TableField(value = "agent_broken_num")
private Integer agentBrokenNum;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -20,7 +20,7 @@ public class LogSummary implements Serializable {
/**
* 出入库汇总ID
*/
@TableId(type = IdType.AUTO)
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
......
......@@ -76,7 +76,6 @@ public class CounterSignListener implements ExecutionListener {
@Override
public void notify(DelegateExecution execution) {
String currentActivityId = execution.getCurrentActivityId();
Process mainProcess = repositoryService.getBpmnModel(execution.getProcessDefinitionId()).getMainProcess();
UserTask userTask = (UserTask) mainProcess.getFlowElement(currentActivityId);
String flowJson = mainProcess.getAttributeValue("http://flowable.org/bpmn", "Junmp");
......
......@@ -88,10 +88,6 @@ import java.util.stream.Collectors;
// 获取流程定义ID
String processDefinitionId = event.getProcessDefinitionId();
List<HistoricVariableInstance> orderType = historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).variableName("orderType").list();
List<HistoricVariableInstance> bussinessType = historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).variableName("bussinessType").list();
for (HistoricVariableInstance a:bussinessType) {
System.out.println("a = " + a);
}
if(orderType.size()>0) {
......@@ -147,6 +143,11 @@ import java.util.stream.Collectors;
}
}
if (event.getType() == FlowableEngineEventType.PROCESS_COMPLETED_WITH_TERMINATE_END_EVENT){
System.out.println("event.getType() = " + event.getType());
}
if (event.getType()== FlowableEngineEventType.PROCESS_COMPLETED_WITH_ESCALATION_END_EVENT)
System.out.println("event = " + event);
}
// 获取流程实例关联的变量
......
......@@ -19,7 +19,7 @@ public class OutInLogsReceiver {
@Resource
private LogSummaryService logSummaryService;
@RabbitListener(queues = "orderResult")//监听队列名
@RabbitListener(queues = "2222")//监听队列名
private void a(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag){
try {
......
......@@ -20,8 +20,10 @@ import com.junmp.jyzb.api.bean.query.QueryBusFormReq;
import com.junmp.jyzb.api.bean.query.QueryEquipmentTypeReq;
import com.junmp.jyzb.api.bean.req.GeneratePurchaseQuicklyReq;
import com.junmp.jyzb.api.bean.req.UpdateBusFormReq;
import com.junmp.jyzb.api.exception.JYZBAppException;
import com.junmp.jyzb.api.exception.enums.InventoryExceptionEnum;
import com.junmp.jyzb.api.exception.enums.OrderExceptionEnum;
import com.junmp.jyzb.api.exception.enums.OrgExceptionEnum;
import com.junmp.jyzb.entity.*;
import com.junmp.jyzb.mapper.InventorySummaryMapper;
import com.junmp.jyzb.service.*;
......@@ -92,6 +94,11 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
*/
@Override
public String AddBussinessOrder(UpdateBusFormReq req) {
//判断inventorySummary表中是否有这个装备的已在审核中的数量,如果数量为null或者为0,则表示可以进行审批
if (req.getBussinessType().equals("remove")){
Boolean aBoolean = addOrRevokeAgentBrokenNum(req,true);
}
//判断是否有工作流id,如果有则将状态进行修改
if (ObjectUtil.isEmpty(req.getProcessDefinitionId()))
{
......@@ -143,24 +150,26 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
startProcessInstanceDTO.setOrderType("bussinessOrder");
startProcessInstanceDTO.setUserId(req.getApplyUserId());
//发物单位和收物单位
if (req.getBussinessType().equals("use")){
startProcessInstanceDTO.setStartOrgName(req.getOrgName());
} else if (req.getBussinessType().equals("purchase")) {
startProcessInstanceDTO.setStartOrgName(req.getSupplierName());
startProcessInstanceDTO.setEndOrgName(req.getOrgName());
} else if (req.getBussinessType().equals("allocate")) {
startProcessInstanceDTO.setStartOrgName(req.getStartOrgName());
startProcessInstanceDTO.setEndOrgName(req.getEndOrgName());
} else if (req.getBussinessType().equals("repair")) {
startProcessInstanceDTO.setStartOrgName(req.getOrgName());
startProcessInstanceDTO.setEndOrgName(req.getSupplierName());
}
else if (req.getBussinessType().equals("remove")) {
startProcessInstanceDTO.setStartOrgName(req.getOrgName());
}
else if (req.getBussinessType().equals("destruction")) {
startProcessInstanceDTO.setStartOrgName(req.getOrgName());
startProcessInstanceDTO.setEndOrgName(req.getSupplierName());
switch (req.getBussinessType()){
case "use":
startProcessInstanceDTO.setStartOrgName(req.getOrgName());
break;
case "purchase":
startProcessInstanceDTO.setStartOrgName(req.getSupplierName());
startProcessInstanceDTO.setEndOrgName(req.getOrgName());
break;
case "allocate":
startProcessInstanceDTO.setStartOrgName(req.getStartOrgName());
startProcessInstanceDTO.setEndOrgName(req.getEndOrgName());
break;
case "repair":
case "destruction":
startProcessInstanceDTO.setStartOrgName(req.getOrgName());
startProcessInstanceDTO.setEndOrgName(req.getSupplierName());
break;
case "remove":
startProcessInstanceDTO.setStartOrgName(req.getOrgName());
break;
}
//装备列表
startProcessInstanceDTO.setInvList(req.getInvList());
......@@ -207,6 +216,51 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
return busForm.getId();
}
//在提交审核或者保存草稿的时候判断申请报废数+审核中数量+报废区数量是否等于在库数,如果大于则报错
//flag表示一个标识,如果是提交业务单那么flag=true,如果是审核拒绝,那么flag就为false
private Boolean addOrRevokeAgentBrokenNum(UpdateBusFormReq req,boolean flag){
List<BussinessOrderDetialReq> list = JSON.parseArray(req.getDetailList(), BussinessOrderDetialReq.class);
List<Object[]> searchItem=new ArrayList<>();
for (BussinessOrderDetialReq detialReq:list) {
//我先去数据库查询summary表中的数据
Object[] item=new Object[]{req.getOrgId(),detialReq.getLocationId(),detialReq.getTypeId(),detialReq.getSizeId(),detialReq.getPrice()};
searchItem.add(item);
}
List<InventorySummary> inventorySummaryList = inventorySummaryMapper.selectSumByItems(searchItem);
String msg="";
for (BussinessOrderDetialReq detialReq:list) {
for (InventorySummary is:inventorySummaryList) {
if (ObjectUtil.isNull(is.getAgentBrokenNum())){
is.setAgentBrokenNum(0);
}
if (detialReq.getLocationId().equals(is.getLocationId()) && detialReq.getTypeId().equals(is.getTypeId())
&& detialReq.getSizeId().equals(is.getSizeId()) && detialReq.getPrice().compareTo(is.getUnitPrice())==0){
if (flag){
//判断审核中的数量是否为0,如果为0 ,那么直接进行添加,如果不为0,则需要判断审核中的数量加申请报废的数量是否超过可以报废的数量
//如果超过那么则直接进行报错提醒
if (detialReq.getPlanNum()+is.getAgentBrokenNum()<=is.getStockNumber()){
//将库存的审核中的报废数量根据单据重新进行计算
is.setAgentBrokenNum(is.getAgentBrokenNum()+detialReq.getPlanNum());
}else {
msg=msg+"装备:" +detialReq.getTypeName()+"号型:"+detialReq.getSizeName()+"已存在审核最大可报废数量;";
}
}else {
//直接将在审核中的数量修改为审核之前的状态
is.setAgentBrokenNum(is.getAgentBrokenNum()-detialReq.getPlanNum());
}
}
break;
}
}
if (!msg.trim().isEmpty()){
throw new JYZBAppException(OrgExceptionEnum.ORG_NOT_EXIST, msg);
}
return inventorySummaryService.updateBatchById(inventorySummaryList);
}
/**
......@@ -322,6 +376,7 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
// return returnList;
// }
//更新报废数(inventorySummary,审核通过之后更新)
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateBrokenResult(BusForm busForm) {
......
......@@ -162,6 +162,10 @@ public class LogSummaryServiceImpl extends ServiceImpl<LogSummaryMapper, LogSumm
//出入库list
List<LogDetail> collect = new ArrayList<>();
LogSummary logSummary = saveLogSummary(logreq);
//设置logsummary的id
// UUID uuid = UUID.randomUUID();
// long uuidAsLong = uuid.getMostSignificantBits() ^ uuid.getLeastSignificantBits();
// logSummary.setId(uuidAsLong);
logSummaryService.save(logSummary);
Map<String, String> map = setState(logreq.getOutInState(), logreq.getBussinessType());
//无单据的时候
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论