南网数据推送

This commit is contained in:
sxu 2024-08-08 17:37:05 +08:00
parent 7c210bb1cb
commit 1a3aae6ac0
10 changed files with 502 additions and 0 deletions

View File

@ -240,6 +240,12 @@ public class MaMachine extends BaseEntity {
@ApiModelProperty(value = "1二维码绑定标识 2rfid绑定标识")
private Integer flag;
@ApiModelProperty(value = "数据来源0新购 1盘点 2数据推送")
private Integer souceBy;
@ApiModelProperty(value = "数据推送id")
private Integer dataReceiveId;
/** 导出选中列表 */
private List<Long> dataCondition;

View File

@ -0,0 +1,99 @@
package com.bonus.sgzb.base.controller;
import cn.hutool.core.collection.CollUtil;
import com.bonus.sgzb.base.domain.DataReceiveDetail;
import com.bonus.sgzb.base.domain.DataReceiveInfo;
import com.bonus.sgzb.base.service.MaReceiveService;
import com.bonus.sgzb.common.core.utils.poi.ExcelUtil;
import com.bonus.sgzb.common.core.web.controller.BaseController;
import com.bonus.sgzb.common.core.web.domain.AjaxResult;
import com.bonus.sgzb.common.core.web.page.TableDataInfo;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @Authorliang.chao
* @Date2024/7/24 - 10:47
*/
@RestController
@RequestMapping("/receive")
public class MaReceiveController extends BaseController {
@Resource
private MaReceiveService maReceiveService;
/**
* 数据推送接收
*/
@ApiOperation(value = "获取推送数据")
@PostMapping("/dataReceive")
public AjaxResult getProjectInfoAll(@RequestBody List<DataReceiveDetail> dataReceiveDetails) {
if (CollUtil.isEmpty(dataReceiveDetails)) {
return AjaxResult.error("推送数据为空");
}
DataReceiveInfo dataReceiveInfo = new DataReceiveInfo();
dataReceiveInfo.setPushNum(dataReceiveDetails.size());
int id = maReceiveService.saveDataReceiveInfo(dataReceiveInfo);
if (id == 0) {
return AjaxResult.error("推送数据失败");
}
for (DataReceiveDetail dataReceiveDetail : dataReceiveDetails) {
dataReceiveDetail.setReceiveId(id);
maReceiveService.saveDataReceiveDetails(dataReceiveDetail);
}
return AjaxResult.success("数据推送成功");
}
@ApiOperation(value = "获取推送数据")
@GetMapping("/getDataReceive")
public TableDataInfo getDataReceive(DataReceiveInfo dataReceiveInfo) {
startPage();
List<DataReceiveInfo> list = maReceiveService.getDataReceive(dataReceiveInfo);
return getDataTable(list);
}
@ApiOperation(value = "导出推送数据")
@PostMapping("/export")
public void export(HttpServletResponse response, DataReceiveInfo dataReceiveInfo) {
List<DataReceiveInfo> list = maReceiveService.getDataReceive(dataReceiveInfo);
ExcelUtil<DataReceiveInfo> util = new ExcelUtil<>(DataReceiveInfo.class);
util.exportExcel(response, list, "推送数据列表");
}
@ApiOperation(value = "获取推送详情")
@GetMapping("/getDataReceiveDetails")
public TableDataInfo getDataReceiveDetails(DataReceiveDetail dataReceiveDetail) {
startPage();
List<DataReceiveDetail> dataReceiveDetails = maReceiveService.getDataReceiveDetails(dataReceiveDetail);
return getDataTable(dataReceiveDetails);
}
@ApiOperation(value = "数据接收")
@PostMapping("/saveMachine")
public AjaxResult saveMachine(@RequestBody DataReceiveInfo dataReceiveInfo) {
if (CollUtil.isEmpty(dataReceiveInfo.getDataReceiveDetailList())) {
return AjaxResult.error("接收数据为空");
}
int res = maReceiveService.saveMachine(dataReceiveInfo);
if (res == 0) {
return AjaxResult.error("接收失败");
} else {
return AjaxResult.success("接收成功");
}
}
@ApiOperation(value = "数据接收")
@GetMapping("/getDateReceiveMachine")
public TableDataInfo getDateReceiveMachine(DataReceiveDetail dataReceiveDetail) {
startPage();
List<DataReceiveDetail> dateReceiveMachine = maReceiveService.getDateReceiveMachine(dataReceiveDetail);
return getDataTable(dateReceiveMachine);
}
}

View File

@ -0,0 +1,88 @@
package com.bonus.sgzb.base.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Authorliang.chao
* @Date2024/7/24 - 10:53
*/
@Data
public class DataReceiveDetail {
@ApiModelProperty(value = "ID")
private Integer id;
@ApiModelProperty(value = "推送ID")
private Integer receiveId;
@ApiModelProperty(value = "机具类型id")
private Integer typeId;
@ApiModelProperty(value = "机具编码ID")
private Integer maId;
@ApiModelProperty(value = "机具编码")
private String maCode;
@ApiModelProperty(value = "机具名称")
private String machineName;
@ApiModelProperty(value = "机具类型")
private String typeName;
@ApiModelProperty(value = "机具类型")
private String modelName;
@ApiModelProperty(value = "机具状态")
private String maStatus;
@ApiModelProperty(value = "租赁日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date rentTime;
@ApiModelProperty(value = "租赁价格")
private String rentPrice;
@ApiModelProperty(value = "所属单位")
private Integer unitId;
@ApiModelProperty(value = "生产厂家")
private String supplier;
@ApiModelProperty(value = "出厂日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date outFactoryTime;
@ApiModelProperty(value = "是否新装备0 是 1否")
private Integer isNew;
@ApiModelProperty(value = "检验证编号")
private String checkCode;
@ApiModelProperty(value = "检验单位")
private String checkUnit;
@ApiModelProperty(value = "检验日期")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date checkDate;
@ApiModelProperty(value = "下次检验日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date nextCheckDate;
@ApiModelProperty(value = "机手姓名")
private String maUserName;
@ApiModelProperty(value = "关键字")
private String keyWord;
@ApiModelProperty(value = "状态0 未接收 1已接收")
private Integer status;
@ApiModelProperty(value = "数据来源0新购 1盘点 2数据推送")
private Integer souceBy;
}

View File

@ -0,0 +1,46 @@
package com.bonus.sgzb.base.domain;
import com.bonus.sgzb.common.core.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* @Authorliang.chao
* @Date2024/7/24 - 13:11
*/
@Data
public class DataReceiveInfo {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "接收状态0 未完成 1已完成")
@Excel(name = "接收状态", readConverterExp = "0=未完成,1=已完成")
private Integer receiveStatus;
@ApiModelProperty(value = "推送数量")
@Excel(name = "推送数量")
private Integer pushNum;
@ApiModelProperty(value = "接收数量")
@Excel(name = "接收数量")
private Integer receiveNum;
@ApiModelProperty(value = "接收日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "推送日期")
private Date receiveDate;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
private List<DataReceiveDetail> dataReceiveDetailList;
}

View File

@ -0,0 +1,28 @@
package com.bonus.sgzb.base.mapper;
import com.bonus.sgzb.base.domain.DataReceiveDetail;
import com.bonus.sgzb.base.domain.DataReceiveInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Authorliang.chao
* @Date2024/7/24 - 13:21
*/
@Mapper
public interface MaReceiveMapper {
int saveDataReceiveInfo(DataReceiveInfo dataReceiveInfo);
int saveDataReceiveDetails(DataReceiveDetail dataReceiveDetail);
List<DataReceiveInfo> getDataReceive(DataReceiveInfo dataReceiveInfo);
List<DataReceiveDetail> getDataReceiveDetails(DataReceiveDetail dataReceiveDetail);
List<DataReceiveDetail> getDataReceiveDetailsById(Integer receiveId);
int updateStatus(DataReceiveDetail dataReceiveDetail);
List<DataReceiveDetail> getDateReceiveMachine(DataReceiveDetail dataReceiveDetail);
int updateInfoStatus(Integer id);
}

View File

@ -1,5 +1,6 @@
package com.bonus.sgzb.base.mapper;
import com.bonus.sgzb.base.api.domain.MaMachine;
import com.bonus.sgzb.base.api.domain.MaType;
import com.bonus.sgzb.base.domain.MaPropSet;
import com.bonus.sgzb.base.domain.MaTypeKeeper;
@ -81,4 +82,6 @@ public interface MaTypeMapper {
int deleteKeeperByTypeId(Long typeId);
int deletePropSetByTypeId(Long typeId);
int updateTypeNum(MaMachine maMachine);
}

View File

@ -0,0 +1,23 @@
package com.bonus.sgzb.base.service;
import com.bonus.sgzb.base.domain.DataReceiveDetail;
import com.bonus.sgzb.base.domain.DataReceiveInfo;
import java.util.List;
/**
* @Authorliang.chao
* @Date2024/7/24 - 13:20
*/
public interface MaReceiveService {
int saveDataReceiveInfo(DataReceiveInfo dataReceiveInfo);
int saveDataReceiveDetails(DataReceiveDetail dataReceiveDetail);
List<DataReceiveInfo> getDataReceive(DataReceiveInfo dataReceiveInfo);
List<DataReceiveDetail> getDataReceiveDetails(DataReceiveDetail dataReceiveDetail);
int saveMachine(DataReceiveInfo dataReceiveInfo);
List<DataReceiveDetail> getDateReceiveMachine(DataReceiveDetail dataReceiveDetail);
}

View File

@ -0,0 +1,117 @@
package com.bonus.sgzb.base.service.impl;
import com.bonus.sgzb.base.api.domain.MaMachine;
import com.bonus.sgzb.base.domain.DataReceiveDetail;
import com.bonus.sgzb.base.domain.DataReceiveInfo;
import com.bonus.sgzb.base.mapper.MaMachineMapper;
import com.bonus.sgzb.base.mapper.MaReceiveMapper;
import com.bonus.sgzb.base.mapper.MaTypeMapper;
import com.bonus.sgzb.base.service.MaReceiveService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* @Authorliang.chao
* @Date2024/7/24 - 13:20
*/
@Service
public class MaReceiveServiceImpl implements MaReceiveService {
@Resource
private MaReceiveMapper maReceiveMapper;
@Resource
private MaMachineMapper maMachineMapper;
@Resource
private MaTypeMapper maTypeMapper;
@Override
@Transactional
public int saveDataReceiveInfo(DataReceiveInfo dataReceiveInfo) {
maReceiveMapper.saveDataReceiveInfo(dataReceiveInfo);
if (dataReceiveInfo.getId() != null) {
return dataReceiveInfo.getId();
} else {
return 0;
}
}
@Override
@Transactional
public int saveDataReceiveDetails(DataReceiveDetail dataReceiveDetail) {
int i = 0;
i = maReceiveMapper.saveDataReceiveDetails(dataReceiveDetail);
if (i == 0) {
throw new RuntimeException("保存失败");
}
return i;
}
@Override
public List<DataReceiveInfo> getDataReceive(DataReceiveInfo dataReceiveInfo) {
List<DataReceiveInfo> dataReceive = maReceiveMapper.getDataReceive(dataReceiveInfo);
for (DataReceiveInfo receiveInfo : dataReceive) {
List<DataReceiveDetail> dataReceiveDetails = maReceiveMapper.getDataReceiveDetailsById(receiveInfo.getId());
long num = dataReceiveDetails.stream()
.filter(t -> t.getStatus() == 1)
.count();
receiveInfo.setReceiveNum((int) num);
}
return dataReceive;
}
@Override
public List<DataReceiveDetail> getDataReceiveDetails(DataReceiveDetail dataReceiveDetail) {
return maReceiveMapper.getDataReceiveDetails(dataReceiveDetail);
}
@Override
public int saveMachine(DataReceiveInfo dataReceiveInfo) {
for (DataReceiveDetail dataReceiveDetail : dataReceiveInfo.getDataReceiveDetailList()) {
MaMachine maMachine = new MaMachine();
maMachine.setMaCode(dataReceiveDetail.getMaCode());
maMachine.setTypeId(dataReceiveDetail.getTypeId());
maMachine.setMaCode(dataReceiveDetail.getMaCode());
maMachine.setMaStatus("15");
maMachine.setCreateTime(new Date());
maMachine.setSouceBy(2);
maMachine.setDataReceiveId(dataReceiveInfo.getId());
// 添加机具
int i = maMachineMapper.maMachineAdd(maMachine);
if (i == 0) {
return i;
}
// 增加库存
int j = maTypeMapper.updateTypeNum(maMachine);
if (j == 0) {
return j;
}
// 修改状态为已接收
dataReceiveDetail.setMaId((int) maMachine.getMaId());
int k = maReceiveMapper.updateStatus(dataReceiveDetail);
if (k == 0) {
return k;
}
}
List<DataReceiveDetail> dataReceiveDetails = maReceiveMapper.getDataReceiveDetailsById(dataReceiveInfo.getId());
if (dataReceiveDetails.stream().allMatch(t -> t.getStatus() == 1)) {
int i = maReceiveMapper.updateInfoStatus(dataReceiveInfo.getId());
if (i == 0) {
return i;
}
}
return 1;
}
@Override
public List<DataReceiveDetail> getDateReceiveMachine(DataReceiveDetail dataReceiveDetail) {
List<DataReceiveDetail> dateReceiveMachine = maReceiveMapper.getDateReceiveMachine(dataReceiveDetail);
return dateReceiveMachine;
}
}

View File

@ -415,4 +415,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<update id="updateTypeNum">
update ma_type set num = IFNULL( num, 0 ) + 1 where type_id = #{typeId}
</update>
</mapper>

View File

@ -0,0 +1,88 @@
<?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.bonus.sgzb.base.mapper.MaReceiveMapper">
<insert id="saveDataReceiveInfo" keyProperty="id" useGeneratedKeys="true">
insert into data_receive_info(push_num,receive_date)
values(#{pushNum},now())
</insert>
<insert id="saveDataReceiveDetails">
insert into data_receive_detail(receive_id,check_code,check_unit,check_date,is_new,ma_code,ma_user_name,next_check_date,out_factory_time,rent_price,rent_time,supplier,type_id,unit_id)
values(#{receiveId},#{checkCode},#{checkUnit},#{checkDate},#{isNew},#{maCode},#{maUserName},#{nextCheckDate},#{outFactoryTime},#{rentPrice},#{rentTime},#{supplier},#{typeId},#{unitId})
</insert>
<update id="updateStatus">
UPDATE data_receive_detail
SET STATUS = 1,
ma_id = #{maId}
where receive_id = #{receiveId} and type_id = #{typeId}
AND ma_code = #{maCode}
</update>
<update id="updateInfoStatus">
UPDATE data_receive_info
SET receive_status = 1
where id = #{receiveId}
</update>
<select id="getDataReceive" resultType="com.bonus.sgzb.base.domain.DataReceiveInfo">
select * from data_receive_info where 1=1
<if test="receiveStatus != null">
AND receive_status = #{receiveStatus}
</if>
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND receive_date BETWEEN CONCAT(#{startTime}, ' 00:00:00') AND CONCAT(#{endTime}, ' 23:59:59')
</if>
</select>
<select id="getDataReceiveDetails" resultType="com.bonus.sgzb.base.domain.DataReceiveDetail">
SELECT
drd.*,
mt.type_name modelName,
mt1.type_name typeName,
mt2.type_name machineName
FROM
data_receive_detail drd
LEFT JOIN ma_type mt ON drd.type_id = mt.type_id
LEFT JOIN ma_type mt1 ON mt.parent_id = mt1.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt1.parent_id
WHERE
drd.receive_id = #{receiveId}
<if test="modelName != null and modelName != ''">
AND mt.type_name like concat('%', #{modelName}, '%')
</if>
<if test="typeName != null and typeName != ''">
AND mt1.type_name like concat('%', #{typeName}, '%')
</if>
<if test="machineName != null and machineName != ''">
AND mt2.type_name like concat('%', #{machineName}, '%')
</if>
<if test="keyWord != null and keyWord != ''">
AND (drd.ma_code like concat('%', #{keyWord}, '%') or
drd.check_code like concat('%', #{keyWord}, '%'))
</if>
</select>
<select id="getDateReceiveMachine" resultType="com.bonus.sgzb.base.domain.DataReceiveDetail">
SELECT
mm.ma_code maCode,
mt2.type_name machineName,
mt1.type_name typeName,
mt.type_name modelName,
drd.rent_time rentTime,
drd.check_date checkDate,
drd.next_check_date nextCheckDate,
mm.souce_by souceBy,
sd.NAME maStatus
FROM
data_receive_detail drd
LEFT JOIN ma_type mt ON drd.type_id = mt.type_id
LEFT JOIN ma_type mt1 ON mt.parent_id = mt1.type_id
LEFT JOIN ma_type mt2 ON mt1.parent_id = mt2.type_id
LEFT JOIN ma_machine mm ON drd.type_id = mm.type_id
LEFT JOIN sys_dic sd ON sd.id = mm.ma_status
WHERE
mm.souce_by = 2
</select>
<select id="getDataReceiveDetailsById" resultType="com.bonus.sgzb.base.domain.DataReceiveDetail">
SELECT * FROM data_receive_detail WHERE receive_id = #{receiveId}
</select>
</mapper>