Commit 4b0c70d3 by 李小惠

修改出入库接口,修改本地主机上报接口业务逻辑代码

parent cb06d496
......@@ -194,5 +194,12 @@ public class BusFormDto {
* 维保期
*/
private Integer maintenancePeriod;
/**
* 单据当前状态(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
*/
private String orderCurrentState;
/**
* 单据上次状态(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
*/
private String orderLastState;
}
......@@ -61,4 +61,6 @@ public class OrderDetailDto implements Serializable {
* 维保期
*/
private Integer maintenancePeriod;
private String remark;
}
package com.junmp.jyzb.api.bean.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
......@@ -23,6 +24,11 @@ public class OrderDto implements Serializable {
*/
private String bussinessType;
/**
* 业务单据编号
*/
private String bussinessCode;
/**
* 订单号
*/
private String orderCode;
......@@ -37,6 +43,7 @@ public class OrderDto implements Serializable {
/**
* 供应商名称
*/
private String supplierId;
private String supplierName;
/**
* 收物单位
......@@ -75,10 +82,7 @@ public class OrderDto implements Serializable {
*/
private String invList;
/**
* 生产厂商
*/
private String manufacturerName;
/**
* 明细列表
*/
......@@ -89,8 +93,6 @@ public class OrderDto implements Serializable {
private String createUser;
private String allocateType;
private String repairName;
private String destoryName;
/**
* 附件地址
......@@ -103,4 +105,24 @@ public class OrderDto implements Serializable {
private String returnUser;
/**
* 移入仓库id
*/
private String locationId;
/**
* 移入仓库名称
*/
private String locationName;
/**
* 移入仓库id
*/
private String removeLocationId;
/**
* 移入仓库名称
*/
private String removeLocationName;
private String note;
}
package com.junmp.jyzb.api.bean.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
......@@ -36,7 +37,7 @@ public class OrderMainDto implements Serializable {
//收物单位
private String endOrgName;
private String supplierId;
//供应商名称
private String supplierName;
......@@ -72,10 +73,7 @@ public class OrderMainDto implements Serializable {
*/
private Integer manualState;
/**
* 生产厂商id
*/
private String manufacturerId;
/**
* 调拨类型(2支拨,1价拨),调拨出入库才有
......@@ -97,5 +95,23 @@ public class OrderMainDto implements Serializable {
*/
private String createUser;
/**
* 移入仓库id
*/
private String locationId;
/**
* 移入仓库名称
*/
private String locationName;
/**
* 移入仓库id
*/
private String removeLocationId;
/**
* 移入仓库名称
*/
private String removeLocationName;
}
......@@ -5,12 +5,21 @@ import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 主单据实体类
*/
@Data
public class OrderReq {
private String id;
private BigDecimal price;
private Integer actualQuantity;
private Integer orderState;
private String orderState;
//组织机构id
private Long orgId;
//组织机构名称
private String orgName;
//业务类型
private String bussinessType;
private List<DetailOrderReq> orderDetail;
private List<PurchaseEqsReq> purchaseList;
}
......@@ -4,26 +4,19 @@ import lombok.Data;
import java.util.List;
/**
* 总的出入记录上报实体类对象
*/
@Data
public class OutInLogsReq {
//组织机构id
private Long orgId;
//组织机构名称
private String orgName;
//设备标识
private String device;
//出入设备
private Integer deviceType;
//业务类型
private String bussinessType;
//出入状态
private String outInState;
//所属位置(0仓库1单警柜)
private Integer locationType;
private OrderReq orderMain;
private List<SummaryLogReq> logSummaryList;
/**
* 主单据对象
*/
private OrderReq order;
/**
* 出入库记录对象
*/
private List<SummaryLogReq> logList;
}
......@@ -15,9 +15,13 @@ public class PurchaseEqsReq {
private Date productionDate;
private Integer warranyPeriod;
private Integer maintenancePeriod;
//仓库id和仓库name
private String locationId;
private String locationName;
private String supplierId;
private String supplierName;
//装备类型0单件,1装备包
private Integer equipmentType;
private BigDecimal price;
}
......@@ -11,10 +11,25 @@ public class SummaryLogReq {
private String orderCode;
private String locationId;
private String locationName;
//组织机构id
private Long orgId;
//组织机构名称
private String orgName;
private String userName;
private Date useTime;
private String picture;
private String equipmentList;
private Integer number;
//业务类型
private String bussinessType;
//设备标识
private String device;
//出入设备
private Integer deviceType;
//出入状态
private String outInState;
//所属位置(0仓库1单警柜)
private Integer locationType;
private List<DetailLogReq> logDetailList;
}
......@@ -72,5 +72,5 @@ public class OrderDetailReq extends BaseRequest {
* 维保期
*/
private Integer maintenancePeriod;
private String remark;
}
package com.junmp.jyzb.api.bean.query;
import com.baomidou.mybatisplus.annotation.TableField;
import com.junmp.v2.common.bean.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -35,6 +36,7 @@ public class OrderMainReq extends BaseRequest {
private Long endOrgId;
private String endOrgName;
private String supplierId;
/**
* 供应商名称
*/
......@@ -65,6 +67,7 @@ public class OrderMainReq extends BaseRequest {
private String attachmentLocation;
private String invList;
private String typeName;
/**
* 创建时间
......@@ -91,10 +94,7 @@ public class OrderMainReq extends BaseRequest {
//排序规则
private String order;
/**
* 生产厂商id
*/
private String manufacturerName;
/**
* 调拨类型(2支拨,1价拨),调拨出入库才有
......@@ -106,6 +106,24 @@ public class OrderMainReq extends BaseRequest {
*/
private String returnUserId;
/**
* 移入仓库id
*/
private String locationId;
/**
* 移入仓库名称
*/
private String locationName;
/**
* 移入仓库id
*/
private String removeLocationId;
/**
* 移入仓库名称
*/
private String removeLocationName;
private List<OrderDetailReq> detailList;
}
......@@ -13,10 +13,10 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true)
public class PolicemanReq extends BaseRequest {
@NotBlank(message = "警员主键不能为空", groups = {add.class,edit.class, delete.class, detail.class})
@NotBlank(message = "警员主键不能为空", groups = {add.class, detail.class})
private String id;
@NotBlank(message = "姓名不能为空", groups = {add.class})
@NotBlank(message = "姓名不能为空")
private String name;
private String cabinetId;
......@@ -30,7 +30,7 @@ public class PolicemanReq extends BaseRequest {
private String policeCode;
@NotBlank(message = "性别不能为空", groups = {add.class})
@NotBlank(message = "性别不能为空")
private String sex;
private String faceInfo;
......@@ -43,16 +43,16 @@ public class PolicemanReq extends BaseRequest {
private String doorCode;
//账号
@NotBlank(message = "账号不能为空", groups = {add.class})
@NotBlank(message = "账号不能为空")
private String account;
//密码
@NotBlank(message = "密码不能为空", groups = {add.class})
@NotBlank(message = "密码不能为空")
private String password;
private String photo;
@NotBlank(message = "电话不能为空", groups = {add.class})
@NotBlank(message = "电话不能为空")
private String phone;
private Date createTime;
......
package com.junmp.jyzb.api.bean.query;
import com.baomidou.mybatisplus.annotation.TableField;
import com.junmp.v2.common.bean.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -211,4 +212,13 @@ public class QueryBusFormReq extends BaseRequest {
//是否创建空数据,true则创建,false则不创建
private Boolean isCreateNullDate;
/**
* 单据当前状态(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
*/
private String orderCurrentState;
/**
* 单据上次状态(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
*/
private String orderLastState;
}
......@@ -185,5 +185,14 @@ public class UpdateBusFormReq extends BaseRequest {
*/
private String invList;
/**
* 单据当前状态(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
*/
private String orderCurrentState;
/**
* 单据上次状态(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
*/
private String orderLastState;
}
......@@ -79,4 +79,6 @@ public class UpdateOrderDetailReq implements Serializable {
*/
private Integer maintenancePeriod;
private String remark;
}
package com.junmp.jyzb.api.bean.req;
import com.baomidou.mybatisplus.annotation.TableField;
import com.junmp.jyzb.api.bean.Validator.IsNumber;
import com.junmp.v2.common.bean.request.BaseRequest;
import lombok.Data;
......@@ -131,10 +132,6 @@ public class UpdateOrderReq extends BaseRequest implements Serializable {
*/
private List<UpdateOrderDetailReq> detailList;
/**
* 生产厂商
*/
private String manufacturerName;
/**
* 调拨类型(2支拨,1价拨),调拨出入库才有
......@@ -155,6 +152,24 @@ public class UpdateOrderReq extends BaseRequest implements Serializable {
//备注
private String note;
/**
* 移入仓库id
*/
private String locationId;
/**
* 移入仓库名称
*/
private String locationName;
/**
* 移入仓库id
*/
private String removeLocationId;
/**
* 移入仓库名称
*/
private String removeLocationName;
//消息类型()
private String api;
}
......@@ -265,4 +265,9 @@ public class InventoryController {
return ApiRes.success(inventorySummaryService.selectTotalNum(req));
}
@PostMapping("/selectSumByItems")
public ApiRes<List<InventorySummary>> selectSumByItems(@RequestBody SelectTotalNumReq req){
return ApiRes.success(inventorySummaryService.selectSumByItems(req));
}
}
......@@ -69,9 +69,9 @@ public class OutAndInboundController {
return ApiRes.success(logDetailService.getInOutRecords(req));
}
@PostMapping("/OutInRecords")
public ApiRes<Boolean> OutInRecords(@RequestBody OutInLogsReq req){
return ApiRes.success(logSummaryService.processInventoryRecords(req));
}
// @PostMapping("/OutInRecords")
// public ApiRes<Boolean> OutInRecords(@RequestBody OutInLogsReq req){
// return ApiRes.success(logSummaryService.processInventoryRecords(req));
// }
}
......@@ -186,7 +186,7 @@ public class PoliceController {
*/
@PostMapping("/PoliceBindBox")
@ApiOperation("人员绑定箱门")
public ApiRes<Boolean> PoliceBindBox(@RequestBody PolicemanReq req){
public ApiRes<Boolean> PoliceBindBox(@RequestBody @Validated(ValidationApi.add.class) PolicemanReq req){
return ApiRes.success(policemanService.PoliceBindBox(req));
}
......
......@@ -225,10 +225,15 @@ public class BusForm implements Serializable {
private String currentAssign;
/**
* 单据使用次数(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
* 单据当前状态(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
*/
@TableField(value = "use_count")
private String useCount;
@TableField(value = "order_current_state")
private String orderCurrentState;
/**
* 单据上次状态(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
*/
@TableField(value = "order_last_state")
private String orderLastState;
private static final long serialVersionUID = 1L;
......
package com.junmp.jyzb.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
......@@ -16,7 +18,7 @@ public class CabinetBoxPolice implements Serializable {
/**
*
*/
@TableField(value = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
......
......@@ -25,8 +25,8 @@ public class EquipmentSize implements Serializable {
* 装备号型ID
*/
@ApiModelProperty(value = "装备号型ID")
@TableField("id")
@Id
@TableId(value = "id",type = IdType.ASSIGN_UUID)
private String id;
/**
......
......@@ -20,8 +20,10 @@ public class InventorySummary implements Serializable {
* 装备汇总id
*/
@ApiModelProperty(value = "装备汇总id")
private String id;
@TableId(type = IdType.AUTO)
private Long id;
private String valuekey;
/**
* 组织机构id
*/
......
package com.junmp.jyzb.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
......@@ -18,7 +19,7 @@ public class LogDetail implements Serializable {
/**
* 出入库明细ID
*/
@TableId(type = IdType.AUTO)
private Long detailId;
/**
* 出入库汇总id
......
......@@ -20,6 +20,7 @@ public class LogSummary implements Serializable {
/**
* 出入库汇总ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
......
package com.junmp.jyzb.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -17,7 +15,7 @@ import java.util.Date;
@NoArgsConstructor
@TableName("bussiness_order_detail")
public class OrderDetail implements Serializable {
@TableField("id")
@TableId(type = IdType.AUTO)
private Long id;
@TableField("order_id")
......@@ -105,4 +103,7 @@ import java.util.Date;
*/
@TableField("maintenance_period")
private Integer maintenancePeriod;
@TableField("remark")
private String remark;
}
......@@ -14,7 +14,7 @@ import java.util.Date;
@NoArgsConstructor
@TableName("bussiness_order_main")
public class OrderMain implements Serializable {
@TableId(value = "id",type = IdType.ASSIGN_UUID)
private String id;
@TableField("order_type")
......@@ -44,6 +44,8 @@ public class OrderMain implements Serializable {
@TableField("end_org_name")
private String endOrgName;
@TableField("supplier_id")
private String supplierId;
@TableField("supplier_name")
private String supplierName;
......@@ -89,8 +91,7 @@ public class OrderMain implements Serializable {
@TableField("current_assign")
private String currentAssign;
@TableField("return_date")
private Date returnDate;
@TableField("use_date")
private Date useDate;
......@@ -116,11 +117,6 @@ public class OrderMain implements Serializable {
@TableField("update_user")
private String updateUser;
/**
* 生产厂商id
*/
@TableField("manufacturer_name")
private String manufacturerName;
/**
* 调拨类型(2支拨,1价拨)
......@@ -133,16 +129,33 @@ public class OrderMain implements Serializable {
@TableField("return_user_id")
private String returnUserId;
@TableField("repair_name")
private String repairName;
@TableField("destory_name")
private String destoryName;
@TableField("return_user")
private String returnUser;
@TableField("return_date")
private Date returnDate;
/**
* 移入仓库id
*/
@TableField("location_id")
private String locationId;
/**
* 移入仓库名称
*/
@TableField("location_name")
private String locationName;
/**
* 移入仓库id
*/
@TableField("remove_location_id")
private String removeLocationId;
/**
* 移入仓库名称
*/
@TableField("remove_location_name")
private String removeLocationName;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -24,7 +24,7 @@ import java.util.Date;
@TableName("vie_price_sum_summary")
public class PriceSumSummary implements Serializable {
@TableId(value = "id")
@TableId(value = "id",type = IdType.ASSIGN_UUID)
private String id;
/**
......
package com.junmp.jyzb.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
......@@ -23,7 +24,7 @@ public class Reassignment implements Serializable {
/**
* id
*/
@TableId(value = "id",type = IdType.ASSIGN_UUID)
private String id;
/**
......
......@@ -28,6 +28,8 @@ import com.junmp.v2.message.api.bean.req.MessageSendReq;
import com.junmp.v2.sys.api.UserServiceApi;
import com.junmp.v2.sys.api.bean.user.dto.RoleUserDto;
import com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo;
import com.junmp.v2.sys.user.entity.SysUserOrg;
import com.junmp.v2.sys.user.service.SysUserOrgService;
import com.junmp.v2.sys.user.service.SysUserService;
import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.UserTask;
......@@ -68,6 +70,9 @@ public class CounterSignListener implements ExecutionListener {
private OrgUserMapper orgUserMapper;
@Resource
private ReassignmentService reassignmentService;
@Resource
private SysUserOrgService sysUserOrgService;
@Override
public void notify(DelegateExecution execution) {
String currentActivityId = execution.getCurrentActivityId();
......@@ -91,7 +96,8 @@ public class CounterSignListener implements ExecutionListener {
}
ApproverGroups group=currentNode.getApproverGroups().get(0);
String Type=group.getApproverType();
if (Type.equals("1")||Type.equals("8"))//指定人员,不处理
// if (Type.equals("1")||Type.equals("8"))//指定人员,不处理
if (Type.equals("8"))//指定人员,不处理
{
List<String> assignedUser = group.getApproverIds();
......@@ -175,19 +181,56 @@ public class CounterSignListener implements ExecutionListener {
{
LoginUser StartUser= LoginContext.getContext().getLoginUser();
List<UserListDTO> userList= orgUserMapper.QueryUserWithParentOrg(StartUser.getUserId().toString());
List<String> Roles=group.getApproverIds();
String roleList="";
if (Roles.size()>0) { //角色不为空
//开始拼接传入的多角色
roleList = "(";
for (String role : Roles) {
roleList += role + ",";
}
roleList = roleList.substring(0, roleList.length() - 1);
roleList += ")";//至此拼接完成
}else {
throw new WorkFlowException("审核流配置不正确,无指定的组织机构!");
}
if (userList.size()<=0)//没有上级则本身已是上级
{
assigneeList.add(StartUser.getUserId().toString());
//那么我就直接照同级下的满足角色的userId
List<UserListDTO> userList1 = orgUserMapper.QueryUserByRoleId(roleList, StartUser.getUserId().toString());
for (UserListDTO userId : userList1) {
assigneeList.add(userId.getUserID());
}
}
else//
else//表示他不是最上级的组织机构,还需要进行判断
{
for (UserListDTO userId :userList)
{
assigneeList.add("1");
// assigneeList.add(userId.getUserID());
//判断当前登录人是否在上级的userIdlist中,如果存在,则表示下一个节点的也是当前登录人所在组织机构下的userID中
boolean flag=false;
for (UserListDTO currentUser :userList) {
if (currentUser.getUserID().equals(StartUser.getUserId().toString())){
flag=true;
}
}
//如果未找到则表示下一个节点是上级组织机构下的某个角色的userId
if (!flag){
List<UserListDTO> userList1=orgUserMapper.QueryUserByRoleId(roleList, userList.get(0).getUserID());
for (UserListDTO userId :userList1)
{
assigneeList.add(userId.getUserID());
}
}
else{//下一个节点的审核人和当前灯枯人是同一个组织机构
List<UserListDTO> userList1=orgUserMapper.QueryUserByRoleId(roleList, StartUser.getUserId().toString());
for (UserListDTO userId :userList1)
{
assigneeList.add(userId.getUserID());
}
}
}
......
package com.junmp.jyzb.rabbitmq;
import com.alibaba.fastjson.JSON;
import com.junmp.jyzb.api.bean.query.InAndOutRecordReq.OutInLogsReq;
import com.junmp.jyzb.service.LogSummaryService;
import com.junmp.jyzb.service.OrderMainService;
......@@ -18,11 +19,13 @@ public class OutInLogsReceiver {
@Resource
private LogSummaryService logSummaryService;
@RabbitListener(queues = "11111")//监听队列名
private void a(OutInLogsReq req, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag){
@RabbitListener(queues = "orderResult")//监听队列名
private void a(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag){
try {
System.out.println("req = " + req);
System.out.println("msg = " + msg);
OutInLogsReq req = JSON.parseObject(msg, OutInLogsReq.class);
//将消息进行消费
Boolean result = logSummaryService.processInventoryRecords(req);
if (result){
......
......@@ -42,7 +42,7 @@ public interface InventorySummaryService extends IService<InventorySummary> {
List<InventorySummary> EquipmentStatistics(InventorySumReq req);
//出入库时无单据查询库存汇总并统计更新或者记账时根据单据查询库存汇总并统计更新
List<InventorySummary> selectSumByItems(List<Object[]> searchCriteria);
List<InventorySummary> selectSumByItems(SelectTotalNumReq req);
boolean insertToSummary();
......
......@@ -108,7 +108,8 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
BusForm busForm = new BusForm();
BeanUtil.copyProperties(req,busForm);
//设置业务单的使用次数(默认是出库一次,入库一次)
busForm.setUseCount("bothUsing");
busForm.setOrderCurrentState("bothuseing");
busForm.setOrderLastState("bothuseing");
if (ObjectUtil.isNull(req.getId())){
String id= UUID.randomUUID().toString();
busForm.setId(id);
......@@ -465,6 +466,19 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
}
eq.eq(ObjectUtil.isNotNull(req.getAllocateType()) && !req.getAllocateType().isEmpty(),BusForm::getAllocateType,req.getAllocateType());
}
//当前单子状态
if (ObjectUtil.isNotNull(req.getOrderCurrentState())){
List<String> orderCurrentStateList=new ArrayList<>();
if (req.getOrderCurrentState().equals("incoming")){
orderCurrentStateList.add("incoming");
orderCurrentStateList.add("bothuseing");
eq.in( BusForm::getOrderCurrentState,orderCurrentStateList);
}else if (req.getOrderCurrentState().equals("outgoing")){
orderCurrentStateList.add("outgoing");
orderCurrentStateList.add("bothuseing");
eq.in( BusForm::getOrderCurrentState,orderCurrentStateList);
}
}
return eq;
}
......
......@@ -283,7 +283,7 @@ public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, E
ElasticsearchUtil es=new ElasticsearchUtil<>(client);
// 先从ES中拿到检索数据
List<EquipmentType> searchResults = es.searchEntities("type_pinyin","name",0, 50, req.getTypeName(),EquipmentType.class);
List<EquipmentType> searchResults = es.searchEntities("type_pinyin","name",0, 50,req.getType(), req.getTypeName(),EquipmentType.class);
LambdaQueryWrapper<EquipmentType> wp = this.createWrapper(req);
// 获取所有组织机构数据
List<EquipmentType> allTypes = this.list(wp);
......
......@@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
......@@ -250,8 +251,45 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
//出入库时无单据查询库存汇总并统计更新或者记账时根据单据查询库存汇总并统计更新
@Override
public List<InventorySummary> selectSumByItems(List<Object[]> searchCriteria) {
return inventorySummaryMapper.selectSumByItems(searchCriteria);
public List<InventorySummary> selectSumByItems(SelectTotalNumReq req) {
List<InventorySumReq> list = req.getList();
List<Object[]> searchItem=new ArrayList<>();
for (InventorySumReq inv:list) {
Object[] item=new Object[]{inv.getOrgId(),inv.getLocationId(),inv.getTypeId(),inv.getSizeId(),inv.getUnitPrice()};
searchItem.add(item);
}
List<InventorySummary> inventorySummaryList = inventorySummaryMapper.selectSumByItems(searchItem);
//判断装备的list是否和传入的list的size是否相等,如果相等则表示所有的库存数量都能查询到,如果不相等则进行遍历将不满足要求的进行新增一条装备数量为0的库存信息进行返回给前端
if (list.size()==inventorySummaryList.size()){
return inventorySummaryList;
}else {
List<InventorySummary> returnList=new ArrayList<>();
for (InventorySumReq inv:list) {
boolean flag=false;
for (InventorySummary is:inventorySummaryList) {
if (inv.getOrgId().equals(is.getOrgId())&& inv.getLocationId().equals(is.getLocationId())
&& inv.getTypeId().equals(is.getTypeId()) && inv.getSizeId().equals(is.getTypeId())
&& is.getUnitPrice().compareTo(new BigDecimal(inv.getUnitPrice()))==0){
flag=true;
returnList.add(is);
break;
}
}
if (!flag){
InventorySummary inventorySummary = new InventorySummary();
BeanPlusUtil.copyProperties(inv,inventorySummary);
inventorySummary.setStockNumber(0);
inventorySummary.setOutboundNumber(0);
inventorySummary.setPrice(BigDecimal.ZERO);
inventorySummary.setBrokenNumber(0);
inventorySummary.setDestructionNumber(0);
returnList.add(inventorySummary);
}
}
return returnList;
}
}
@Override
......
......@@ -18,6 +18,7 @@ import com.junmp.jyzb.api.bean.vo.InOrderInfo;
import com.junmp.jyzb.api.exception.enums.CabinetExceptionEnum;
import com.junmp.jyzb.api.exception.enums.OrderExceptionEnum;
import com.junmp.jyzb.entity.*;
import com.junmp.jyzb.mapper.InventorySummaryMapper;
import com.junmp.jyzb.mapper.OrderMainMapper;
import com.junmp.jyzb.service.*;
import com.junmp.jyzb.utils.DateTimeUtil;
......@@ -111,6 +112,10 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
@Resource
protected TaskService taskService;
@Resource
private InventorySummaryMapper inventorySummaryMapper;
@Autowired
private RabbitMQSendMsg MQ;
......@@ -118,6 +123,72 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
@Transactional(rollbackFor = Exception.class)
@Override
public List<String> AddOrder(UpdateOrderReq req) {
//修改单据使用次数状态,判断数据库是否有该单据,如果有,那么就判断当前单号是否一致,如果不一致,修改单据使用次数
Long orgId;
if (ObjectUtil.isNotNull(req.getId())){
OrderMain one = orderMainExist(req.getId());
if (ObjectUtil.isNotNull(one.getBussinessCode()) && ObjectUtil.isNotNull(one.getBussinessCode())) {
if (!one.getBussinessCode().equals(req.getBussinessCode())) {
if (req.getOrderType().equals("in")) {
orgId = req.getEndOrgId();
} else {
orgId = Long.parseLong(req.getStartOrgId());
}
//入参
BusForm one1 = setState1(orgId, req.getBussinessCode());
busFormService.updateById(one1);
//库存
BusForm one2 = setState2(orgId, one.getBussinessCode());
busFormService.updateById(one2);
}
}
//入参不为空,库里为空
else if (ObjectUtil.isNotNull(one.getBussinessCode()) && ObjectUtil.isNull(one.getBussinessCode())){
//只需要改一条数据
if (req.getOrderType().equals("in")){
orgId=req.getEndOrgId();
}else {
orgId=Long.parseLong(req.getStartOrgId());
}
//入参
BusForm one1 = setState1(orgId, req.getBussinessCode());
busFormService.updateById(one1);
}
//入参为空,库里不为空
else if (ObjectUtil.isNull(one.getBussinessCode()) && ObjectUtil.isNotNull(one.getBussinessCode())){
//只需要改一条数据
if (req.getOrderType().equals("in")){
orgId=req.getEndOrgId();
}else {
orgId=Long.parseLong(req.getStartOrgId());
}
//库存
BusForm one2 = setState2(orgId, one.getBussinessCode());
busFormService.updateById(one2);
}
}else {
if (ObjectUtil.isNotNull(req.getBussinessCode())){
//只需要更改一条单据
//只需要改一条数据
if (req.getOrderType().equals("in")){
orgId=req.getEndOrgId();
}else {
orgId=Long.parseLong(req.getStartOrgId());
}
//入参
BusForm one1 = setState1(orgId, req.getBussinessCode());
busFormService.updateById(one1);
}
}
//判断是否有工作流id,如果有则将状态进行修改
if (ObjectUtil.isEmpty(req.getProcessDefinitionId())) {
req.setExamineState("none");
......@@ -214,9 +285,51 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
for (OrderDetail orderDetail:detailList) {
list.add(Long.toString(orderDetail.getId()));
}
return list;
}
private BusForm setState2(Long orgId,String bussinessCode){
BusForm busform = busFormService.getOne(new LambdaQueryWrapper<BusForm>()
.eq(BusForm::getOrgId, orgId)
.in(BusForm::getBussinessCode, bussinessCode));
busform.setOrderCurrentState(busform.getOrderLastState());
switch (busform.getOrderCurrentState()){
case "none":
busform.setOrderCurrentState("outgoing");
break;
case "incoming":
busform.setOrderCurrentState("bothuseing");
break;
case "outgoing":
busform.setOrderCurrentState("bothuseing");
break;
}
return busform;
}
private BusForm setState1(Long orgId,String bussinessCode){
BusForm busform = busFormService.getOne(new LambdaQueryWrapper<BusForm>()
.eq(BusForm::getOrgId, orgId)
.in(BusForm::getBussinessCode, bussinessCode));
busform.setOrderCurrentState(busform.getOrderLastState());
switch (busform.getOrderCurrentState()){
case "bothuseing":
busform.setOrderCurrentState("outgoing");
break;
case "incoming":
busform.setOrderCurrentState("forbidden");
break;
case "outgoing":
busform.setOrderCurrentState("forbidden");
break;
}
return busform;
}
//设置单据单号(并且对order_num表进行新增或者更新)
public OrderNum setOrderCode(UpdateOrderReq req){
......@@ -289,6 +402,9 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
req.setDetailList(collect);
}
//单据类型,分发单据
req.setApi("DistributeOrder");
//将完成的任务单直接推送到消息队列rabbitmq中(需要判断是入库单还是出库单,入库单传发物单位id,出库单传收物单位id)
//方法2:一个交换机,多个队列。动态创建队列
String exchangeName="orderExchange";
......@@ -414,15 +530,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
List<OrderDetailDto> orderDetailDtoList=new ArrayList<>();
for (OrderDetail orderDetail:list) {
OrderDetailDto orderDetailDto = new OrderDetailDto();
BeanPlusUtil.copyProperties(orderDetail,orderDetailDto);
// if (orderMain.getOrderType().equals("out")){
// InventorySummary one = inventorySummaryService.getOne(new LambdaQueryWrapper<InventorySummary>()
// .eq(InventorySummary::getLocationId, orderDetail.getWarehouseId())
// .eq(InventorySummary::getSizeId, orderDetail.getSizeId())
// .eq(InventorySummary::getTypeId, orderDetail.getTypeId())
// .eq(InventorySummary::getUnitPrice, orderDetail.getPrice()));
// orderDetailDto.setStockNumber(one.getStockNumber());
// }
orderDetailDtoList.add(orderDetailDto);
}
orderDto.setDetailList(orderDetailDtoList);
......@@ -611,7 +720,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
Object[] criteria=new Object[]{orgId,upReq.getWarehouseId(),upReq.getTypeId(),upReq.getSizeId(),upReq.getPrice()};
searchCriteria.add(criteria);
}
List<InventorySummary> inventorySummaryList = inventorySummaryService.selectSumByItems(searchCriteria);
List<InventorySummary> inventorySummaryList = inventorySummaryMapper.selectSumByItems(searchCriteria);
List<InventorySummary> addList=new ArrayList<>();
List<InventorySummary> updateList=new ArrayList<>();
for (UpdateOrderDetailReq upReq: orderDetailReqList) {
......@@ -908,9 +1017,9 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
//将summary汇总表中数据进行修改(修改该组织机构下的装备汇总信息将库存信息的在库数,库存总数,总价还有其他数据数量进行修改)
//那么首先将原来的仓库下的装备汇总信息进行查询出来,对其进行修改
List<InventorySummary> oldSummaryList = inventorySummaryService.selectSumByItems(searchCriteria);
List<InventorySummary> oldSummaryList = inventorySummaryMapper.selectSumByItems(searchCriteria);
//其次查询出修改后的仓库下面的汇总信息,判断该仓库下是否已经存在该号型、类型、单价相同的装备数据
List<InventorySummary> newSummaryList = inventorySummaryService.selectSumByItems(updateCriteria);
List<InventorySummary> newSummaryList = inventorySummaryMapper.selectSumByItems(updateCriteria);
//第一步:判断是否将报废区的数据也同样进行移库(flag=true表示将报废区的数量进行一起移动)
boolean flag = oldSummaryList.stream()
.filter(oldsum -> oldsum.getBrokenNumber() > 0)
......
package com.junmp.jyzb.utils;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
......@@ -25,7 +26,7 @@ public class ElasticsearchUtil<T> {
this.client = client;
}
public List<T> searchEntities(String typeName,String index, Integer pageNum, Integer pageSize, String keyword, Class<T> entityClass) throws IOException {
public List<T> searchEntities(String typeName,String index, Integer pageNum, Integer pageSize,Integer type, String keyword, Class<T> entityClass) throws IOException {
if (pageNum < 0) pageNum = 0;
SearchRequest request = new SearchRequest(typeName);
......@@ -44,6 +45,9 @@ public class ElasticsearchUtil<T> {
{
builder.postFilter(new TermQueryBuilder("delFlag", 1));
}
if (ObjectUtil.isNotNull(type)){
builder.postFilter(new TermQueryBuilder("type",type));
}
builder.query(boolQueryBuilder);
builder.timeout(new TimeValue(60, TimeUnit.SECONDS));
......
package com.junmp.jyzb.utils;
import com.alibaba.fastjson.JSON;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Exchange;
......@@ -17,11 +18,12 @@ public class RabbitMQSendMsg {
private RabbitAdmin rabbitAdmin;
public void SendMsg(String exchangeName,String name,Object msg)
{
Queue queue=new Queue(name,true,false,false);
Exchange exchange = new DirectExchange(exchangeName, true, false);
rabbitAdmin.declareQueue(queue);
rabbitAdmin.declareExchange(exchange);
rabbitAdmin.declareBinding(BindingBuilder.bind(queue).to(exchange).with(name).noargs());
rabbitTemplate.convertAndSend(exchangeName, name, msg);
Queue queue=new Queue(name,true,false,false);
Exchange exchange = new DirectExchange(exchangeName, true, false);
rabbitAdmin.declareQueue(queue);
rabbitAdmin.declareExchange(exchange);
rabbitAdmin.declareBinding(BindingBuilder.bind(queue).to(exchange).with(name).noargs());
String jsonString = JSON.toJSONString(msg);
rabbitTemplate.convertAndSend(exchangeName, name, jsonString);
}
}
......@@ -72,6 +72,9 @@
<if test="null != req.bussinessType and '' != req.bussinessType ">
and bussiness_type = #{req.bussinessType}
</if>
<if test="null != req.typeName and '' != req.typeName ">
and inv_list like concat('%',#{req.typeName},'%')
</if>
<if test="req.startOrgId != null and req.startOrgId != ''">
and start_org_id = #{req.startOrgId}
</if>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论