Commit 03be860b by 李小惠

快捷审批意见,调岗

parent c291ad00
......@@ -138,7 +138,7 @@ public class BusFormDto {
/**
* 厂商类型(0为供应商,1为生产厂商,2为维修单位,3为销毁单位)
*/
private Integer agencyType;
private String agencyType;
/**
* 装备类别拼接
......@@ -168,7 +168,7 @@ public class BusFormDto {
/**
* 报废类型(1销毁出库,2移入报废区)
*/
private Integer type;
private String type;
/**
* 单据使用次数(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
......
......@@ -41,7 +41,7 @@ public class OrderDetailDto implements Serializable {
private Integer modifyQuantity;
private BigDecimal price;
private BigDecimal totalPrice;
/**
* 在库数
*/
......
package com.junmp.jyzb.api.bean.dto;
import com.junmp.v2.common.bean.request.ValidationApi;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class QuickSuggestionsDto {
/**
* id
*/
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 审批意见
*/
private String text;
/**
* 应用场景(1为审批时使用)
*/
private Integer useType;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}
......@@ -22,7 +22,7 @@ public class ReassignmentDto {
/**
* 经办人
*/
private String userName;
private String agent;
/**
* 工作流id
......@@ -46,7 +46,9 @@ public class ReassignmentDto {
/**
* 警员带走装备
*/
private String eqsList;
private String detailList;
private String invList;
/**
* 组织机构id(谁申请,就是谁的组织机构号)
......@@ -105,7 +107,7 @@ public class ReassignmentDto {
/**
* 类型(调入警员0,调出警员1)
*/
private Integer reassigmentType;
private String reassignmentType;
}
\ No newline at end of file
......@@ -41,4 +41,7 @@ public class BussinessOrderDetialReq {
private Integer maintenancePeriod;
//在库数
private Integer stockNumber;
//报废区数
private Integer brokenNumber;
}
......@@ -36,7 +36,7 @@ public class OrderDetailReq extends BaseRequest {
private Integer actualNum;
private BigDecimal totalPrice;
private BigDecimal price;
private String orderType;
......
......@@ -189,7 +189,7 @@ public class QueryBusFormReq extends BaseRequest {
/**
* 报废销毁类型(1销毁出库,2移入报废区)
*/
private Integer type;
private String type;
/**
* 单据使用次数(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
......
package com.junmp.jyzb.api.bean.query;
import com.junmp.v2.common.bean.request.ValidationApi;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class QueryQuickSuggestionsReq {
/**
* id
*/
private Long id;
/**
* 用户id
*/
@NotNull(message = "用户id不能为空",groups = {ValidationApi.detail.class})
private Long userId;
/**
* 审批意见
*/
private String text;
/**
* 应用场景(1为审批时使用)
*/
private Integer useType;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}
......@@ -21,7 +21,7 @@ public class QueryReassignmentReq extends BaseRequest {
/**
* 经办人
*/
private String userName;
private String agent;
/**
* 工作流id
......@@ -43,7 +43,10 @@ public class QueryReassignmentReq extends BaseRequest {
/**
* 警员带走装备
*/
private String eqsList;
private String detailList;
private String invList;
/**
* 组织机构id(警员原组织机构id)
......@@ -118,6 +121,12 @@ public class QueryReassignmentReq extends BaseRequest {
/**
* 类型(调入警员0,调出警员1)
*/
private Integer reassigmentType;
private String reassignmentType;
//登录人id
private String userId;
private String typeName;
private String sizeName;
}
......@@ -25,6 +25,11 @@ public class UpdateBusFormReq extends BaseRequest {
private String processDefinitionId;
/**
* 工作流实例id
*/
private String processId;
/**
* 单据业务类型
*/
@NotBlank(message = "业务单据类型不能为空",groups = {add.class,edit.class})
......@@ -168,7 +173,7 @@ public class UpdateBusFormReq extends BaseRequest {
/**
* 报废销毁类型(1销毁出库,2移入报废区)
*/
private Integer type;
private String type;
/**
* 单据使用次数(forbidden禁止使用,outgoing 仅出库使用,incoming仅入库使用,bothuseing出入库都可以使用一次)
......
......@@ -41,7 +41,7 @@ public class UpdateOrderDetailReq implements Serializable {
private String supplierName;
private Integer planNum;
private BigDecimal totalPrice;
private BigDecimal price;
private String warehouseId;
......
package com.junmp.jyzb.api.bean.req;
import com.junmp.v2.common.bean.request.ValidationApi;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class UpdateQuickSuggestionsReq {
/**
* id
*/
@NotNull(message = "删除时主键id不能为空",groups = {ValidationApi.delete.class})
private Long id;
/**
* 用户id
*/
@NotNull(message = "用户id不能为空",groups = {ValidationApi.add.class})
private Long userId;
/**
* 审批意见
*/
@NotBlank(message = "审批意见不能为空",groups = {ValidationApi.add.class})
private String text;
/**
* 应用场景(1为审批时使用)
*/
@NotNull(message = "应用场景不能为空",groups = {ValidationApi.add.class})
private Integer useType;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}
......@@ -19,12 +19,14 @@ public class UpdateReassignmentReq extends BaseRequest {
/**
* 经办人
*/
private String userName;
private String agent;
/**
* 申请人id
*/
private String userId;
private String orderCode;
/**
* 工作流id
*/
......@@ -48,8 +50,8 @@ public class UpdateReassignmentReq extends BaseRequest {
/**
* 警员带走装备
*/
private String eqsList;
private String detailList;
private String invList;
/**
* 组织机构id(警员原组织机构id)
*/
......@@ -108,6 +110,6 @@ public class UpdateReassignmentReq extends BaseRequest {
/**
* 类型(调入警员0,调出警员1)
*/
private Integer reassigmentType;
private String reassignmentType;
}
......@@ -6,7 +6,8 @@ import lombok.Getter;
@Getter
public enum InventoryExceptionEnum implements IExceptionEnum {
INVENTORY_NOT_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"装备信息不存在")
INVENTORY_NOT_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"装备信息不存在"),
INVENTORY_BEYOND_STOCK(CommonConstant.DEFAULT_USER_ERROR_CODE,"填写的报废的装备数量大于实际能进行报废的数量"),
;
/**
* 错误编码
......
......@@ -51,10 +51,10 @@ public class BussinessController {
}
//根据调拨单,一键生成采购单
@PostMapping("/GeneratePurchaseQuickly")
@ApiOperation("快速生成采购单")
public ApiRes<List<GeneratePurchaseQuicklyDto>> GeneratePurchaseQuickly(@RequestBody GeneratePurchaseQuicklyReq req){
return ApiRes.success(busFormService.GeneratePurchaseQuickly(req));
}
// @PostMapping("/GeneratePurchaseQuickly")
// @ApiOperation("快速生成采购单")
// public ApiRes<List<GeneratePurchaseQuicklyDto>> GeneratePurchaseQuickly(@RequestBody GeneratePurchaseQuicklyReq req){
// return ApiRes.success(busFormService.GeneratePurchaseQuickly(req));
// }
}
......@@ -187,7 +187,6 @@ public class PoliceController {
@PostMapping("/PoliceBindBox")
@ApiOperation("人员绑定箱门")
public ApiRes<Boolean> PoliceBindBox(@RequestBody PolicemanReq req){
return ApiRes.success(policemanService.PoliceBindBox(req));
}
......
......@@ -62,6 +62,9 @@ import java.util.Date;
@TableField("price")
private BigDecimal price;
@TableField("total_price")
private BigDecimal totalPrice;
@TableField("order_type")
private String orderType;
......
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 com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
......@@ -29,7 +27,7 @@ public class PoliceEquipment implements Serializable {
/**
* 警员ID
*/
@TableField("police_id")
@TableField(value = "police_id")
private String policeId;
@TableField("police_name")
......@@ -68,9 +66,21 @@ public class PoliceEquipment implements Serializable {
/**
* 组织机构ID
*/
@TableField("org_id")
@TableField(value = "org_id",updateStrategy = FieldStrategy.IGNORED)
private Long orgId;
/**
* 装备来源仓库id
*/
@TableField(value = "location_id",updateStrategy = FieldStrategy.IGNORED)
private String locationId;
/**
* 装备存放位置
*/
@TableField(value = "storage_location",updateStrategy = FieldStrategy.IGNORED)
private String storageLocation;
//装备单价
@TableField("price")
private BigDecimal price;
......
......@@ -88,5 +88,8 @@ public class Policeman implements Serializable {
@TableField(value = "hk_face_device")
private Integer hkFaceDevice;
@TableField(exist = false)
private List<PoliceEquipment> policeEquipmentList;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -53,8 +53,14 @@ public class Reassignment implements Serializable {
/**
* 警员带走装备
*/
@TableField(value = "eqs_list")
private String eqsList;
@TableField(value = "detail_list")
private String detailList;
/**
* 警员带走装备
*/
@TableField(value = "inv_list")
private String invList;
/**
* 组织机构id(谁申请,就是谁的组织机构号)
......@@ -91,8 +97,8 @@ public class Reassignment implements Serializable {
/**
* 经办人
*/
@TableField(value = "user_name")
private String userName;
@TableField(value = "agent")
private String agent;
/**
* 申请时间
......@@ -137,8 +143,11 @@ public class Reassignment implements Serializable {
/**
* 类型(调入警员0,调出警员1)
*/
@TableField(value = "reassigment_type")
private Integer reassigmentType;
@TableField(value = "reassignment_type")
private String reassignmentType;
private static final long serialVersionUID = 1L;
......
......@@ -17,6 +17,7 @@ import com.junmp.jyzb.service.BusFormService;
import com.junmp.jyzb.service.OrderMainService;
import com.junmp.jyzb.service.ReassignmentService;
import com.junmp.jyzb.service.StocktakeService;
import com.junmp.v2.auth.api.LoginUserApi;
import com.junmp.v2.auth.api.bean.login.LoginUser;
import com.junmp.v2.auth.api.context.LoginContext;
import com.junmp.v2.common.exception.base.ServiceException;
......@@ -114,6 +115,7 @@ public class CounterSignListener implements ExecutionListener {
roleList = roleList.substring(0, roleList.length() - 1);
roleList+=")";//至此拼接完成
LoginUser StartUser= LoginContext.getContext().getLoginUser();
List<UserListDTO> userList=orgUserMapper.QueryUserByRoleId(roleList, StartUser.getUserId().toString());
for (UserListDTO userId :userList)
......
......@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.junmp.junmpProcess.dto.json.ChildNode;
import com.junmp.junmpProcess.utils.RabbitMQUtils2;
//import com.rabbitmq.client.Channel;
......@@ -15,6 +17,7 @@ import com.junmp.jyzb.api.bean.req.UpdateBusFormReq;
import com.junmp.jyzb.api.bean.req.UpdateOrderDetailReq;
import com.junmp.jyzb.api.bean.req.UpdateOrderReq;
import com.junmp.jyzb.api.bean.req.UpdateReassignmentReq;
import com.junmp.jyzb.api.exception.enums.InventoryExceptionEnum;
import com.junmp.jyzb.api.exception.enums.OrderExceptionEnum;
import com.junmp.jyzb.entity.*;
import com.junmp.jyzb.service.*;
......@@ -66,6 +69,12 @@ import java.util.stream.Collectors;
@Resource
private StocktakeService stocktakeService;
@Resource
private InventorySummaryService inventorySummaryService;
@Resource
private InventoryService inventoryService;
protected Logger logger = LoggerFactory.getLogger(this.getClass());
@SneakyThrows
......@@ -118,16 +127,7 @@ import java.util.stream.Collectors;
.eq(BusForm::getProcessId, processInstanceId));
busForm.setExamineState("finished");
if (busForm.getBussinessType().equals("remove")){
String detailList = busForm.getDetailList();
List<BussinessOrderDetialReq> list = JSON.parseArray(detailList, BussinessOrderDetialReq.class);
for (BussinessOrderDetialReq bussinessOrderDetialReq:list) {
//如果数量相同则直接将全部在库数的装备表中的该仓库的装备状态全部设置为报废,并且修改库存汇总表中的数据
if (bussinessOrderDetialReq.getPlanNum()==bussinessOrderDetialReq.getStockNumber()){
}else {//如果数量不相等,状态不进行修改,只修改库存汇总表中的信息
}
}
busFormService.updateBrokenResult(busForm);
}
busFormService.updateById(busForm);
}
......@@ -135,9 +135,10 @@ import java.util.stream.Collectors;
Reassignment one = reassignmentService.getOne(new LambdaQueryWrapper<Reassignment>()
.eq(Reassignment::getProcessId, processInstanceId));
UpdateReassignmentReq updateReassignmentReq = new UpdateReassignmentReq();
one.setExamineState("finished");
BeanPlusUtil.copyProperties(one,updateReassignmentReq);
updateReassignmentReq.setExamineState("finished");
policemanService.changePoliceOrg(updateReassignmentReq);
reassignmentService.updateById(one);
}
if (Type.equals("stocktakeOrder")){//盘库申请单
......
......@@ -36,7 +36,7 @@ public interface InventorySummaryMapper extends BaseMapper<InventorySummary> {
List<InventorySummary> selectByEqs(@Param("orgId") Long orgId);
//出入库时无单据查询库存汇总并统计更新或者记账时根据单据查询库存汇总并统计更新
//根据组织机构,仓库,type,size,unitprice查询库存汇总信息
List<InventorySummary> selectSumByItems(@Param("list") List<Object[]> searchCriteria);
//根据组织机构查询报表中的本级及下一级信息
......
......@@ -34,5 +34,8 @@ public interface BusFormService extends IService<BusForm> {
PageResult<BusFormDto> showBussinessOrder(QueryBusFormReq req);
//根据调拨单,一键生成采购单
List<GeneratePurchaseQuicklyDto> GeneratePurchaseQuickly(GeneratePurchaseQuicklyReq req);
// List<GeneratePurchaseQuicklyDto> GeneratePurchaseQuickly(GeneratePurchaseQuicklyReq req);
//更新报废数量
boolean updateBrokenResult(BusForm busForm);
}
......@@ -2,8 +2,11 @@ package com.junmp.jyzb.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.junmpProcess.dto.StartProcessInstanceDTO;
......@@ -17,13 +20,12 @@ 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.enums.InventoryExceptionEnum;
import com.junmp.jyzb.api.exception.enums.OrderExceptionEnum;
import com.junmp.jyzb.entity.*;
import com.junmp.jyzb.mapper.InventorySummaryMapper;
import com.junmp.jyzb.service.BusFormService;
import com.junmp.jyzb.service.*;
import com.junmp.jyzb.mapper.BusFormMapper;
import com.junmp.jyzb.service.InventorySummaryService;
import com.junmp.jyzb.service.StocktakeService;
import com.junmp.jyzb.utils.CreateNullData;
import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.v2.common.exception.base.ServiceException;
......@@ -36,6 +38,7 @@ import com.junmp.v2.sys.user.service.SysUserOrgService;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
......@@ -64,9 +67,15 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
private InventorySummaryService inventorySummaryService;
@Resource
private InventoryService inventoryService;
@Resource
private InventorySummaryMapper inventorySummaryMapper;
@Resource
private OrderLogService orderLogService;
@Resource
protected TaskService taskService;
@Resource
......@@ -93,9 +102,9 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
req.setExamineState("working");
}
//判断该单据是否可以进行修改(如果审核中则不允许修改)
// if (req.getExamineState().equals("working")){
// throw new ServiceException(OrderExceptionEnum.ORDER_CAN_NOT_UPDATE);
// }
if (ObjectUtil.isNotNull(req.getProcessId()) && !req.getProcessId().trim().isEmpty()){
throw new ServiceException(OrderExceptionEnum.ORDER_CAN_NOT_UPDATE);
}
BusForm busForm = new BusForm();
BeanUtil.copyProperties(req,busForm);
//设置业务单的使用次数(默认是出库一次,入库一次)
......@@ -238,78 +247,159 @@ public class BusFormServiceImpl extends ServiceImpl<BusFormMapper, BusForm> impl
//根据调拨单,一键生成采购单
// @Override
// public List<GeneratePurchaseQuicklyDto> GeneratePurchaseQuickly(GeneratePurchaseQuicklyReq req) {
// //先把所有发物单位是自己的业务单全部查询出来,然后一一进行比较到底那个是前端传递的数据
//// List<BusForm> list = list(new LambdaQueryWrapper<BusForm>()
//// .eq(BusForm::getOrgId, req.getOrgId())
//// .eq(BusForm::getBussinessType, req.getBussinessType()));
//
// //将所有调拨单中的装备添加到totalList,之后进行去重并且相应数量相加
// List<BussinessOrderDetialReq> totalList=new ArrayList<>();
// //将所有调拨单获取
// List<UpdateBusFormReq> busFormList = req.getBusFormList();
// for (UpdateBusFormReq updateBusFormReq:busFormList) {
// String detailList = updateBusFormReq.getDetailList();
// List<BussinessOrderDetialReq> list = JSONObject.parseArray(detailList, BussinessOrderDetialReq.class);
// totalList.addAll(list);
// }
// //newList用来去重,把相同size和type的数量进行相加
// List<BussinessOrderDetialReq> newList=new ArrayList<>();
// for (BussinessOrderDetialReq item :totalList) {
// boolean found=false;
// if (newList.size()==0){
// newList.add(item);
// continue;
// }
// for (BussinessOrderDetialReq listItem:newList) {
// if (listItem.getSizeId().equals(item.getSizeId()) && listItem.getTypeId().equals(item.getTypeId())) {
// // 如果存在匹配的元素,则更新 num 值
// listItem.setPlanNum(listItem.getPlanNum() + item.getPlanNum());
// found = true;
// break;
// }
// }
// if (!found){
// newList.add(item);
// }
// }
// //创建list,返回给前端(只返回库存不足的装备和数量)
// List<GeneratePurchaseQuicklyDto> returnList=new ArrayList<>();
// //查询库存数量(将该组织机构下面的所有类型和号型的数量查询出来)
// List<InventorySummary> sumList = inventorySummaryMapper.selectByEqs(req.getOrgId());
// for (BussinessOrderDetialReq bussinessOrderDetial:newList) {
// boolean flag=false;
// for (InventorySummary inventorySummary:sumList) {
// if (bussinessOrderDetial.getSizeId().equals(inventorySummary.getSizeId())
// && bussinessOrderDetial.getTypeId().equals(inventorySummary.getSizeId())){
// //判断两个数量谁打谁小
// if (bussinessOrderDetial.getPlanNum()-inventorySummary.getStockNumber()>0){
// GeneratePurchaseQuicklyDto generatePurchaseQuicklyDto = new GeneratePurchaseQuicklyDto();
// generatePurchaseQuicklyDto.setNumber(bussinessOrderDetial.getPlanNum()-inventorySummary.getStockNumber());
// generatePurchaseQuicklyDto.setSizeId(bussinessOrderDetial.getSizeId());
// generatePurchaseQuicklyDto.setSizeName(bussinessOrderDetial.getSizeName());
// generatePurchaseQuicklyDto.setTypeId(bussinessOrderDetial.getTypeId());
// generatePurchaseQuicklyDto.setTypeName(bussinessOrderDetial.getTypeName());
// returnList.add(generatePurchaseQuicklyDto);
// }
// flag=true;
// break;
// }
//
// }
// if (!flag){
// GeneratePurchaseQuicklyDto generatePurchaseQuicklyDto = new GeneratePurchaseQuicklyDto();
// generatePurchaseQuicklyDto.setNumber(bussinessOrderDetial.getPlanNum());
// generatePurchaseQuicklyDto.setSizeId(bussinessOrderDetial.getSizeId());
// generatePurchaseQuicklyDto.setSizeName(bussinessOrderDetial.getSizeName());
// generatePurchaseQuicklyDto.setTypeId(bussinessOrderDetial.getTypeId());
// generatePurchaseQuicklyDto.setTypeName(bussinessOrderDetial.getTypeName());
// returnList.add(generatePurchaseQuicklyDto);
// }
// }
//
// return returnList;
// }
@Override
public List<GeneratePurchaseQuicklyDto> GeneratePurchaseQuickly(GeneratePurchaseQuicklyReq req) {
//先把所有发物单位是自己的业务单全部查询出来,然后一一进行比较到底那个是前端传递的数据
// List<BusForm> list = list(new LambdaQueryWrapper<BusForm>()
// .eq(BusForm::getOrgId, req.getOrgId())
// .eq(BusForm::getBussinessType, req.getBussinessType()));
//将所有调拨单中的装备添加到totalList,之后进行去重并且相应数量相加
List<BussinessOrderDetialReq> totalList=new ArrayList<>();
//将所有调拨单获取
List<UpdateBusFormReq> busFormList = req.getBusFormList();
for (UpdateBusFormReq updateBusFormReq:busFormList) {
String detailList = updateBusFormReq.getDetailList();
List<BussinessOrderDetialReq> list = JSONObject.parseArray(detailList, BussinessOrderDetialReq.class);
totalList.addAll(list);
}
//newList用来去重,把相同size和type的数量进行相加
List<BussinessOrderDetialReq> newList=new ArrayList<>();
for (BussinessOrderDetialReq item :totalList) {
boolean found=false;
if (newList.size()==0){
newList.add(item);
continue;
}
for (BussinessOrderDetialReq listItem:newList) {
if (listItem.getSizeId().equals(item.getSizeId()) && listItem.getTypeId().equals(item.getTypeId())) {
// 如果存在匹配的元素,则更新 num 值
listItem.setPlanNum(listItem.getPlanNum() + item.getPlanNum());
found = true;
break;
}
@Transactional(rollbackFor = Exception.class)
public boolean updateBrokenResult(BusForm busForm) {
//获取数量
String detailList = busForm.getDetailList();
List<BussinessOrderDetialReq> list = JSON.parseArray(detailList, BussinessOrderDetialReq.class);
//更新inventory表的表达式
LambdaUpdateWrapper<Inventory> updateStateWrapper = Wrappers.lambdaUpdate();
List<Object[]> searchItem=new ArrayList<>();
for (BussinessOrderDetialReq detialReq:list) {
//我先去数据库查询summary表中的数据
Object[] item=new Object[]{busForm.getOrgId(),detialReq.getLocationId(),detialReq.getTypeId(),detialReq.getSizeId(),detialReq.getPrice()};
searchItem.add(item);
}
List<InventorySummary> inventorySummaryList = inventorySummaryMapper.selectSumByItems(searchItem);
List<InventorySummary> updateSummaryList=new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("组织机构为:"+busForm.getOrgId()+"单号为:"+busForm.getBussinessCode()+"的报废业务单将报废数量进行修改:");
boolean a=false;
for (BussinessOrderDetialReq detialReq:list) {
for (InventorySummary is:inventorySummaryList) {
if (detialReq.getLocationId().equals(is.getLocationId()) && detialReq.getTypeId().equals(is.getTypeId())
&& detialReq.getSizeId().equals(is.getSizeId()) && detialReq.getPrice().compareTo(is.getUnitPrice())==0){
//如果数量相同则直接将全部在库数的装备表中的该仓库的装备状态全部设置为报废,并且修改库存汇总表中的数据
if (detialReq.getPlanNum()+is.getBrokenNumber()==is.getStockNumber()){
a=true;
//修改装备状态表达式
updateStateWrapper.or().eq(Inventory::getOrgId, busForm.getOrgId())
.eq(Inventory::getLocationId, detialReq.getLocationId())
.eq(Inventory::getTypeId, detialReq.getTypeId())
.eq(Inventory::getSizeId, detialReq.getSizeId())
.eq(Inventory::getPrice, detialReq.getPrice())
.eq(Inventory::getLocationType,1)
.eq(Inventory::getLocationState,"in")
.set(Inventory::getState, "broken");
//将库存的报废数量根据单据重新进行计算
Integer brokenNum=detialReq.getPlanNum()+is.getBrokenNumber();
stringBuilder.append("装备为"+detialReq.getTypeName()+","+detialReq.getSizeName()+"的报废数量从"+is.getBrokenNumber()+"改成"+brokenNum+",");
is.setBrokenNumber(brokenNum);
updateSummaryList.add(is);
} else if (detialReq.getPlanNum()+detialReq.getBrokenNumber()<detialReq.getStockNumber()){
//如果数量不相等,状态不进行修改,只修改库存汇总表中的信息
//将库存的报废数量根据单据重新进行计算
Integer brokenNum=detialReq.getPlanNum()+is.getBrokenNumber();
stringBuilder.append("装备为"+detialReq.getTypeName()+","+detialReq.getSizeName()+"的报废数量从"+is.getBrokenNumber()+"改成"+brokenNum+",");
is.setBrokenNumber(brokenNum);
updateSummaryList.add(is);
}else {
throw new ServiceException(InventoryExceptionEnum.INVENTORY_BEYOND_STOCK);
}
if (!found){
newList.add(item);
}
}
//创建list,返回给前端(只返回库存不足的装备和数量)
List<GeneratePurchaseQuicklyDto> returnList=new ArrayList<>();
//查询库存数量(将该组织机构下面的所有类型和号型的数量查询出来)
List<InventorySummary> sumList = inventorySummaryMapper.selectByEqs(req.getOrgId());
for (BussinessOrderDetialReq bussinessOrderDetial:newList) {
boolean flag=false;
for (InventorySummary inventorySummary:sumList) {
if (bussinessOrderDetial.getSizeId().equals(inventorySummary.getSizeId())
&& bussinessOrderDetial.getTypeId().equals(inventorySummary.getSizeId())){
//判断两个数量谁打谁小
if (bussinessOrderDetial.getPlanNum()-inventorySummary.getStockNumber()>0){
GeneratePurchaseQuicklyDto generatePurchaseQuicklyDto = new GeneratePurchaseQuicklyDto();
generatePurchaseQuicklyDto.setNumber(bussinessOrderDetial.getPlanNum()-inventorySummary.getStockNumber());
generatePurchaseQuicklyDto.setSizeId(bussinessOrderDetial.getSizeId());
generatePurchaseQuicklyDto.setSizeName(bussinessOrderDetial.getSizeName());
generatePurchaseQuicklyDto.setTypeId(bussinessOrderDetial.getTypeId());
generatePurchaseQuicklyDto.setTypeName(bussinessOrderDetial.getTypeName());
returnList.add(generatePurchaseQuicklyDto);
}
flag=true;
break;
}
}
if (!flag){
GeneratePurchaseQuicklyDto generatePurchaseQuicklyDto = new GeneratePurchaseQuicklyDto();
generatePurchaseQuicklyDto.setNumber(bussinessOrderDetial.getPlanNum());
generatePurchaseQuicklyDto.setSizeId(bussinessOrderDetial.getSizeId());
generatePurchaseQuicklyDto.setSizeName(bussinessOrderDetial.getSizeName());
generatePurchaseQuicklyDto.setTypeId(bussinessOrderDetial.getTypeId());
generatePurchaseQuicklyDto.setTypeName(bussinessOrderDetial.getTypeName());
returnList.add(generatePurchaseQuicklyDto);
}
boolean b=true;
//改inventory表中的装备状态
if (a){
b=inventoryService.update(updateStateWrapper);
}
//批量修改inventtorySummary表中的数据
boolean c=true;
if (updateSummaryList.size()>0){
c=inventorySummaryService.updateBatchById(updateSummaryList);
}
//创建log记录日志
OrderLog orderLog = new OrderLog();
orderLog.setHistoryMsg(stringBuilder.toString());
orderLog.setOrgId(busForm.getOrgId());
orderLog.setBussinessType(busForm.getBussinessType());
orderLog.setOrderCode(busForm.getBussinessCode());
orderLog.setOrderId(busForm.getId());
orderLog.setOrgName(busForm.getOrgName());
orderLog.setCreateTime(DateTimeUtil.getCurrentDateTime());
orderLogService.save(orderLog);
return returnList;
return (b && c);
}
......
......@@ -125,7 +125,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
req.setExamineState("working");
}
//判断该单据是否可以进行修改(如果审核中则不允许修改)
if (req.getExamineState().equals("working")){
if (ObjectUtil.isNotNull(req.getProcessId()) && !req.getProcessId().trim().isEmpty()){
throw new ServiceException(OrderExceptionEnum.ORDER_CAN_NOT_UPDATE);
}
OrderMain order = new OrderMain();
......@@ -369,6 +369,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
req.setOrder(req.getOrder().toLowerCase());
}
//根据查询条件得到单据
IPage<OrderMain> outOrderPage = orderMainMapper.getOrderPage(PageFactory.getDefaultPage(req.getPageNo(), req.getPageSize()),req);
page.setRecords(outOrderPage.getRecords());
page.setTotal(outOrderPage.getTotal());
......@@ -570,6 +571,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
policeEquipment.setTypeName(updateOrderDetailReq.getTypeName());
policeEquipment.setNum(updateOrderDetailReq.getModifyQuantity());
policeEquipment.setOrgId(orgId);
policeEquipment.setLocationId(updateOrderDetailReq.getWarehouseId());
policeEquipment.setCreateTime(DateTimeUtil.getCurrentDateTime());
return policeEquipment;
}).collect(Collectors.toList());
......
......@@ -31,6 +31,10 @@ import com.junmp.v2.common.util.BeanPlusUtil;
import com.junmp.v2.db.api.factory.PageFactory;
import com.junmp.v2.db.api.factory.PageResultFactory;
import com.junmp.v2.db.api.page.PageResult;
import com.junmp.v2.dict.entity.SysDict;
import com.junmp.v2.dict.entity.SysDictItem;
import com.junmp.v2.dict.service.SysDictItemService;
import com.junmp.v2.dict.service.SysDictService;
import com.junmp.v2.file.api.constant.FileConstant;
import com.junmp.v2.sys.api.bean.user.SysUserDto;
import com.junmp.v2.sys.api.bean.user.req.SysUserReq;
......@@ -49,6 +53,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
......@@ -104,6 +109,24 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
@Resource
private CabinetBoxPoliceService cabinetBoxPoliceService;
@Resource
private PolicemanService policemanService;
@Resource
private SysDictService sysDictService;
@Resource
private SysDictItemService sysDictItemService;
@Resource
private InventorySummaryMapper inventorySummaryMapper;
@Resource
private InventorySummaryService inventorySummaryService;
@Resource
private OrderLogService orderLogService;
private static final String REDIS_POLICE = "Policeman_";
......@@ -244,11 +267,11 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
if (boxPolice.getContainType()==1){
soloList.add(boxPolice.getCabinetBoxId());
soloName = soloName+ boxPolice.getCabinetName()+",";
soloName = soloName + boxPolice.getCabinetName()+",";
}else {
publicList.add(boxPolice.getCabinetBoxId());
publicName = publicName+ boxPolice.getCabinetName()+",";
publicName = publicName + boxPolice.getCabinetName()+",";
}
}
policemanDto.setPublicBoxList(publicList);
......@@ -456,8 +479,6 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
//查询传入的组织机构id是否存在
PubOrg pubOrg = pubOrgService.PubOrgExist(req.getOrgId());
//查询出组织机构下的所有警员信息
Long pageNo = req.getPageNo();
Long pageSize = req.getPageSize();
//排序字段(默认以用户状态进行排序)
//(如果传其他不是数据库字段参数或者排序规则不是deac或者asc可能会出现错误)
if (ObjectUtil.isNotNull(req.getColumn()) && !req.getColumn().trim().isEmpty() &&
......@@ -470,10 +491,14 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
req.setOrder("desc");
req.setColumn("create_time");
}
if (ObjectUtil.isNull(req.getPageNo()) && ObjectUtil.isNull(req.getPageSize())) {
req.setPageNo(1L);
req.setPageSize(10L);
}
long size=policemanMapper.count(req.getOrgId(),req.getAccount(),req.getName(),req.getPoliceCode(),req.getState(),req.getPhone(),req.getFlag());
List<PolicemanDto> policemanDtos = policemanMapper.selectUserBypoliceIds
(req.getOrgId(),req.getAccount(),req.getName(),req.getPoliceCode(),
req.getState(),req.getPhone(),req.getFlag(),(pageNo-1),pageSize,req.getColumn(),req.getOrder());
req.getState(),req.getPhone(),req.getFlag(),(req.getPageNo()-1),req.getPageSize(),req.getColumn(),req.getOrder());
//判断是否需要添加空数据
if(req.getIsCreateNullDate()==null || req.getIsCreateNullDate()){
Class<PolicemanDto> policemanDto = PolicemanDto.class;
......@@ -693,35 +718,64 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
public boolean changePoliceOrg(UpdateReassignmentReq req) {
//通过警员id查询出该警员的基本信息
Policeman policeman = getById(req.getPoliceId());
SysDict sysDict = sysDictService.getOne(new LambdaQueryWrapper<SysDict>().eq(SysDict::getDictCode, "reassignment_type"));
List<SysDictItem> list = sysDictItemService.list(new LambdaQueryWrapper<SysDictItem>().eq(SysDictItem::getDictId, sysDict.getDictId()));
String itemValue = list.get(0).getItemValue();
String itemValue1 = list.get(1).getItemValue();
//判断是调入单还是调出单
//0是调入警员,1是调出警员
if(req.getReassigmentType()==0){
if(req.getReassignmentType().equals(itemValue) && itemValue.equals("assign")){
//添加账号和组织机构的绑定关系
SysUserOrg sysUserOrg = new SysUserOrg();
sysUserOrg.setOrgId(req.getOrgId());
sysUserOrg.setUserId(policeman.getUserId());
sysUserOrg.setCreateTime(DateTimeUtil.getCurrentDateTime());
sysUserOrgService.save(sysUserOrg);
//将警员中的组织机构id设置
policeman.setOrgId(req.getOrgId());
//
}else {
//如果调入的警员携带装备,那么我应该怎么处理呢
List<PoliceEquipment> reqEquipments = JSON.parseArray(req.getDetailList(), PoliceEquipment.class);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("警员:"+req.getPoliceName()+"因调岗携带以下装备:");
Integer inventoryQuantity=0;
Integer actualQuantity=0;
if(ObjectUtil.isNotNull(reqEquipments)){
for (PoliceEquipment equipment:reqEquipments) {
stringBuilder.append("装备"+equipment.getTypeName()+","+equipment.getSizeName()+"数量为:"+equipment.getNum()+",");
inventoryQuantity+=equipment.getNum();
actualQuantity+=equipment.getNum();
}
}
//记录日志(如果警员携带装备,则进行记录 )
OrderLog orderLog = new OrderLog();
orderLog.setHistoryMsg(stringBuilder.toString());
orderLog.setOrgId(req.getOrgId());
orderLog.setBussinessType(req.getReassignmentType());
orderLog.setOrderCode(req.getOrderCode());
orderLog.setOrderId(req.getId());
orderLog.setOrgName(req.getOrgName());
orderLog.setInventoryQuantity(inventoryQuantity);
orderLog.setActualQuantity(actualQuantity);
orderLog.setCreateTime(DateTimeUtil.getCurrentDateTime());
orderLogService.save(orderLog);
//(调岗调入时在配置箱门的时候进行添加装备信息)
}else if (req.getReassignmentType().equals(itemValue1) && itemValue1.equals("reassign")){
//将其组织机构号设为空
policeman.setOrgId(null);
//人脸信息删除
policeman.setFaceInfo(null);
//将角色关联表进行删除
//角色账号信息也进行删除
sysUserOrgService.remove(new LambdaQueryWrapper<SysUserOrg>().eq(SysUserOrg::getUserId,policeman.getUserId()));
// sysUserRoleService.delByUserId(policeman.getUserId());
//修改警员的个人信息(删除指纹信息)
List<PoliceFinger> fingerList = policeFingerService.list(new LambdaQueryWrapper<PoliceFinger>()
.eq(PoliceFinger::getPoliceId, policeman.getId()));
if (fingerList.size()!=0){
policeFingerService.removeBatchByIds(fingerList);
}
//人脸信息删除
policeman.setFaceInfo(null);
//箱门进行解绑删除
cabinetBoxPoliceService.remove(new LambdaQueryWrapper<CabinetBoxPolice>()
.eq(CabinetBoxPolice::getPoliceId,policeman.getId()));
......@@ -731,19 +785,34 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
//查询该警员是否存在装备信息,如果存在则进行删除
List<PoliceEquipment> list1 = policeEquipmentService.list(eq);
//判断前端传递的装备列表字段是否为空,如果为空则表示该警员不拿走任何装备信息
if (ObjectUtil.isNull(req.getEqsList()) && req.getEqsList().trim().isEmpty()){
if (ObjectUtil.isNull(req.getDetailList()) || req.getDetailList().trim().isEmpty()){
if (list1.size()>0){
policeEquipmentService.remove(eq);
policemanService.removeBatchByIds(list1);
}
}else {//将该警员拿走的装备的组织机构设置为空,并且其他装备进行删除
} else {//将该警员拿走的装备的组织机构设置为空,并且其他装备进行跟警员进行解绑删除
List<PoliceEquipment> removeList=new ArrayList<>();
List<PoliceEquipment> updateList=new ArrayList<>();
List<PoliceEquipment> policeEquipments = JSON.parseArray(req.getEqsList(), PoliceEquipment.class);
List<PoliceEquipment> reqEquipments = JSON.parseArray(req.getDetailList(), PoliceEquipment.class);
List<Object[]> searchItem=new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("原组织机构为"+req.getOrgId()+"的警员"+req.getPoliceName()+"因调岗拿走以下装备:");
Integer inventoryQuantity=0;
Integer actualQuantity=0;
for (PoliceEquipment policeEquipment:list1) {
boolean flag=false;
for (PoliceEquipment one:policeEquipments) {
for (PoliceEquipment one:reqEquipments) {
if (policeEquipment.getSizeId().equals(one.getSizeId())
&& policeEquipment.getTypeId().equals(one.getTypeId())){
Object[] item=new Object[]{policeEquipment.getOrgId(),policeEquipment.getLocationId(),policeEquipment.getTypeId(),policeEquipment.getSizeId(),policeEquipment.getPrice(),one.getNum()};
searchItem.add(item);
stringBuilder.append("原有装备"+policeEquipment.getTypeName()+","+policeEquipment.getSizeName()+"数量为:"+policeEquipment.getNum()+",现拿走该物资,数量为:"+one.getNum()+",");
inventoryQuantity+=policeEquipment.getNum();
actualQuantity+=one.getNum();
policeEquipment.setNum(one.getNum());
policeEquipment.setOrgId(null);
policeEquipment.setLocationId(null);
updateList.add(policeEquipment);
flag=true;
break;
......@@ -755,8 +824,39 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
}
policeEquipmentService.updateBatchById(updateList);
policeEquipmentService.removeBatchByIds(removeList);
//记录日志(如果警员拿走装备,则进行记录 )
OrderLog orderLog = new OrderLog();
orderLog.setHistoryMsg(stringBuilder.toString());
orderLog.setOrgId(req.getOrgId());
orderLog.setBussinessType(req.getReassignmentType());
orderLog.setOrderCode(req.getOrderCode());
orderLog.setOrderId(req.getId());
orderLog.setOrgName(req.getOrgName());
orderLog.setInventoryQuantity(inventoryQuantity);
orderLog.setActualQuantity(actualQuantity);
orderLog.setCreateTime(DateTimeUtil.getCurrentDateTime());
orderLogService.save(orderLog);
//修改库存数量
List<InventorySummary> inventorySummaryList = inventorySummaryMapper.selectSumByItems(searchItem);
List<InventorySummary> updateSummaryList=new ArrayList<>();
for (InventorySummary is:inventorySummaryList) {
for ( Object[] one: searchItem) {
if (is.getLocationId().equals(one[1]) && is.getTypeId().equals(one[2])
&& is.getSizeId().equals(one[3]) && is.getUnitPrice().compareTo(new BigDecimal(one[4].toString()))==0){
is.setOutboundNumber(is.getOutboundNumber()-Integer.parseInt(one[5].toString()));
is.setNumber(is.getNumber()-Integer.parseInt(one[5].toString()));
updateSummaryList.add(is);
break;
}
}
}
if (updateSummaryList.size()>0){
inventorySummaryService.updateBatchById(updateSummaryList);
}
}
}
return updateById(policeman);
......@@ -765,10 +865,34 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
//获取警员下面的装备
@Override
public List<PoliceEquipment> GetPoliceEqs(QueryReassignmentReq req) {
LambdaQueryWrapper<PoliceEquipment> eq = new LambdaQueryWrapper<PoliceEquipment>()
.eq(PoliceEquipment::getPoliceId, req.getPoliceId());
LambdaQueryWrapper<PoliceEquipment> eq = new LambdaQueryWrapper<PoliceEquipment>();
if (ObjectUtil.isNotNull(req.getPoliceId() )&& ! req.getPoliceId().trim().isEmpty()){
Policeman policeman = policemanService.PoliceExist(req.getPoliceId());
eq.eq(PoliceEquipment::getPoliceId, policeman.getId());
return policeEquipmentService.list(eq);
}else {
if (ObjectUtil.isNotNull(req.getUserId() )&& ! req.getUserId().trim().isEmpty()){
//(如果传其他不是数据库字段参数或者排序规则不是deac或者asc可能会出现错误)
if (ObjectUtil.isNotNull(req.getColumn()) && !req.getColumn().trim().isEmpty() &&
(req.getOrder().equalsIgnoreCase("desc") || req.getOrder().equalsIgnoreCase("asc"))
&& ObjectUtil.isNotNull(req.getOrder())&& !req.getOrder().trim().isEmpty()){
req.setColumn(req.getColumn().replaceAll("[A-Z]","_$0").toLowerCase());
req.setOrder(req.getOrder().toLowerCase());
}
Policeman one = policemanService.getOne(new LambdaQueryWrapper<Policeman>().eq(Policeman::getUserId, req.getUserId()));
eq.eq(PoliceEquipment::getPoliceId, one.getId())
.like(ObjectUtil.isNotNull(req.getTypeName()),PoliceEquipment::getTypeName,req.getTypeName())
.like(ObjectUtil.isNotNull(req.getSizeName()),PoliceEquipment::getSizeName,req.getSizeName())
.last("order by "+req.getColumn()+ " "+req.getOrder());
return policeEquipmentService.list(eq);
}
else {
throw new ServiceException(CabinetExceptionEnum.PARAMETER_ERROR);
}
}
}
@Override
......@@ -837,7 +961,7 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
startProcessInstanceDTO.setOrderType("reassigment");
startProcessInstanceDTO.setUserId(req.getUserId());
startProcessInstanceDTO.setBussinessType(req.getBussinessType());
startProcessInstanceDTO.setReassigmentType(req.getReassigmentType());
startProcessInstanceDTO.setReassignmentType(req.getReassignmentType());
String ProcessInstanceId= FlowInstanceService.startProcessInstanceById(startProcessInstanceDTO);
reassignment.setProcessId(ProcessInstanceId);
String assigns= FlowInstanceService.GetNextAssign(ProcessInstanceId);//这里需要手动更新审核人信息
......@@ -861,8 +985,10 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
}
LambdaQueryWrapper<Reassignment> eq = new LambdaQueryWrapper<Reassignment>()
.eq(ObjectUtil.isNotNull(req.getOrgId()), Reassignment::getOrgId, req.getOrgId())
.eq(ObjectUtil.isNotNull(req.getReassignmentType()),Reassignment::getReassignmentType,req.getReassignmentType())
.eq(ObjectUtil.isNotNull(req.getExamineState()) && !req.getExamineState().trim().isEmpty(), Reassignment::getExamineState, req.getExamineState())
.like(ObjectUtil.isNotNull(req.getPoliceName()), Reassignment::getPoliceName, req.getPoliceName())
.like(ObjectUtil.isNotNull(req.getTypeName()),Reassignment::getInvList,req.getTypeName())
.ge(ObjectUtil.isNotNull(req.getStartTime()), Reassignment::getApplyTime, req.getStartTime())
.le(ObjectUtil.isNotNull(req.getEndTime()), Reassignment::getApplyTime, req.getEndTime())
.last("order by " + req.getColumn() + " " + req.getOrder());
......@@ -931,7 +1057,14 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
//获取所有没有组织机构的警员信息
@Override
public List<Policeman> GetPoliceWithoutOrg() {
return list(new LambdaQueryWrapper<Policeman>().isNull(Policeman::getOrgId));
List<Policeman> list = list(new LambdaQueryWrapper<Policeman>().isNull(Policeman::getOrgId));
List<Policeman> collect = list.stream()
.peek(policeman -> {
List<PoliceEquipment> list1 = policeEquipmentService.list(
new LambdaQueryWrapper<PoliceEquipment>().eq(PoliceEquipment::getPoliceId, policeman.getId()));
policeman.setPoliceEquipmentList(list1);
}).collect(Collectors.toList());
return collect;
}
//添加人脸和指纹照片或修改
......
......@@ -467,12 +467,14 @@
</foreach>
</select>
<select id="selectEqsByItem" resultType="com.junmp.jyzb.entity.Inventory">
select * from base_inventory where
select * from base_inventory where (
<foreach collection="list" item="item" separator="or">
(
location_state = 'in' AND state = 'normal' AND 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]}
location_state = 'in' AND state = 'normal' AND 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]}
)
</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
......
......@@ -283,9 +283,11 @@
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[2]} AND size_id = '${item[3]}' 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>
<select id="getByOrgId" resultType="com.junmp.jyzb.api.bean.dto.TjDto.TjOrgEqsDto"
parameterType="java.lang.Long">
......
......@@ -81,7 +81,10 @@
<if test="req.orderState !=null and req.orderState != ''">
and order_state = #{req.orderState}
</if>
<if test="req.examineState !=null and req.examineState != ''">
<if test=" req.examineState=='unaudited'">
and examine_state in('none','working')
</if>
<if test="req.examineState !=null and req.examineState != '' and req.examineState!='unaudited'">
and examine_state = #{req.examineState}
</if>
<if test="req.startTime != null and req.startTime != ''">
......
......@@ -251,7 +251,7 @@ WHERE o.org_id IN
<select id="selectUserBypoliceIds" resultType="com.junmp.jyzb.api.bean.dto.PolicemanDto">
select b.* FROM(
select
su.user_id,su.account,su.status_flag as state,suo.org_id,p.id,p.name,p.cabinet_box_id,p.police_code,
su.user_id,su.account,su.status_flag as state,suo.org_id,p.id,p.name,p.police_code,
p.face_info,p.password,p.photo,p.phone,p.id_card,p.identity,su.create_time,p.hk_face_device
FROM sys_user su
join sys_user_org suo on su.user_id=suo.user_id and suo.org_id=#{orgId}
......@@ -290,7 +290,7 @@ WHERE o.org_id IN
select count(*) from(
select b.* FROM
(select
su.user_id,su.account,su.status_flag as state,suo.org_id,p.id,p.name,p.cabinet_box_id,p.police_code,p.face_info,p.password,p.photo,p.phone,p.id_card,p.identity,p.hk_face_device
su.user_id,su.account,su.status_flag as state,suo.org_id,p.id,p.name,p.police_code,p.face_info,p.password,p.photo,p.phone,p.id_card,p.identity,p.hk_face_device
FROM sys_user su
join sys_user_org suo on su.user_id=suo.user_id and suo.org_id=#{orgId}
left join base_policeman p on p.user_id=su.user_id
......
......@@ -4,23 +4,28 @@ import com.junmp.junmpProcess.common.utils.ResponseResult;
import com.junmp.junmpProcess.dto.ApplyDTO;
import com.junmp.junmpProcess.dto.HandleDataDTO;
import com.junmp.junmpProcess.dto.TaskDTO;
import com.junmp.junmpProcess.service.IFlowInstanceService;
import com.junmp.junmpProcess.service.IFlowTaskService;
import com.junmp.junmpProcess.service.QuickSuggestionsService;
import com.junmp.junmpProcess.vo.HistoryProcessInstanceVO;
import com.junmp.junmpProcess.vo.RecordVO;
import com.junmp.junmpProcess.vo.TaskDetailVO;
import com.junmp.junmpProcess.vo.TaskVO;
import com.junmp.jyzb.api.bean.dto.QuickSuggestionsDto;
import com.junmp.jyzb.api.bean.query.QueryQuickSuggestionsReq;
import com.junmp.jyzb.api.bean.req.UpdateQuickSuggestionsReq;
import com.junmp.v2.common.bean.request.ValidationApi;
import com.junmp.v2.common.bean.response.ApiRes;
import com.junmp.v2.db.api.page.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
......@@ -30,6 +35,10 @@ import java.util.List;
public class FlowTaskController {
@Autowired
private IFlowTaskService FlowTaskService;
@Resource
private QuickSuggestionsService quickSuggestionsService;
@ApiOperation("同意按钮")
@PostMapping("agree")
public ResponseResult agree(@RequestBody HandleDataDTO handleDataDTO){
......@@ -67,4 +76,23 @@ public class FlowTaskController {
return FlowTaskService.record(handleDataDTO.getProcessInstanceId());
}
//添加快选意见
@ApiOperation("添加快选意见")
@PostMapping("addQuickSuggestions")
public ApiRes<Long> addQuickSuggestions(@RequestBody @Validated(ValidationApi.add.class) UpdateQuickSuggestionsReq req){
return ApiRes.success(quickSuggestionsService.addQuickSuggestions(req));
}
//删除快选意见
@ApiOperation("删除快选意见")
@PostMapping("delQuickSuggestions")
public ApiRes<Boolean> delQuickSuggestions(@RequestBody @Validated(ValidationApi.delete.class) UpdateQuickSuggestionsReq req){
return ApiRes.success(quickSuggestionsService.delQuickSuggestions(req));
}
//查询快选意见
@ApiOperation("查询快选意见")
@PostMapping("showQuickSuggestions")
public ApiRes<List<QuickSuggestionsDto>> showQuickSuggestions(@RequestBody @Validated(ValidationApi.detail.class)QueryQuickSuggestionsReq req){
return ApiRes.success(quickSuggestionsService.showQuickSuggestions(req));
}
}
......@@ -35,6 +35,6 @@ public class StartProcessInstanceDTO {
private String outInState;
//调岗类型,调入还是调出
private Integer reassigmentType;
private String reassignmentType;
}
package com.junmp.junmpProcess.entity;
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;
import lombok.Data;
/**
* 快选意见表(审核流审批时的意见表)
* @TableName flw_quick_suggestions
*/
@TableName(value ="flw_quick_suggestions")
@Data
public class QuickSuggestions implements Serializable {
/**
* id
*/
private Long id;
/**
* 用户id
*/
@TableField(value = "user_id")
private Long userId;
/**
* 审批意见
*/
@TableField(value = "text")
private String text;
/**
* 应用场景(1为审批时使用)
*/
@TableField(value = "use_type")
private Integer useType;
/**
* 创建时间
*/
@TableField(value = "create_time")
private Date createTime;
/**
* 更新时间
*/
@TableField(value = "update_time")
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.junmp.junmpProcess.mapper;
import com.junmp.junmpProcess.entity.QuickSuggestions;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author lxh专属坐骑
* @description 针对表【flw_quick_suggestions(快选意见表(审核流审批时的意见表))】的数据库操作Mapper
* @createDate 2023-11-27 13:28:59
* @Entity com.junmp.junmpProcess.entity.QuickSuggestions
*/
public interface QuickSuggestionsMapper extends BaseMapper<QuickSuggestions> {
}
package com.junmp.junmpProcess.service;
import com.junmp.junmpProcess.entity.QuickSuggestions;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junmp.jyzb.api.bean.dto.QuickSuggestionsDto;
import com.junmp.jyzb.api.bean.query.QueryQuickSuggestionsReq;
import com.junmp.jyzb.api.bean.req.UpdateQuickSuggestionsReq;
import java.util.List;
/**
* @author lxh专属坐骑
* @description 针对表【flw_quick_suggestions(快选意见表(审核流审批时的意见表))】的数据库操作Service
* @createDate 2023-11-27 13:28:59
*/
public interface QuickSuggestionsService extends IService<QuickSuggestions> {
Long addQuickSuggestions(UpdateQuickSuggestionsReq req);
boolean delQuickSuggestions(UpdateQuickSuggestionsReq req);
List<QuickSuggestionsDto> showQuickSuggestions(QueryQuickSuggestionsReq req);
}
......@@ -719,6 +719,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskDetailVO.setSignImage(comment1.getFullMessage());
}
}
String s = new String(comments.get(0).getFullMessage().getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
System.out.println("s = " + s);
taskDetailVO.setComment(new String(comments.get(0).getFullMessage().getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8));
taskDetailVO.setAttachmentVOList(attachmentVOList);
taskDetailVOS.add(taskDetailVO);
......
package com.junmp.junmpProcess.service.impl;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.junmpProcess.entity.QuickSuggestions;
import com.junmp.junmpProcess.service.QuickSuggestionsService;
import com.junmp.junmpProcess.mapper.QuickSuggestionsMapper;
import com.junmp.junmpProcess.utils.DateTimeUtil;
import com.junmp.jyzb.api.bean.dto.QuickSuggestionsDto;
import com.junmp.jyzb.api.bean.query.QueryQuickSuggestionsReq;
import com.junmp.jyzb.api.bean.req.UpdateQuickSuggestionsReq;
import com.junmp.v2.common.util.BeanPlusUtil;
import org.joda.time.DateTimeUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author lxh专属坐骑
* @description 针对表【flw_quick_suggestions(快选意见表(审核流审批时的意见表))】的数据库操作Service实现
* @createDate 2023-11-27 13:28:59
*/
@Service
public class QuickSuggestionsServiceImpl extends ServiceImpl<QuickSuggestionsMapper, QuickSuggestions>
implements QuickSuggestionsService{
//新增
@Override
public Long addQuickSuggestions(UpdateQuickSuggestionsReq req) {
QuickSuggestions quickSuggestions = new QuickSuggestions();
BeanPlusUtil.copyProperties(req,quickSuggestions);
quickSuggestions.setCreateTime(DateTimeUtil.getCurrentDateTime());
save(quickSuggestions);
return quickSuggestions.getId();
}
//删除
@Override
public boolean delQuickSuggestions(UpdateQuickSuggestionsReq req) {
return removeById(req.getId());
}
//查询
@Override
public List<QuickSuggestionsDto> showQuickSuggestions(QueryQuickSuggestionsReq req) {
List<QuickSuggestions> list = list(new LambdaQueryWrapper<QuickSuggestions>()
.eq(QuickSuggestions::getUserId, req.getUserId()));
List<QuickSuggestionsDto> collect = list.stream().map(quickSuggestions -> {
QuickSuggestionsDto quickSuggestionsDto = new QuickSuggestionsDto();
BeanPlusUtil.copyProperties(quickSuggestions, quickSuggestionsDto);
return quickSuggestionsDto;
}).collect(Collectors.toList());
return collect;
}
}
package com.junmp.junmpProcess.utils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class DateTimeUtil {
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static Date getCurrentDateTime() {
Date currentDate = new Date();
String dateString = DATE_FORMAT.format(currentDate);
try {
return DATE_FORMAT.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
public static List<Map<String,Object>> timeSort(List<Map<String,Object>> allPoliceman) {
Collections.sort(allPoliceman, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
Date updateTime1 = (Date) o1.get("updateTime");
Date updateTime2 = (Date) o2.get("updateTime");
return updateTime2.compareTo(updateTime1);
}
});
return allPoliceman;
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.junmp.junmpProcess.mapper.QuickSuggestionsMapper">
<resultMap id="BaseResultMap" type="com.junmp.junmpProcess.entity.QuickSuggestions">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="userId" column="user_id" jdbcType="BIGINT"/>
<result property="text" column="text" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,user_id,text,
create_time,update_time
</sql>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论