设备入库,变更,销毁等修改,自定义汇总统修改

zyy_db
anthonywj 2 years ago
parent 5fad9e2835
commit 77525665e9

@ -19,6 +19,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
//设置允许的方法
.allowedMethods("*")
//跨域允许时间
.maxAge(3600);
.maxAge(3600)
;
}
}

@ -12,6 +12,7 @@ import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity;
import com.glxp.api.req.dev.DeviceChangeOrderDetailQuery;
import com.glxp.api.req.dev.DeviceChangeOrderParam;
import com.glxp.api.req.dev.DeviceChangeOrderQuery;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.service.dev.DeviceChangeOrderService;
import com.glxp.api.vo.dev.DeviceChangeOrderVo;
@ -51,6 +52,21 @@ public class DeviceChangeOrderController extends BaseController {
return ResultVOUtils.success(simpleResponse);
}
/**
* 稿
*
* @param param
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/udi/device/changeOrder/draft/save")
public BaseResponse draftSave(@RequestBody @Valid DeviceChangeOrderParam param) {
AuthAdmin user = super.getUser();
deviceChangeOrderService.saveDraftOrder(user, param);
return ResultVOUtils.successMsg("添加成功");
}
/**
*
*
@ -65,6 +81,20 @@ public class DeviceChangeOrderController extends BaseController {
return ResultVOUtils.successMsg("添加成功");
}
/**
*
*
* @param deleteRequest
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/udi/device/changeOrder/del")
public BaseResponse delOrder(@RequestBody DeleteRequest deleteRequest) {
deviceChangeOrderService.delOrder(deleteRequest);
return ResultVOUtils.successMsg("删除成功!");
}
/**
*
*

@ -6,9 +6,13 @@ import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.inout.*;
import com.glxp.api.req.inout.FilterStatDataDetailRequest;
import com.glxp.api.req.inout.FilterStatDataRequest;
import com.glxp.api.res.inout.IoStatOrderResponse;
import com.glxp.api.service.inout.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.regexp.RE;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@ -42,8 +46,8 @@ public class IoStatDataController {
*/
@GetMapping("/udiwms/inout/stat/filter")
public BaseResponse filterList(FilterStatDataRequest statDataRequest) {
List<IoStatOrderEntity> list = statOrderService.filterList(statDataRequest);
PageInfo<IoStatOrderEntity> pageInfo = new PageInfo<>(list);
List<IoStatOrderResponse> list = statOrderService.filterList(statDataRequest);
PageInfo<IoStatOrderResponse> pageInfo = new PageInfo<>(list);
return ResultVOUtils.page(pageInfo);
}
@ -113,4 +117,16 @@ public class IoStatDataController {
return ResultVOUtils.page(pageInfo);
}
/**
*
*
* @param statDataDetailRequest
* @return
*/
@PostMapping("/udiwms/inout/detail/custom/create")
public BaseResponse crateCustomStat(@RequestBody FilterStatDataDetailRequest statDataDetailRequest) {
return statDetailService.createCustomStat(statDataDetailRequest);
}
}

@ -0,0 +1,16 @@
package com.glxp.api.dao.inout;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inout.IoOrderSkPrescribeEntity;
import com.glxp.api.req.inout.FilterOrderDetailBizRequest;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface IoOrderSkPrescribeMapper extends BaseMapper<IoOrderSkPrescribeEntity> {
List<IoOrderDetailBizResponse> filterList(FilterOrderDetailBizRequest orderDetailBizRequest);
}

@ -3,6 +3,7 @@ package com.glxp.api.dao.inout;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inout.IoStatOrderEntity;
import com.glxp.api.req.inout.FilterStatDataRequest;
import com.glxp.api.res.inout.IoStatOrderResponse;
import java.util.List;
@ -14,6 +15,6 @@ public interface IoStatOrderDao extends BaseMapper<IoStatOrderEntity> {
* @param statDataRequest
* @return
*/
List<IoStatOrderEntity> filterList(FilterStatDataRequest statDataRequest);
List<IoStatOrderResponse> filterList(FilterStatDataRequest statDataRequest);
}
}

@ -0,0 +1,155 @@
package com.glxp.api.entity.inout;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.Data;
/**
*
*/
@ApiModel(value="com-glxp-api-entity-inout-IoOrderSkPrescribe")
@Data
@TableName(value = "io_order_sk_prescribe")
public class IoOrderSkPrescribeEntity implements Serializable {
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="")
private Long id;
/**
*
*/
@TableField(value = "pId")
@ApiModelProperty(value="项目组套外键")
private Long pId;
/**
*
*/
@TableField(value = "sickerCode")
@ApiModelProperty(value="患者编码")
private String sickerCode;
/**
*
*/
@TableField(value = "prescribeCode")
@ApiModelProperty(value="处方编码")
private String prescribeCode;
/**
* id
*/
@TableField(value = "relId")
@ApiModelProperty(value="耗材产品id")
private Long relId;
/**
*
*/
@TableField(value = "thrName")
@ApiModelProperty(value="耗材名称")
private String thrName;
/**
*
*/
@TableField(value = "thrCode")
@ApiModelProperty(value="耗材编码")
private String thrCode;
/**
*
*/
@TableField(value = "measureCount")
@ApiModelProperty(value="计量数量")
private String measureCount;
/**
*
*/
@TableField(value = "measureUnit")
@ApiModelProperty(value="计量单位")
private String measureUnit;
/**
*
*/
@TableField(value = "category")
@ApiModelProperty(value="类别")
private String category;
/**
*
*/
@TableField(value = "frequency")
@ApiModelProperty(value="频率")
private String frequency;
/**
*
*/
@TableField(value = "`count`")
@ApiModelProperty(value="数量")
private Integer count;
/**
*
*/
@TableField(value = "price")
@ApiModelProperty(value="价格")
private BigDecimal price;
/**
*
*/
@TableField(value = "ggxh")
@ApiModelProperty(value="规格型号")
private String ggxh;
/**
*
*/
@TableField(value = "remark")
@ApiModelProperty(value="备注")
private String remark;
@TableField(value = "nameCode")
@ApiModelProperty(value="")
private String nameCode;
/**
*
*/
@TableField(value = "amount")
@ApiModelProperty(value="总金额")
private BigDecimal amount;
/**
*
*/
@TableField(value = "adNum")
@ApiModelProperty(value="住院号")
private String adNum;
/**
*
*/
@TableField(value = "realCount")
@ApiModelProperty(value="实际数量")
private String realCount;
/**
*
*/
@TableField(value = "realPrice")
@ApiModelProperty(value="实际价格")
private BigDecimal realPrice;
private static final long serialVersionUID = 1L;
}

@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
@ApiModel(value = "com-glxp-api-entity-inout-IoStatDetail")
@ -59,14 +61,14 @@ public class IoStatDetailEntity implements Serializable {
*/
@TableField(value = "batchNo")
@ApiModelProperty(value = "批次号")
private Integer batchNo;
private String batchNo;
/**
*
*/
@TableField(value = "inCount")
@ApiModelProperty(value = "入库数量")
private String inCount;
private Integer inCount;
/**
*
@ -80,14 +82,14 @@ public class IoStatDetailEntity implements Serializable {
*/
@TableField(value = "inAmount")
@ApiModelProperty(value = "入库金额")
private String inAmount;
private BigDecimal inAmount;
/**
*
*/
@TableField(value = "outCount")
@ApiModelProperty(value = "出库数量")
private String outCount;
private Integer outCount;
/**
*
@ -101,14 +103,14 @@ public class IoStatDetailEntity implements Serializable {
*/
@TableField(value = "outAmount")
@ApiModelProperty(value = "出库金额")
private String outAmount;
private BigDecimal outAmount;
/**
*
*/
@TableField(value = "balanceCount")
@ApiModelProperty(value = "结余数量")
private String balanceCount;
private Integer balanceCount;
/**
*
@ -122,7 +124,7 @@ public class IoStatDetailEntity implements Serializable {
*/
@TableField(value = "balanceAmount")
@ApiModelProperty(value = "结余金额")
private String balanceAmount;
private BigDecimal balanceAmount;
/**
*
@ -152,5 +154,9 @@ public class IoStatDetailEntity implements Serializable {
@ApiModelProperty(value = "仓库")
private String invCode;
@TableField(exist = false)
private String invName;
private static final long serialVersionUID = 1L;
}

@ -74,4 +74,18 @@ public class IoStatOrderEntity {
@TableField(value = "endDate")
private Date endDate;
/**
* 12.3
*/
@TableField(value = "status")
private Integer status;
/**
* 12.
*/
@TableField(value = "statType")
private Integer statType;
}

@ -10,7 +10,7 @@ import lombok.Getter;
@Getter
@AllArgsConstructor
public enum DeviceChangeStatusEnum {
DRAFT("draft", "草稿"),
WAIT_CONFIRM("wait_confirm", "待目标部门确认"),
REJECT_CONFIRM("reject_confirm", "目标部门拒绝"),
FINISH("finish", "已完成"),

@ -29,6 +29,7 @@ import com.glxp.api.res.thrsys.UdiwmsWarehouseDetail;
import com.glxp.api.service.thrsys.ThrSystemService;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -122,10 +123,9 @@ public class ErpBasicClient {
BaseResponse<PageSimpleResponse<BasicSkSickerResponse>> listBaseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse<PageSimpleResponse<BasicSkSickerResponse>>>() {
});
return listBaseResponse;
} catch (Exception e) {
log.error("获取患者信息异常", e);
log.error("获取患者信息异常" + ExceptionUtils.getStackTrace(e));
return ResultVOUtils.error(500, "连接第三方系统接口服务出错");
}
}

@ -2,6 +2,8 @@ package com.glxp.api.req.dev;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.dev.DeviceChangeOrderEntity;
import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity;
@ -50,6 +52,63 @@ public class DeviceChangeOrderParam {
@NotEmpty(message = "明细不能为空")
List<Item> items;
/**
*
*/
@TableId(value = "orderId")
private Long orderId;
/**
* 1. 2.() 3.4.
*/
private DeviceChangeStatusEnum status;
/**
*
*/
private String deptCode;
/**
* id
*/
private Long confirmUser;
/**
*
*/
private String confirmUserName;
/**
*
*/
private LocalDateTime confirmTime;
/**
*
*/
private String confirmRemark;
/**
*
*/
@TableField(value = "createUserName")
private String createUserName;
/**
* id
*/
@TableField(value = "createUser")
private Long createUser;
/**
*
*/
@TableField(value = "createTime")
private LocalDateTime createTime;
@Data
public static class Item {
/**
@ -90,6 +149,14 @@ public class DeviceChangeOrderParam {
*
*/
private LocalDate expireDate;
private String ggxh;
private String manufactory;
private String measname;
private String nameCode;
private String productName;
private String zczbhhzbapzbh;
}
public void valid(AuthAdmin user) {
@ -117,6 +184,12 @@ public class DeviceChangeOrderParam {
public DeviceChangeOrderEntity getOrderEntity(AuthAdmin user) {
if (orderId != null) {
DeviceChangeOrderEntity deviceChangeOrderEntity = new DeviceChangeOrderEntity();
BeanUtil.copyProperties(this, deviceChangeOrderEntity);
return deviceChangeOrderEntity;
}
DeviceChangeOrderEntity order = DeviceChangeOrderEntity.builder()
.orderId(SnowflakeUtil.getId())
.type(type)
@ -152,4 +225,13 @@ public class DeviceChangeOrderParam {
}).collect(Collectors.toList());
}
public List<DeviceChangeOrderItemEntity> getDraftOrderItemList(Long orderId, AuthAdmin user) {
return items.stream().map(i -> {
DeviceChangeOrderItemEntity itemEntity = new DeviceChangeOrderItemEntity();
BeanUtil.copyProperties(i, itemEntity);
itemEntity.setOrderId(orderId);
return itemEntity;
}).collect(Collectors.toList());
}
}

@ -3,6 +3,8 @@ package com.glxp.api.req.inout;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
import java.util.Date;
/**
*
*/
@ -30,4 +32,14 @@ public class FilterStatDataDetailRequest extends ListPageRequest {
*
*/
private String ggxh;
private String startDate;
private String endDate;
private String invCode;
private String remark;
private Integer statType;
}

@ -13,4 +13,5 @@ public class DeleteRequest {
List<String> billNos;
Integer dlType; //1:同步任务2下载记录
String invoiceEncode;
Long orderId;
}

@ -0,0 +1,104 @@
package com.glxp.api.res.inout;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class IoOrderSkPrescribeResponse {
private Long id;
/**
*
*/
private Long pId;
/**
*
*/
private String sickerCode;
/**
*
*/
private String prescribeCode;
/**
* id
*/
private Long relId;
/**
*
*/
private String thrName;
/**
*
*/
private String thrCode;
/**
*
*/
private String measureCount;
/**
*
*/
private String measureUnit;
/**
*
*/
private String category;
/**
*
*/
private String frequency;
/**
*
*/
private Integer count;
/**
*
*/
private BigDecimal price;
/**
*
*/
private String ggxh;
/**
*
*/
private String remark;
private String nameCode;
/**
*
*/
private BigDecimal amount;
/**
*
*/
private String adNum;
/**
*
*/
private String realCount;
/**
*
*/
private BigDecimal realPrice;
}

@ -60,6 +60,9 @@ public class IoStatOrderResponse {
*
*/
private String invName;
private String startDate;
private String endDate;
private Integer status;
private Integer statType;
}

@ -104,6 +104,7 @@ public class BasicSkSickerService extends ServiceImpl<BasicSkSickerMapper, Basic
break;
}
} else {
log.error("下载异常中断");
return ResultVOUtils.error(500, "下载异常中断");
}
}

@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* device_change_order_item()Service
* device_change_order_item()Service
*/
public interface DeviceChangeOrderItemService extends IService<DeviceChangeOrderItemEntity> {
List<DeviceChangeOrderItemEntity> ListByOrderId(Long orderId);
boolean deleteByOrderId(Long orderId);
}

@ -7,18 +7,31 @@ import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity;
import com.glxp.api.req.dev.DeviceChangeOrderDetailQuery;
import com.glxp.api.req.dev.DeviceChangeOrderParam;
import com.glxp.api.req.dev.DeviceChangeOrderQuery;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.vo.dev.DeviceChangeOrderVo;
import java.util.List;
/**
* device_change_order()Service
* device_change_order()Service
*/
public interface DeviceChangeOrderService extends IService<DeviceChangeOrderEntity> {
List<DeviceChangeOrderVo> listByVo(DeviceChangeOrderQuery query, AuthAdmin user);
/**
* 稿
*
* @param user
* @param param
*/
void saveDraftOrder(AuthAdmin user, DeviceChangeOrderParam param);
void delOrder(DeleteRequest deleteRequest);
/**
*
*

@ -94,4 +94,6 @@ public interface DeviceInfoService extends IService<DeviceInfoEntity> {
List<DeviceInfoVo> listVoByProductIdAndStatus(Long productId, DeviceStatusEnum status);
List<DeviceInfoVo> listVoByCodes(List<String> deviceCodes, String deptCode, DeviceStatusEnum status);
boolean exitOrder(Long orderId, String deviceCode);
}

@ -1,5 +1,6 @@
package com.glxp.api.service.dev.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity;
@ -22,6 +23,11 @@ public class DeviceChangeOrderItemServiceImpl extends ServiceImpl<DeviceChangeOr
.eq(DeviceChangeOrderItemEntity::getOrderId, orderId)
);
}
@Override
public boolean deleteByOrderId(Long orderId) {
return super.remove(new QueryWrapper<DeviceChangeOrderItemEntity>().eq("orderId", orderId));
}
}

@ -2,6 +2,7 @@ package com.glxp.api.service.dev.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
@ -21,6 +22,7 @@ import com.glxp.api.req.basic.ProductInfoFilterRequest;
import com.glxp.api.req.dev.DeviceChangeOrderDetailQuery;
import com.glxp.api.req.dev.DeviceChangeOrderParam;
import com.glxp.api.req.dev.DeviceChangeOrderQuery;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.service.auth.DeptService;
import com.glxp.api.service.basic.ProductInfoService;
@ -62,6 +64,18 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
}
@Override
public void saveDraftOrder(AuthAdmin user, DeviceChangeOrderParam param) {
param.valid(user);
DeviceChangeOrderEntity order = param.getOrderEntity(user);
order.setStatus(DeviceChangeStatusEnum.DRAFT);
super.saveOrUpdate(order);
deviceChangeOrderItemService.deleteByOrderId(order.getOrderId());
List<DeviceChangeOrderItemEntity> orderItems = param.getDraftOrderItemList(order.getOrderId(), user);
deviceChangeOrderItemService.saveBatch(orderItems);
}
@Override
@Transactional
public void saveOrder(AuthAdmin user, DeviceChangeOrderParam param) {
@ -104,8 +118,12 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
deviceInfoEntity.setDeptCode(order.getToDeptCode());
deviceInfoEntity.setStatus(DeviceStatusEnum.NORMAL);
deviceInfoEntity.setLastChangeOrderId(order.getOrderId());
boolean b = deviceInfoService.exitOrder(order.getOrderId(), deviceInfoEntity.getDeviceCode());
if (b) {
throw new JsonException(500, String.format("设备编码%s已存在请更换编码", deviceInfoEntity.getDeviceCode()));
}
try {
deviceInfoService.save(deviceInfoEntity);
deviceInfoService.saveOrUpdate(deviceInfoEntity);
} catch (Exception e) {
throw new JsonException(500, String.format("设备编码%s已存在请更换编码", deviceInfoEntity.getDeviceCode()));
}
@ -134,10 +152,26 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
if (CollectionUtil.isNotEmpty(logs)) {
deviceChangeLogService.saveBatch(logs);
}
super.save(order);
order.setStatus(DeviceChangeStatusEnum.WAIT_CONFIRM);
if (order.getType() == DeviceChangeTypeEnum.ADD || order.getType() == DeviceChangeTypeEnum.DESTROY) {
order.setStatus(DeviceChangeStatusEnum.FINISH)
.setConfirmTime(order.getCreateTime())
.setConfirmUser(order.getCreateUser())
.setConfirmUserName(order.getCreateUserName())
;
}
super.saveOrUpdate(order);
deviceChangeOrderItemService.deleteByOrderId(order.getOrderId());
deviceChangeOrderItemService.saveBatch(orderItems);
}
@Override
@Transactional
public void delOrder(DeleteRequest deleteRequest) {
super.remove(new QueryWrapper<DeviceChangeOrderEntity>().eq("orderId", deleteRequest.getOrderId()));
deviceChangeOrderItemService.deleteByOrderId(deleteRequest.getOrderId());
}
@Override
@Transactional
public void confirm(Long orderId, String remark, AuthAdmin user, boolean isReject) {

@ -1,5 +1,6 @@
package com.glxp.api.service.dev.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
@ -174,6 +175,11 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
List<DeviceInfoVo> list = super.baseMapper.listVoByCodes(deviceCodes, deptCode, status);
return list;
}
@Override
public boolean exitOrder(Long orderId, String deviceCode) {
return super.baseMapper.exists(new QueryWrapper<DeviceInfoEntity>().eq("deviceCode", deviceCode).ne("lastChangeOrderId", orderId));
}
}

@ -0,0 +1,10 @@
package com.glxp.api.service.inout;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.glxp.api.entity.inout.IoOrderSkPrescribeEntity;
import com.glxp.api.dao.inout.IoOrderSkPrescribeMapper;
@Service
public class IoOrderSkPrescribeService extends ServiceImpl<IoOrderSkPrescribeMapper, IoOrderSkPrescribeEntity> {
}

@ -1,22 +1,53 @@
package com.glxp.api.service.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.inout.*;
import com.glxp.api.entity.inout.IoStatDayEntity;
import com.glxp.api.entity.inout.IoStatDetailEntity;
import com.glxp.api.entity.inout.IoStatMonthEntity;
import com.glxp.api.entity.inout.IoStatOrderEntity;
import com.glxp.api.req.inout.FilterStatDataDetailRequest;
import com.glxp.api.res.inv.IoOrderDetailStatRsponse;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.MsDateUtil;
import com.glxp.api.util.OrderNoTypeBean;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.TransactionIsolationLevel;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.glxp.api.dao.inout.IoStatDetailMapper;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Slf4j
@Service
public class IoStatDetailService extends ServiceImpl<IoStatDetailMapper, IoStatDetailEntity> {
@Resource
IoStatDetailMapper statDetailMapper;
@Resource
private IoStatOrderDao statOrderDao;
@Resource
private GennerOrderUtils gennerOrderUtils;
public List<IoStatDetailEntity> filterList(FilterStatDataDetailRequest statDataDetailRequest) {
if (null == statDataDetailRequest) {
@ -31,6 +62,174 @@ public class IoStatDetailService extends ServiceImpl<IoStatDetailMapper, IoStatD
public List<IoStatDetailEntity> filterListByRecordKey(String recordKey) {
return statDetailMapper.filterListByRecordKey(recordKey);
}
@Resource
private IoOrderDao orderDao;
@Resource
private IoOrderDetailResultDao ioOrderDetailResultDao;
@Resource
private SqlSessionFactory sqlSessionFactory;
/**
*
*/
public BaseResponse<String> createCustomStat(FilterStatDataDetailRequest detailRequest) {
//1.判断是否存在相同汇总
Boolean b = statOrderDao.exists(new QueryWrapper<IoStatOrderEntity>()
.eq(StrUtil.isNotEmpty(detailRequest.getInvCode()), "invCode", detailRequest.getInvCode())
.eq("startDate", detailRequest.getStartDate())
.eq("endDate", detailRequest.getEndDate())
.eq("statType", detailRequest.getStatType())
);
if (b) {
return ResultVOUtils.error(500, "已存在相同出入库明细汇总!");
}
IoStatOrderEntity statOrderEntity = new IoStatOrderEntity();
OrderNoTypeBean orderNoTypeBean = new OrderNoTypeBean("STATC", "yyyyMMdd");
String orderNo = gennerOrderUtils.createStatOrderNo(orderNoTypeBean);
statOrderEntity.setRecordKey(orderNo);
statOrderEntity.setStartDate(MsDateUtil.parseDate(detailRequest.getStartDate()));
statOrderEntity.setEndDate(MsDateUtil.parseDate(detailRequest.getEndDate()));
statOrderEntity.setUpdateTime(new Date());
statOrderEntity.setStatus(1);
statOrderEntity.setType(4);
statOrderEntity.setStatType(detailRequest.getStatType());
statOrderEntity.setInvCode(detailRequest.getInvCode());
statOrderEntity.setRemark(detailRequest.getRemark());
statOrderDao.insert(statOrderEntity);
ThreadUtil.execAsync(() -> {
try {
List<IoStatDetailEntity> dataList = new ArrayList<>();
List<String> orderIdFkList = orderDao.selectOrderfirstAndLastIdList(
detailRequest.getStartDate(),
detailRequest.getEndDate());
List<IoOrderDetailStatRsponse> orderDetailResultEntities = new ArrayList<>();
if (orderIdFkList.size() > 0) {
orderDetailResultEntities = ioOrderDetailResultDao.selectStatDataByTime(orderIdFkList);
if (CollUtil.isNotEmpty(orderDetailResultEntities)) {
orderDetailResultEntities.forEach(orderDetailResultEntity -> {
IoStatDetailEntity statData = getStatData(detailRequest.getStatType(), dataList, orderDetailResultEntity);
if (orderDetailResultEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
//入库
statData.setInCount(orderDetailResultEntity.getReCount() + statData.getInCount());
if (null != orderDetailResultEntity.getPrice()) {
BigDecimal inAmount = orderDetailResultEntity.getPrice().multiply(BigDecimal.valueOf(orderDetailResultEntity.getReCount()));
statData.setInAmount(inAmount.add(statData.getInAmount()));
}
} else if (orderDetailResultEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
//出库
statData.setOutCount(orderDetailResultEntity.getReCount() + statData.getOutCount());
if (null != orderDetailResultEntity.getPrice()) {
BigDecimal outAmount = orderDetailResultEntity.getPrice().multiply(BigDecimal.valueOf(orderDetailResultEntity.getReCount()));
statData.setOutAmount(outAmount.add(statData.getOutAmount()));
}
}
statData.setBalanceCount(IntUtil.value(statData.getBalanceCount()) + statData.getInCount() - statData.getOutCount());
if (statData.getBalanceAmount() == null) {
statData.setBalanceAmount(new BigDecimal(0));
}
statData.setBalanceAmount(statData.getBalanceAmount().add(statData.getInAmount()).subtract(statData.getOutAmount()));
statData.setBalancePrice(statData.getOutPrice());
}
);
}
}
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED);
IoStatDetailMapper mapper = sqlSession.getMapper(IoStatDetailMapper.class);
dataList.forEach(statDetailEntity -> {
statDetailEntity.setUpdateTime(new Date());
statDetailEntity.setRecordKeyFk(orderNo);
//计算结余数据
statDetailEntity.setBalanceCount(statDetailEntity.getInCount() - statDetailEntity.getOutCount());
statDetailEntity.setBalanceAmount(statDetailEntity.getInAmount().subtract(statDetailEntity.getOutAmount()));
mapper.insert(statDetailEntity);
});
sqlSession.commit();
sqlSession.close();
statOrderEntity.setStatus(2);
statOrderDao.updateById(statOrderEntity);
} catch (Exception e) {
log.error(ExceptionUtils.getStackTrace(e));
statOrderEntity.setStatus(3);
statOrderDao.updateById(statOrderEntity);
}
});
return ResultVOUtils.success("后台正在生成,请稍后刷新!");
}
private IoStatDetailEntity getStatData(Integer statType, List<IoStatDetailEntity> dataList, IoOrderDetailStatRsponse orderDetailResultEntity) {
if (CollUtil.isNotEmpty(dataList)) {
for (IoStatDetailEntity statDayEntity : dataList) {
if (IntUtil.value(statType) == 1) {
if (statDayEntity.getRelIdFk().equals(orderDetailResultEntity.getBindRlFk()) && statDayEntity.getInvCode().equals(orderDetailResultEntity.getInvCode())) {
return statDayEntity;
}
} else {
if (statDayEntity.getRelIdFk().equals(orderDetailResultEntity.getBindRlFk()) && statDayEntity.getInvCode().equals(orderDetailResultEntity.getInvCode())) {
if ((StrUtil.isNotBlank(statDayEntity.getBatchNo()) && StrUtil.isNotBlank(orderDetailResultEntity.getBatchNo())) && statDayEntity.getBatchNo().equals(orderDetailResultEntity.getBatchNo())) {
return statDayEntity;
} else if (StrUtil.isBlank(statDayEntity.getBatchNo()) && StrUtil.isBlank(orderDetailResultEntity.getBatchNo())) {
return statDayEntity;
}
}
}
}
}
IoStatDetailEntity statData = new IoStatDetailEntity();
statData.setInvCode(orderDetailResultEntity.getInvCode());
statData.setDeptCode(orderDetailResultEntity.getDeptCode());
statData.setRelIdFk(String.valueOf(orderDetailResultEntity.getBindRlFk()));
statData.setNameCode(orderDetailResultEntity.getNameCode());
statData.setProductName(orderDetailResultEntity.getCoName());
statData.setGgxh(orderDetailResultEntity.getSpec());
statData.setBatchNo(orderDetailResultEntity.getBatchNo());
//设置结余价格
statData.setBalancePrice(orderDetailResultEntity.getPrice());
//设置初始化出入库数量和价格
statData.setInCount(0);
statData.setInPrice(null == orderDetailResultEntity.getPrice() ? BigDecimal.ZERO : orderDetailResultEntity.getPrice());
statData.setInAmount(BigDecimal.ZERO);
statData.setOutCount(0);
statData.setOutPrice(null == orderDetailResultEntity.getPrice() ? BigDecimal.ZERO : orderDetailResultEntity.getPrice());
statData.setOutAmount(BigDecimal.ZERO);
dataList.add(statData);
return statData;
}
/**
*
*
* @param ioOrderDetailResultEntity
* @param lastMonth
* @return
*/
private Wrapper<IoStatMonthEntity> buildQueryWrapper(IoOrderDetailStatRsponse ioOrderDetailResultEntity, DateTime lastMonth) {
QueryWrapper<IoStatMonthEntity> wrapper = new QueryWrapper<>();
if (lastMonth.monthBaseOne() == 1) {
//当前汇总的记录为1月上一月份的时间取前一年的12月
wrapper.eq("year", lastMonth.year() - 1)
.eq("month", 12);
} else {
wrapper.eq("year", lastMonth.year())
.eq("month", lastMonth.monthBaseOne() - 1);//取上上月的数据
}
wrapper.eq("relIdFk", ioOrderDetailResultEntity.getBindRlFk());
wrapper.eq(StrUtil.isNotBlank(ioOrderDetailResultEntity.getDeptCode()), "deptCode", ioOrderDetailResultEntity.getDeptCode());
wrapper.eq(StrUtil.isNotBlank(ioOrderDetailResultEntity.getBatchNo()), "batchNo", ioOrderDetailResultEntity.getBatchNo());
wrapper.eq(StrUtil.isNotBlank(ioOrderDetailResultEntity.getNameCode()), "nameCode", ioOrderDetailResultEntity.getNameCode())
.eq(StrUtil.isNotBlank(ioOrderDetailResultEntity.getNameCode()), "invCode", ioOrderDetailResultEntity.getInvCode());
return wrapper;
}
}

@ -2,6 +2,7 @@ package com.glxp.api.service.inout;
import com.glxp.api.entity.inout.IoStatOrderEntity;
import com.glxp.api.req.inout.FilterStatDataRequest;
import com.glxp.api.res.inout.IoStatOrderResponse;
import java.util.List;
@ -16,5 +17,5 @@ public interface IoStatOrderService {
* @param statDataRequest
* @return
*/
List<IoStatOrderEntity> filterList(FilterStatDataRequest statDataRequest);
List<IoStatOrderResponse> filterList(FilterStatDataRequest statDataRequest);
}

@ -1,11 +1,5 @@
package com.glxp.api.service.inout.impl;
/**
* @author : zhangsan
* @date : 2023/4/17 11:13
* @modyified By :
*/
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@ -43,6 +37,8 @@ public class ExcelServiceImpl implements ExcelService {
@Resource
private IoStatYearService statYearService;
@Resource
private IoStatDetailService statDetailService;
/**
* excel-sheet
@ -71,9 +67,9 @@ public class ExcelServiceImpl implements ExcelService {
* @param response
*/
@Override
public void excelExport(HttpServletResponse response, String billNo,String key) {
public void excelExport(HttpServletResponse response, String billNo, String key) {
try {
List<ExcelVO> excelVOS = structureDate(billNo,key);
List<ExcelVO> excelVOS = structureDate(billNo, key);
excelHandler.exportExcel(response, excelVOS, ExcelVO.class, "excel导出-单et", "excel导出heet");
} catch (Exception e) {
throw new RenException("导出失败");
@ -103,10 +99,10 @@ public class ExcelServiceImpl implements ExcelService {
objList.add(new ExcelVO());
objList.add(new ExcelVO());
List<List<Object>> resultList = excelHandler.importExcelsByIndex(multipartFile, objList, 6, indexList);
System.out.println("resultList="+resultList.size());
resultList.forEach(vo->{
System.out.println("resultList=" + resultList.size());
resultList.forEach(vo -> {
List<ExcelVO> voList = JSON.parseArray(JSON.toJSONString(vo), ExcelVO.class);
System.out.println("voList="+voList.size()+"条数据");
System.out.println("voList=" + voList.size() + "条数据");
});
} catch (Exception e) {
throw new RenException("导入失败");
@ -187,102 +183,122 @@ public class ExcelServiceImpl implements ExcelService {
*
* @return
*/
private List<ExcelVO> structureDate(String billNo ,String key) {
private List<ExcelVO> structureDate(String billNo, String key) {
List<ExcelVO> list = new ArrayList<>();
if("day".equals(key)){
List<IoStatDayEntity> ioStatDayEntities = statDayService.filterListByRecordKey(billNo);
for (int i=0; i < ioStatDayEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i+1);
vo.setProductName(ioStatDayEntities.get(i).getProductName());
vo.setGgxh(ioStatDayEntities.get(i).getGgxh());
vo.setDeptName(ioStatDayEntities.get(i).getDeptName());
vo.setBatchNo(ioStatDayEntities.get(i).getBatchNo());
vo.setBeginCount(ioStatDayEntities.get(i).getBeginCount());
vo.setBeginPrice(ioStatDayEntities.get(i).getBeginPrice());
vo.setBeginAmount(ioStatDayEntities.get(i).getBeginAmount());
vo.setInCount(ioStatDayEntities.get(i).getInCount());
vo.setInPrice(ioStatDayEntities.get(i).getInPrice());
vo.setInAmount(ioStatDayEntities.get(i).getInAmount());
vo.setOutCount(ioStatDayEntities.get(i).getOutCount());
vo.setOutPrice(ioStatDayEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatDayEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatDayEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatDayEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatDayEntities.get(i).getBalanceAmount());
list.add(vo);
}
}else if("month".equals(key)){
List<IoStatMonthEntity> ioStatMonthEntities = statMonthService.filterListByRecordKey(billNo);
for (int i=0; i < ioStatMonthEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i+1);
vo.setProductName(ioStatMonthEntities.get(i).getProductName());
vo.setGgxh(ioStatMonthEntities.get(i).getGgxh());
vo.setBatchNo(ioStatMonthEntities.get(i).getBatchNo());
vo.setDeptName(ioStatMonthEntities.get(i).getDeptName());
vo.setBeginCount(ioStatMonthEntities.get(i).getBeginCount());
vo.setBeginPrice(ioStatMonthEntities.get(i).getBeginPrice());
vo.setBeginAmount(ioStatMonthEntities.get(i).getBeginAmount());
vo.setInCount(ioStatMonthEntities.get(i).getInCount());
vo.setInPrice(ioStatMonthEntities.get(i).getInPrice());
vo.setInAmount(ioStatMonthEntities.get(i).getInAmount());
vo.setOutCount(ioStatMonthEntities.get(i).getOutCount());
vo.setOutPrice(ioStatMonthEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatMonthEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatMonthEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatMonthEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatMonthEntities.get(i).getBalanceAmount());
list.add(vo);
}
}else if("quarter".equals(key)){
List<IoStatQuarterEntity> ioStatQuarterEntities = statQuarterService.filterListByRecordKey(billNo);
for (int i=0; i < ioStatQuarterEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i+1);
vo.setProductName(ioStatQuarterEntities.get(i).getProductName());
vo.setGgxh(ioStatQuarterEntities.get(i).getGgxh());
vo.setBatchNo(ioStatQuarterEntities.get(i).getBatchNo());
vo.setDeptName(ioStatQuarterEntities.get(i).getDeptName());
vo.setBeginCount(ioStatQuarterEntities.get(i).getBeginCount());
vo.setBeginPrice(ioStatQuarterEntities.get(i).getBeginPrice());
vo.setBeginAmount(ioStatQuarterEntities.get(i).getBeginAmount());
vo.setInCount(ioStatQuarterEntities.get(i).getInCount());
vo.setInPrice(ioStatQuarterEntities.get(i).getInPrice());
vo.setInAmount(ioStatQuarterEntities.get(i).getInAmount());
vo.setOutCount(ioStatQuarterEntities.get(i).getOutCount());
vo.setOutPrice(ioStatQuarterEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatQuarterEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatQuarterEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatQuarterEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatQuarterEntities.get(i).getBalanceAmount());
list.add(vo);
}
}else{
List<IoStatYearEntity> ioStatYearEntities = statYearService.filterListByRecordKey(billNo);
for (int i=0; i < ioStatYearEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i+1);
vo.setProductName(ioStatYearEntities.get(i).getProductName());
vo.setGgxh(ioStatYearEntities.get(i).getGgxh());
vo.setBatchNo(ioStatYearEntities.get(i).getBatchNo());
vo.setDeptName(ioStatYearEntities.get(i).getDeptName());
vo.setBeginCount(ioStatYearEntities.get(i).getBeginCount());
vo.setBeginPrice(ioStatYearEntities.get(i).getBeginPrice());
vo.setBeginAmount(ioStatYearEntities.get(i).getBeginAmount());
vo.setInCount(ioStatYearEntities.get(i).getInCount());
vo.setInPrice(ioStatYearEntities.get(i).getInPrice());
vo.setInAmount(ioStatYearEntities.get(i).getInAmount());
vo.setOutCount(ioStatYearEntities.get(i).getOutCount());
vo.setOutPrice(ioStatYearEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatYearEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatYearEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatYearEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatYearEntities.get(i).getBalanceAmount());
list.add(vo);
}
if ("day".equals(key)) {
List<IoStatDayEntity> ioStatDayEntities = statDayService.filterListByRecordKey(billNo);
for (int i = 0; i < ioStatDayEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i + 1);
vo.setProductName(ioStatDayEntities.get(i).getProductName());
vo.setGgxh(ioStatDayEntities.get(i).getGgxh());
vo.setDeptName(ioStatDayEntities.get(i).getDeptName());
vo.setBatchNo(ioStatDayEntities.get(i).getBatchNo());
vo.setBeginCount(ioStatDayEntities.get(i).getBeginCount());
vo.setBeginPrice(ioStatDayEntities.get(i).getBeginPrice());
vo.setBeginAmount(ioStatDayEntities.get(i).getBeginAmount());
vo.setInCount(ioStatDayEntities.get(i).getInCount());
vo.setInPrice(ioStatDayEntities.get(i).getInPrice());
vo.setInAmount(ioStatDayEntities.get(i).getInAmount());
vo.setOutCount(ioStatDayEntities.get(i).getOutCount());
vo.setOutPrice(ioStatDayEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatDayEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatDayEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatDayEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatDayEntities.get(i).getBalanceAmount());
list.add(vo);
}
} else if ("month".equals(key)) {
List<IoStatMonthEntity> ioStatMonthEntities = statMonthService.filterListByRecordKey(billNo);
for (int i = 0; i < ioStatMonthEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i + 1);
vo.setProductName(ioStatMonthEntities.get(i).getProductName());
vo.setGgxh(ioStatMonthEntities.get(i).getGgxh());
vo.setBatchNo(ioStatMonthEntities.get(i).getBatchNo());
vo.setDeptName(ioStatMonthEntities.get(i).getDeptName());
vo.setBeginCount(ioStatMonthEntities.get(i).getBeginCount());
vo.setBeginPrice(ioStatMonthEntities.get(i).getBeginPrice());
vo.setBeginAmount(ioStatMonthEntities.get(i).getBeginAmount());
vo.setInCount(ioStatMonthEntities.get(i).getInCount());
vo.setInPrice(ioStatMonthEntities.get(i).getInPrice());
vo.setInAmount(ioStatMonthEntities.get(i).getInAmount());
vo.setOutCount(ioStatMonthEntities.get(i).getOutCount());
vo.setOutPrice(ioStatMonthEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatMonthEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatMonthEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatMonthEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatMonthEntities.get(i).getBalanceAmount());
list.add(vo);
}
} else if ("quarter".equals(key)) {
List<IoStatQuarterEntity> ioStatQuarterEntities = statQuarterService.filterListByRecordKey(billNo);
for (int i = 0; i < ioStatQuarterEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i + 1);
vo.setProductName(ioStatQuarterEntities.get(i).getProductName());
vo.setGgxh(ioStatQuarterEntities.get(i).getGgxh());
vo.setBatchNo(ioStatQuarterEntities.get(i).getBatchNo());
vo.setDeptName(ioStatQuarterEntities.get(i).getDeptName());
vo.setBeginCount(ioStatQuarterEntities.get(i).getBeginCount());
vo.setBeginPrice(ioStatQuarterEntities.get(i).getBeginPrice());
vo.setBeginAmount(ioStatQuarterEntities.get(i).getBeginAmount());
vo.setInCount(ioStatQuarterEntities.get(i).getInCount());
vo.setInPrice(ioStatQuarterEntities.get(i).getInPrice());
vo.setInAmount(ioStatQuarterEntities.get(i).getInAmount());
vo.setOutCount(ioStatQuarterEntities.get(i).getOutCount());
vo.setOutPrice(ioStatQuarterEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatQuarterEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatQuarterEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatQuarterEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatQuarterEntities.get(i).getBalanceAmount());
list.add(vo);
}
} else if (key.equals("year")) {
List<IoStatYearEntity> ioStatYearEntities = statYearService.filterListByRecordKey(billNo);
for (int i = 0; i < ioStatYearEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i + 1);
vo.setProductName(ioStatYearEntities.get(i).getProductName());
vo.setGgxh(ioStatYearEntities.get(i).getGgxh());
vo.setBatchNo(ioStatYearEntities.get(i).getBatchNo());
vo.setDeptName(ioStatYearEntities.get(i).getDeptName());
vo.setBeginCount(ioStatYearEntities.get(i).getBeginCount());
vo.setBeginPrice(ioStatYearEntities.get(i).getBeginPrice());
vo.setBeginAmount(ioStatYearEntities.get(i).getBeginAmount());
vo.setInCount(ioStatYearEntities.get(i).getInCount());
vo.setInPrice(ioStatYearEntities.get(i).getInPrice());
vo.setInAmount(ioStatYearEntities.get(i).getInAmount());
vo.setOutCount(ioStatYearEntities.get(i).getOutCount());
vo.setOutPrice(ioStatYearEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatYearEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatYearEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatYearEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatYearEntities.get(i).getBalanceAmount());
list.add(vo);
}
} else if (key.equals("custom")) {
List<IoStatDetailEntity> ioStatYearEntities = statDetailService.filterListByRecordKey(billNo);
for (int i = 0; i < ioStatYearEntities.size(); i++) {
ExcelVO vo = new ExcelVO();
vo.setId(i + 1);
vo.setProductName(ioStatYearEntities.get(i).getProductName());
vo.setGgxh(ioStatYearEntities.get(i).getGgxh());
vo.setBatchNo(ioStatYearEntities.get(i).getBatchNo());
vo.setDeptName(ioStatYearEntities.get(i).getInvName());
vo.setInCount(ioStatYearEntities.get(i).getInCount());
vo.setInPrice(ioStatYearEntities.get(i).getInPrice());
vo.setInAmount(ioStatYearEntities.get(i).getInAmount());
vo.setOutCount(ioStatYearEntities.get(i).getOutCount());
vo.setOutPrice(ioStatYearEntities.get(i).getOutPrice());
vo.setOutAmount(ioStatYearEntities.get(i).getOutAmount());
vo.setBalanceCount(ioStatYearEntities.get(i).getBalanceCount());
vo.setBalancePrice(ioStatYearEntities.get(i).getBalancePrice());
vo.setBalanceAmount(ioStatYearEntities.get(i).getBalanceAmount());
list.add(vo);
}
}
return list;
}
}

@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.inout.IoStatOrderDao;
import com.glxp.api.entity.inout.IoStatOrderEntity;
import com.glxp.api.req.inout.FilterStatDataRequest;
import com.glxp.api.res.inout.IoStatOrderResponse;
import com.glxp.api.service.inout.IoStatOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -22,7 +23,7 @@ public class IoStatOrderServiceImpl implements IoStatOrderService {
private IoStatOrderDao statOrderDao;
@Override
public List<IoStatOrderEntity> filterList(FilterStatDataRequest statDataRequest) {
public List<IoStatOrderResponse> filterList(FilterStatDataRequest statDataRequest) {
if (null == statDataRequest) {
return Collections.emptyList();
}

@ -2,8 +2,12 @@ package com.glxp.api.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.jfree.util.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
@ -19,6 +23,7 @@ import java.util.concurrent.TimeUnit;
*
* @author zjjlive@dist.com.cn
*/
@Slf4j
@Component
public class RedisUtil {
@ -102,11 +107,15 @@ public class RedisUtil {
}
public Integer getInt(String key) {
if (key == null)
return 0;
Object value = redisTemplate.opsForValue().get(key);
if (value != null) {
return IntUtil.value((String) value);
try {
if (key == null)
return 0;
Object value = redisTemplate.opsForValue().get(key);
if (value != null) {
return IntUtil.value((Integer) value);
}
} catch (Exception e) {
log.error(ExceptionUtils.getStackTrace(e));
}
return 0;
}

@ -4,7 +4,7 @@ server:
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_ct?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_pzh?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
hikari:

@ -0,0 +1,34 @@
<?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.glxp.api.dao.inout.IoOrderSkPrescribeMapper">
<resultMap id="BaseResultMap" type="com.glxp.api.entity.inout.IoOrderSkPrescribeEntity">
<!--@mbg.generated-->
<!--@Table io_order_sk_prescribe-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="pId" jdbcType="BIGINT" property="pId" />
<result column="sickerCode" jdbcType="VARCHAR" property="sickerCode" />
<result column="prescribeCode" jdbcType="VARCHAR" property="prescribeCode" />
<result column="relId" jdbcType="BIGINT" property="relId" />
<result column="thrName" jdbcType="VARCHAR" property="thrName" />
<result column="thrCode" jdbcType="VARCHAR" property="thrCode" />
<result column="measureCount" jdbcType="VARCHAR" property="measureCount" />
<result column="measureUnit" jdbcType="VARCHAR" property="measureUnit" />
<result column="category" jdbcType="VARCHAR" property="category" />
<result column="frequency" jdbcType="VARCHAR" property="frequency" />
<result column="count" jdbcType="INTEGER" property="count" />
<result column="price" jdbcType="DECIMAL" property="price" />
<result column="ggxh" jdbcType="VARCHAR" property="ggxh" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="nameCode" jdbcType="VARCHAR" property="nameCode" />
<result column="amount" jdbcType="DECIMAL" property="amount" />
<result column="adNum" jdbcType="VARCHAR" property="adNum" />
<result column="realCount" jdbcType="VARCHAR" property="realCount" />
<result column="realPrice" jdbcType="DECIMAL" property="realPrice" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, pId, sickerCode, prescribeCode, relId, thrName, thrCode, measureCount, measureUnit,
category, frequency, `count`, price, ggxh, remark, nameCode, amount, adNum, realCount,
realPrice
</sql>
</mapper>

@ -33,7 +33,7 @@
</sql>
<select id="filterList" resultType="com.glxp.api.entity.inout.IoStatDetailEntity">
select *, (SELECT NAME FROM auth_dept WHERE io_stat_detail.deptCode = auth_dept.CODE) deptName
select *, (SELECT NAME FROM auth_warehouse WHERE io_stat_detail.invCode = auth_warehouse.code) invName
from io_stat_detail
<where>
<if test="recordKey != null and recordKey != ''">
@ -52,7 +52,7 @@
</select>
<select id="filterListByRecordKey" resultType="com.glxp.api.entity.inout.IoStatDetailEntity">
select *, (SELECT NAME FROM auth_dept WHERE io_stat_detail.deptCode = auth_dept.CODE) deptName
select *, (SELECT NAME FROM auth_warehouse WHERE io_stat_detail.invCode = auth_warehouse.code) invName
from io_stat_detail
where recordKeyFk = #{recordKey}
</select>

@ -175,3 +175,36 @@ CALL Pro_Temp_ColumnWork('basic_sk_prescribe_item_detail', 'pId', 'varchar(255)'
CALL Pro_Temp_ColumnWork('basic_sk_prescribe_item_detail', 'updateTime', 'datetime', 1);
CREATE TABLE IF NOT EXISTS `io_stat_detail`
(
`id` int NOT NULL AUTO_INCREMENT,
`recordKeyFk` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '汇总记录号',
`relIdFk` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物资编码主键',
`nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '产品DI',
`productName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '产品名称',
`ggxh` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '规格型号',
`batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号',
`inCount` int NULL DEFAULT NULL COMMENT '入库数量',
`inPrice` decimal(10, 3) NULL DEFAULT NULL COMMENT '入库价格',
`inAmount` decimal(10, 3) NULL DEFAULT NULL COMMENT '入库金额',
`outCount` int NULL DEFAULT NULL COMMENT '出库数量',
`outPrice` decimal(10, 3) NULL DEFAULT NULL COMMENT '出库价格',
`outAmount` decimal(10, 3) NULL DEFAULT NULL COMMENT '出库金额',
`balanceCount` int NULL DEFAULT NULL COMMENT '结余数量',
`balancePrice` decimal(10, 3) NULL DEFAULT NULL COMMENT '结余价格',
`balanceAmount` decimal(10, 3) NULL DEFAULT NULL COMMENT '结余金额',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
`updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门',
`invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '仓库',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci
ROW_FORMAT = Dynamic;
CALL Pro_Temp_ColumnWork('io_stat_order', 'startDate', 'datetime', 1);
CALL Pro_Temp_ColumnWork('io_stat_order', 'endDate', 'datetime', 1);
CALL Pro_Temp_ColumnWork('io_stat_order', 'status', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('io_stat_order', 'statType', 'tinyint', 1);

Loading…
Cancel
Save