Commit 2c159d8e authored by 廖旭伟's avatar 廖旭伟

测试bug修改以及小程序二维码功能

parent 5707431f
Pipeline #2974 canceled with stages
......@@ -107,3 +107,71 @@ CREATE TABLE mortals_xhx_app_config(
`updateTime` datetime COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用';
-- ----------------------------
-- 2025-06-11
-- ----------------------------
ALTER TABLE `mortals_xhx_datum_info_field`
ADD COLUMN `openId` varchar(64) DEFAULT NULL COMMENT '微信openid',
ADD COLUMN `mobile` varchar(64) DEFAULT NULL COMMENT '手机号码',
ADD COLUMN `datumPrintId` bigint(20) DEFAULT NULL COMMENT '填单打印id',
ADD COLUMN `matterId` bigint(20) DEFAULT NULL COMMENT '事项id',
ADD COLUMN `matterName` varchar(1024) DEFAULT NULL COMMENT '事项名称',
ADD COLUMN `materialId` bigint(20) DEFAULT NULL COMMENT '材料id',
ADD COLUMN `materialName` varchar(1024) DEFAULT NULL COMMENT '材料名称';
CREATE TABLE `mortals_xhx_user_fill_history` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`openId` varchar(64) DEFAULT NULL COMMENT '微信openid',
`idCard` varchar(64) DEFAULT NULL COMMENT '身份证号码',
`mobile` varchar(64) DEFAULT NULL COMMENT '手机号码',
`matterId` bigint(20) DEFAULT NULL COMMENT '事项id',
`matterName` varchar(1024) DEFAULT NULL COMMENT '事项名称',
`materialId` bigint(20) DEFAULT NULL COMMENT '材料id',
`materialName` varchar(1024) DEFAULT NULL COMMENT '材料名称',
`preViewPath` varchar(256) DEFAULT NULL COMMENT '预览地址',
`formContent` mediumtext COMMENT '提交的表单',
`docPath` varchar(256) DEFAULT NULL COMMENT '合成doc后地址',
`formValue` text COMMENT '表单值',
`createTime` datetime DEFAULT NULL COMMENT '创建时间',
`createUserId` bigint(20) DEFAULT NULL COMMENT '创建人id',
`updateTime` datetime DEFAULT NULL COMMENT '更新时间',
`updateUserId` bigint(20) DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`),
KEY `id` (`id`) USING BTREE,
KEY `openId` (`openId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='用户填单记录';
CREATE TABLE `mortals_xhx_search_history` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`openId` varchar(64) DEFAULT NULL COMMENT '微信openid',
`idCard` varchar(64) DEFAULT NULL COMMENT '身份证号码',
`mobile` varchar(64) DEFAULT NULL COMMENT '手机号码',
`content` varchar(256) DEFAULT NULL COMMENT '搜索内容',
`createTime` datetime DEFAULT NULL COMMENT '创建时间',
`createUserId` bigint(20) DEFAULT NULL COMMENT '创建人id',
`updateTime` datetime DEFAULT NULL COMMENT '更新时间',
`updateUserId` bigint(20) DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`),
KEY `id` (`id`) USING BTREE,
KEY `openId` (`openId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COMMENT='用户搜索历史记录';
-- ----------------------------
-- 材料填单二维码表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_datum_fill_qrcode`;
CREATE TABLE `mortals_xhx_datum_fill_qrcode` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`datumId` bigint(20)DEFAULT NULL COMMENT '材料id',
`qrcode` varchar(256) DEFAULT NULL COMMENT '二维码存储地址',
`remark` varchar(1024) DEFAULT NULL COMMENT '备注',
`createTime` datetime DEFAULT NULL COMMENT '创建时间',
`createUserId` bigint(20) DEFAULT NULL COMMENT '创建人id',
`updateTime` datetime DEFAULT NULL COMMENT '更新时间',
`updateUserId` bigint(20) DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`),
KEY `id` (`id`) USING BTREE,
KEY `datumId` (`datumId`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='材料填单二维码';
\ No newline at end of file
......@@ -4,6 +4,7 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException;
import lombok.extern.slf4j.Slf4j;
import javax.imageio.ImageIO;
......
package com.mortals.xhx.module.datum.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.datum.model.DatumFillQrcodeEntity;
import java.util.List;
/**
* 材料填单二维码Dao
* 材料填单二维码 DAO接口
*
* @author zxfei
* @date 2025-06-12
*/
public interface DatumFillQrcodeDao extends ICRUDDao<DatumFillQrcodeEntity,Long>{
}
package com.mortals.xhx.module.datum.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.datum.dao.DatumFillQrcodeDao;
import com.mortals.xhx.module.datum.model.DatumFillQrcodeEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 材料填单二维码DaoImpl DAO接口
*
* @author zxfei
* @date 2025-06-12
*/
@Repository("datumFillQrcodeDao")
public class DatumFillQrcodeDaoImpl extends BaseCRUDDaoMybatis<DatumFillQrcodeEntity,Long> implements DatumFillQrcodeDao {
}
package com.mortals.xhx.module.datum.model;
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.datum.model.vo.DatumFillQrcodeVo;
import lombok.Data;
/**
* 材料填单二维码实体对象
*
* @author zxfei
* @date 2025-06-12
*/
@Data
public class DatumFillQrcodeEntity extends DatumFillQrcodeVo {
private static final long serialVersionUID = 1L;
/**
* 材料id
*/
private Long datumId;
/**
* 二维码存储地址
*/
private String qrcode;
/**
* 备注
*/
private String remark;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof DatumFillQrcodeEntity) {
DatumFillQrcodeEntity tmp = (DatumFillQrcodeEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.datumId = null;
this.qrcode = "";
this.remark = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.datum.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.datum.model.DatumFillQrcodeEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
/**
* 材料填单二维码视图对象
*
* @author zxfei
* @date 2025-06-12
*/
@Data
public class DatumFillQrcodeVo extends BaseEntityLong {
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
}
\ No newline at end of file
package com.mortals.xhx.module.datum.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.datum.model.DatumFillQrcodeEntity;
import com.mortals.xhx.module.datum.dao.DatumFillQrcodeDao;
/**
* DatumFillQrcodeService
*
* 材料填单二维码 service接口
*
* @author zxfei
* @date 2025-06-12
*/
public interface DatumFillQrcodeService extends ICRUDService<DatumFillQrcodeEntity,Long>{
DatumFillQrcodeDao getDao();
/**
* 生成小程序二维码
* @return
*/
void createQrcode();
}
\ No newline at end of file
package com.mortals.xhx.module.datum.service.impl;
import cn.hutool.core.util.RandomUtil;
import com.mortals.framework.model.PageInfo;
import com.mortals.xhx.common.utils.StringUtils;
import com.mortals.xhx.common.utils.WXCreateQRCodeUtil;
import com.mortals.xhx.module.matter.model.MatterDatumEntity;
import com.mortals.xhx.module.matter.service.MatterDatumService;
import lombok.Getter;
import org.springframework.beans.BeanUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.function.Function;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.datum.dao.DatumFillQrcodeDao;
import com.mortals.xhx.module.datum.model.DatumFillQrcodeEntity;
import com.mortals.xhx.module.datum.service.DatumFillQrcodeService;
import lombok.extern.slf4j.Slf4j;
/**
* DatumFillQrcodeService
* 材料填单二维码 service实现
*
* @author zxfei
* @date 2025-06-12
*/
@Service("datumFillQrcodeService")
@Slf4j
public class DatumFillQrcodeServiceImpl extends AbstractCRUDServiceImpl<DatumFillQrcodeDao, DatumFillQrcodeEntity, Long> implements DatumFillQrcodeService {
@Value("${upload.path}")
@Getter
private String filePath;
@Value("${wx.appId}")
@Getter
private String appId;
@Value("${wx.appSecret}")
@Getter
private String appSecret;
private static String PATH = "/page_td/cailiaoInfo/cailiaoInfo?id=";
@Autowired
private MatterDatumService matterDatumService;
@Override
public void createQrcode() {
List<DatumFillQrcodeEntity> saveList = new ArrayList<>();
List<MatterDatumEntity> allDatum = matterDatumService.getAllList();
String rootPath = this.filePath;
String prePath = "/file/preview/qrcode/";
String allPath = rootPath + prePath;
File pathDir = new File(allPath);
if (!pathDir.exists()) {
pathDir.mkdirs();
}
String newName = RandomUtil.randomNumbers(12) + ".jpg";
String filePathAll = allPath + newName;
for(MatterDatumEntity item:allDatum){
String result = WXCreateQRCodeUtil.createWeiXinQRCode(PATH+item.getId(),appId,appSecret,filePathAll);
log.info("材料id:{},生成二维码地址:{}",item.getId(),result);
if(StringUtils.isNotEmpty(result)) {
DatumFillQrcodeEntity qrcodeEntity = new DatumFillQrcodeEntity();
qrcodeEntity.setDatumId(item.getId());
qrcodeEntity.setQrcode(prePath+newName);
qrcodeEntity.setCreateUserId(1L);
qrcodeEntity.setCreateTime(new Date());
saveList.add(qrcodeEntity);
}
}
this.save(saveList);
}
}
\ No newline at end of file
package com.mortals.xhx.module.datum.web;
import com.mortals.framework.annotation.RepeatSubmit;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.BaseEntity;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.service.IUser;
import com.mortals.framework.util.DataUtil;
import com.mortals.framework.util.SecurityImage;
import com.mortals.framework.utils.BeanUtil;
import com.mortals.framework.utils.ReflectUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.login.service.GifSecurityImage;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.datum.model.DatumFillQrcodeQuery;
import lombok.Getter;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.datum.model.DatumFillQrcodeEntity;
import com.mortals.xhx.module.datum.service.DatumFillQrcodeService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
import com.mortals.xhx.common.code.*;
/**
*
* 材料填单二维码
*
* @author zxfei
* @date 2025-06-12
*/
@RestController
@RequestMapping("datum/fill/qrcode")
public class DatumFillQrcodeController extends BaseCRUDJsonBodyMappingController<DatumFillQrcodeService,DatumFillQrcodeEntity,Long> {
@Autowired
private ParamService paramService;
@Value("${upload.path}")
@Getter
private String filePath;
public DatumFillQrcodeController(){
super.setModuleDesc( "材料填单二维码");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
@PostMapping({"create"})
@UnAuth
public String create() {
int code = 1;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
service.createQrcode();
}
});
thread.start();
JSONObject ret = new JSONObject();
ret.put("code", code);
ret.put("msg", "开始生成小程序二维码");
return ret.toJSONString();
}
@GetMapping("qrcode")
@UnAuth
public void qrcode(HttpServletRequest request, HttpServletResponse response) throws IOException {
String datumIdstr = request.getParameter("datumId");
Long datumId = DataUtil.converStr2Long(datumIdstr,0L);
DatumFillQrcodeQuery query = new DatumFillQrcodeQuery();
query.setDatumId(datumId);
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
DatumFillQrcodeEntity entity = service.selectOne(query);
if(entity!=null){
byte[] data = Files.readAllBytes(Paths.get(entity.getQrcode()));
doResponseImage(response, data);
}
}
protected void doResponseImage(HttpServletResponse response, byte[] content) {
try {
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/gif");
IOUtils.write(content, response.getOutputStream());
} catch (Exception e) {
log.error("小程序二维码图片传输异常-->" + e.getMessage());
}
}
}
\ No newline at end of file
......@@ -97,6 +97,7 @@ public class UserFillHistoryServiceImpl extends AbstractCRUDServiceImpl<UserFill
fieldMap.get(key).setFieldValue(value);
fieldMap.get(key).setUpdateUserId(1L);
fieldMap.get(key).setUpdateTime(new Date());
fieldMap.get(key).setRemark(jsonObject.toJSONString());
updateList.add(fieldMap.get(key));
}else {
DatumInfoFieldEntity newEntity = new DatumInfoFieldEntity();
......@@ -110,6 +111,7 @@ public class UserFillHistoryServiceImpl extends AbstractCRUDServiceImpl<UserFill
//newEntity.setFieldOrderNo(jsonObject.getString("label"));
newEntity.setFieldType(jsonObject.getString("compType"));
newEntity.setFieldTypeValue(jsonObject.getString("label"));
newEntity.setRemark(jsonObject.toJSONString());
addList.add(newEntity);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment