3fbab785 康伟

kangwei: 1 库存管理选择仓库后没有查询出对应的数据

2 月报和年报应显示期初量、入库量、出库量、在存量,数据之间应进行逻辑验算:期初量+入库量-出库量=在存量。
3 考试任务增加消息推送
(1)、任务发布时推送一次
(2)、考试开始时间前1天推送一次
(3)、考试结束时间前1天推送一次(如果还未完成的话)
4、多选题少选未得分,应增加多选题少选得分规则设置功能
1 个父辈 9a10dd77
正在显示 26 个修改的文件 包含 852 行增加9 行删除
......@@ -5,12 +5,14 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import com.skua.core.aspect.annotation.Dict;
import com.skua.core.util.ConvertUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
......@@ -53,6 +55,11 @@ public class AjhWasteMonthReport {
@Excel(name = "出库量", width = 15)
@ApiModelProperty(value = "出库量")
private String monthOut;
@TableField(exist=false)
@Excel(name = "在存量", width = 15)
@ApiModelProperty(value = "在存量")
private String stockOnHand;
/**贮存量*/
@Excel(name = "贮存量", width = 15)
@ApiModelProperty(value = "贮存量")
......@@ -102,4 +109,12 @@ public class AjhWasteMonthReport {
/**标识*/
@ApiModelProperty(value = "标识")
private Integer delFlag;
public String getStockOnHand() {
//数据之间应进行逻辑验算:期初量+入库量-出库量=在存量。
if(StringUtils.isEmpty(stockOnHand)){
stockOnHand = ConvertUtils.getDouble(monthProduce,0d) + ConvertUtils.getDouble(monthKeep,0d) - ConvertUtils.getDouble(monthOut,0d)+"" ;
}
return stockOnHand;
}
}
......
......@@ -8,9 +8,10 @@
p.waste_code,
p.waste_name,
LEFT ( p.pro_out_date, 7 ) AS report_month,
ROUND(SUM( p.pro_come_count ), 2) AS month_produce,
ROUND(SUM( p.pro_out_count ), 2) AS month_out,
ROUND(SUM( k.keep_in_count ), 2) AS month_keep,
ROUND(ifnull(SUM( p.pro_come_count ),0) , 2) AS month_produce,
ROUND(ifnull(SUM( p.pro_out_count ),0) , 2) AS month_out,
ROUND(ifnull(SUM( k.keep_in_count ),0) , 2) AS month_keep,
d.depart_name AS depart_id
FROM
ajh_waste_produce p
......
......@@ -10,17 +10,27 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.skua.core.api.vo.Result;
import com.skua.core.aspect.annotation.AutoLog;
import com.skua.core.context.BaseContextHandler;
import com.skua.core.query.QueryGenerator;
import com.skua.core.util.ConvertUtils;
import com.skua.core.util.DateUtils;
import com.skua.core.util.push.IPushService;
import com.skua.core.util.push.MessageEntity;
import com.skua.core.util.push.PushMessageFactory;
import com.skua.modules.edu.entity.Paper;
import com.skua.modules.edu.service.IPaperService;
import java.util.Date;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.skua.modules.edu.vo.PaperVO;
import com.skua.modules.system.entity.SysUser;
import com.skua.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
......@@ -49,6 +59,8 @@ import io.swagger.annotations.ApiOperation;
@RequestMapping("/web/edu/paper")
public class PaperController {
@Autowired
private ISysUserService userService;
@Autowired
private IPaperService paperService;
/**
......@@ -145,11 +157,41 @@ public class PaperController {
boolean ok = paperService.updateById(paper);
//TODO 返回false说明什么?
if(ok) {
//信息推送
String messageTitle = DateUtils.dateformat(paper.getStartTime(),"yyyy年MM月dd日")+ "考试"+paper.getPaperTitle() +",请准时参加考试";
String messageBody = DateUtils.dateformat(paper.getStartTime(),"yyyy年MM月dd日")+ "考试"+paper.getPaperTitle() +",请准时参加考试";
//信息推送
pushMsgNoProcess(messageTitle,messageBody,paper.getExamUserIds());
result.success("修改成功!");
}
}
return result;
}
private void pushMsgNoProcess(String messageTitle ,String messageBody ,String userIds) {
if(StringUtils.isNotEmpty(userIds)){
List<SysUser> sysUserList = userService.getUserByUserIds(userIds);
List<String> userCidList = sysUserList.stream().map(SysUser::getCid).filter(v -> StringUtils.isNotBlank(v)).collect(Collectors.toList());
List<String> userIdList = sysUserList.stream().map(SysUser::getId).collect(Collectors.toList());
MessageEntity messageEntity = new MessageEntity();
//messageEntity.setMessageTitle("考试马上开始");
//messageEntity.setMessageBody("**考试于*****开始考试,请尽快准备!");
messageEntity.setMessageTitle(messageTitle);
messageEntity.setMessageBody(messageBody);
messageEntity.setReceiveUser(userIdList);
messageEntity.setReceiveUserCid(userCidList);
messageEntity.setSendUser(BaseContextHandler.getUserName());
messageEntity.setForwardTag("historyRecordRemind");//消息提醒类型 保持唯一
IPushService appPushService = PushMessageFactory.getPushService("MOB");
IPushService webPushService = PushMessageFactory.getPushService("WEB");
appPushService.pushMessage(messageEntity);
webPushService.pushMessage(messageEntity);
}
}
/**
* <pre>
* 通过id删除
......
......@@ -96,6 +96,12 @@ public class Paper {
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "多选题得分规则:1 全对得分,2 部分得分,3不得分")
@Dict(dicCode = "exam_multiple_rule")
private String multipleRule;
@ApiModelProperty(value = "开始次数")
private Integer examCount;
/**上传人*/
......@@ -150,6 +156,10 @@ public class Paper {
@ApiModelProperty(value = "别名:试卷编号")
private String paperId;
@TableField(exist=false)
@ApiModelProperty(value = "已经考试用户集合")
private String userIds;
public String getPaperId() {
return id;
}
......
package com.skua.modules.edu.job;
import com.skua.core.context.BaseContextHandler;
import com.skua.core.util.DateUtils;
import com.skua.core.util.push.IPushService;
import com.skua.core.util.push.MessageEntity;
import com.skua.core.util.push.PushMessageFactory;
import com.skua.modules.edu.entity.Paper;
import com.skua.modules.edu.service.IPaperService;
import com.skua.modules.edu.service.IUserPaperService;
import com.skua.modules.system.entity.SysUser;
import com.skua.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 发送消息任务
* (2)、考试开始时间前1天推送一次
* (3)、考试结束时间前1天推送一次(如果还未完成的话)
*/
@Slf4j
public class EduSendMsgJob implements Job {
@Autowired
private ISysUserService userService;
@Autowired
private IPaperService paperService;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info(String.format(" Jeecg-Boot 发送消息任务 SendMsgJob ! 时间:" + DateUtils.getTimestamp()));
// 获取当前日期
LocalDate today = LocalDate.now();
// 获取昨天的日期
LocalDate yesterday = today.minusDays(1);
LocalDate tomorrowDay = today.plusDays(1);
// 创建一个DateTimeFormatter对象,指定格式为yyyy-MM-dd
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 使用formatter格式化LocalDate对象
String yesterDate = yesterday.format(formatter);
String tomorrowDate = tomorrowDay.format(formatter);
String messageTitle = null;
String messageBody = null;
String userIds = null;
List<Paper> paperList = paperService.queryExamUserIds(yesterDate,null);
if(paperList != null && !paperList.isEmpty()){
for(Paper paper : paperList){
messageTitle = "明天考试"+paper.getPaperTitle() +",请参加考试";
messageBody = "明天考试"+paper.getPaperTitle() +",请参加考试";
userIds = getNoExamUserIds(paper.getExamUserIds(),paper.getUserIds());
if(StringUtils.isNotEmpty(userIds)){
pushMsgNoProcess(messageTitle,messageBody,userIds);
}
}
}
paperList = paperService.queryExamUserIds(null,tomorrowDate);
if(paperList != null && !paperList.isEmpty()){
for(Paper paper : paperList){
messageTitle = "明天考试"+paper.getPaperTitle() +"结束,请尽快考试";
messageBody = "明天考试"+paper.getPaperTitle() +"结束,请尽快参加考试";
userIds = getNoExamUserIds(paper.getExamUserIds(),paper.getUserIds());
if(StringUtils.isNotEmpty(userIds)){
pushMsgNoProcess(messageTitle,messageBody,userIds);
}
}
}
}
private void pushMsgNoProcess(String messageTitle ,String messageBody ,String userIds) {
if(StringUtils.isNotEmpty(userIds)){
List<SysUser> sysUserList = userService.getUserByUserIds(userIds);
List<String> userCidList = sysUserList.stream().map(SysUser::getCid).filter(v -> StringUtils.isNotBlank(v)).collect(Collectors.toList());
List<String> userIdList = sysUserList.stream().map(SysUser::getId).collect(Collectors.toList());
MessageEntity messageEntity = new MessageEntity();
//messageEntity.setMessageTitle("考试马上开始");
//messageEntity.setMessageBody("**考试于*****开始考试,请尽快准备!");
messageEntity.setMessageTitle(messageTitle);
messageEntity.setMessageBody(messageBody);
messageEntity.setReceiveUser(userIdList);
messageEntity.setReceiveUserCid(userCidList);
messageEntity.setSendUser(BaseContextHandler.getUserName());
messageEntity.setForwardTag("historyRecordRemind");//消息提醒类型 保持唯一
IPushService appPushService = PushMessageFactory.getPushService("MOB");
IPushService webPushService = PushMessageFactory.getPushService("WEB");
appPushService.pushMessage(messageEntity);
webPushService.pushMessage(messageEntity);
}
}
/***
* 获取第一个字符串列表中存在而第二个字符串列表中不存在的元素
* @param string1
* @param string2
* @return
*/
private String getNoExamUserIds(String string1 , String string2){
// 分割字符串
String[] array1 = string1.split(",");
String[] array2 = string2.split(",");
// 将array2转换为Set集合
Set<String> set2 = new HashSet<>(Arrays.asList(array2));
// 获取在array1中但不在set2中的元素
String result = Arrays.stream(array1)
.filter(element -> !set2.contains(element))
.collect(Collectors.joining(","));
return result;
}
}
......@@ -27,5 +27,12 @@ public interface PaperMapper extends BaseMapper<Paper> {
* @return
*/
IPage<Paper> queryMyPaperRecoredByList(Page<Paper> page, @Param("param") Paper paper);
/***
* 获取考试userIds集合
* @param startTime
* @param endTime
* @return
*/
List<Paper> queryExamUserIds(@Param("startTime")String startTime,@Param("endTime") String endTime);
}
......
......@@ -17,4 +17,11 @@ public interface UserAnswerMapper extends BaseMapper<UserAnswer> {
* @return
*/
public int checkAnswerByUserPaperId(@Param("userPaperId") String userPaperId);
/***
* 校对答案,设置多选题部分得分
* @param userPaperId
* @return
*/
public int setScoreByMultiple(@Param("userPaperId") String userPaperId);
}
......
......@@ -45,4 +45,18 @@
</if>
order by up.start_time desc
</select>
<!-- 获取考试userIds集合-->
<select id="queryMyPaperRecoredByList" resultType="com.skua.modules.edu.entity.Paper">
select aaa.userids, p.id,p.paper_title,p.exam_user_ids from edu_paper p
left join ( select up.paper_id,group_concat(up.user_id) 'userIds' from edu_user_paper up group by up.paper_id )aaa on aaa.paper_id = p.id
where p.send_status = '1'
<if test="startTime != null and startTime !=''">
and p.start_time = #{startTime}
</if>
<if test="endTime != null and endTime !=''">
and p.end_time = #{endTime}
</if>
</select>
</mapper>
......
......@@ -8,5 +8,17 @@
set ua.score = IFNULL((select pq.score from edu_question q ,edu_paper_question pq where q.id = pq.question_id and ua.answer = q.question_answer and ua.paper_id= pq.paper_id and ua.question_id = q.id) , 0)
where ua.user_paper_id = #{userPaperId}
</update>
<!-- 校对答案,设置多选题部分得分-->
<update id="setScoreByMultiple" >
update edu_user_answer ua,(select ua.id,pq.score
from edu_user_answer ua
left join edu_question q on ua.question_id = q.id
left join edu_paper_question pq on (pq.paper_id = ua.paper_id and pq.question_id = ua.question_id)
where ua.paper_id = #{userPaperId} and ua.score = 0 and q.question_type =2
and LOCATE(ua.answer, q.question_answer) > 0)aaa
set ua.score = round(aaa.score/2,1)
where ua.id = aaa.id
</update>
</mapper>
......
......@@ -46,7 +46,7 @@ public interface IPaperService extends IService<Paper> {
*/
public PaperVO queryPaperByUserPaperId( String userPaperId);
/***
* 交卷
* 交卷并计算分值
* @param paperVO
*/
public String submitPaper(UserPaperVO paperVO);
......@@ -75,4 +75,11 @@ public interface IPaperService extends IService<Paper> {
*/
IPage<Paper> queryMyPaperRecoredByList(Page<Paper> page, Paper paper);
/***
* 获取考试userIds集合
* @param startTime
* @param endTime
* @return
*/
List<Paper> queryExamUserIds(String startTime, String endTime);
}
......
......@@ -180,6 +180,15 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
public IPage<Paper> queryMyPaperRecoredByList(Page<Paper> page, Paper paper){
return this.baseMapper.queryMyPaperRecoredByList(page,paper) ;
}
/***
* 获取考试userIds集合
* @param startTime
* @param endTime
* @return
*/
public List<Paper> queryExamUserIds(String startTime, String endTime){
return this.baseMapper.queryExamUserIds(startTime,endTime) ;
}
/***
* 交卷
......@@ -187,7 +196,7 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
*/
@Transactional
public String submitPaper(UserPaperVO paperVO){
Paper paper = paperMapper.selectById( paperVO.getPaperId() ) ;
//创建用户答题记录
// public UserPaper(String paperId, String departId, String userId, String startTime, String endTime) {
UserPaper userPaper = new UserPaper(paperVO.getPaperId(), paperVO.getUserId(),paperVO.getStartTime(),paperVO.getEndTime(), paperVO.getSignature());
......@@ -205,13 +214,16 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
userAnswerMapper.insert( userAnswer ) ;
}
userAnswerMapper.checkAnswerByUserPaperId( userPaper.getId() );
//设置多选题部分得分分值
if("2".equals( paper.getMultipleRule())){
userAnswerMapper.setScoreByMultiple(userPaper.getId());
}
totalScore = userPaperMapper.queryPaperScore(userPaper.getId());
}
userPaper.setScore(totalScore ) ;
userPaperMapper.updateById( userPaper);
// 修改开始人次
Paper paper = paperMapper.selectById( paperVO.getPaperId() ) ;
paper.setUserCount( paper.getUserCount() + 1 ) ;
paperMapper.updateById( paper ) ;
//计算分数
......
package com.skua.modules.erp.controller;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.skua.core.api.vo.Result;
import com.skua.core.aspect.annotation.AutoLog;
import com.skua.core.context.BaseContextHandler;
import com.skua.core.query.QueryGenerator;
import com.skua.modules.erp.entity.DistributContract;
import com.skua.modules.erp.entity.DistributContractTemp;
import com.skua.modules.erp.entity.ERPPurchaseContract;
import com.skua.modules.erp.entity.PurchaseMaterial;
import com.skua.modules.erp.service.IDistributContractService;
import java.util.Date;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.skua.modules.erp.service.IDistributContractTempService;
import com.skua.modules.erp.service.IDistributMaterialService;
import com.skua.modules.erp.service.IPurchaseMaterialService;
import com.skua.modules.erp.vo.DistributContractVO;
......@@ -23,10 +28,17 @@ import com.skua.modules.erp.vo.MaterialSearchVO;
import com.skua.modules.guest.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
@Slf4j
@Api(tags="erp分销合同")
......@@ -39,6 +51,8 @@ public class DistributContractController {
private IDistributMaterialService distributMaterialService;
@Autowired
private IPurchaseMaterialService purchaseMaterialService ;
@Autowired
private IDistributContractTempService distributContractTempService;
@AutoLog(value = "erp分销合同-分页列表查询")
@ApiOperation(value="erp分销合同-分页列表查询", notes="erp分销合同-分页列表查询")
......@@ -252,4 +266,73 @@ public class DistributContractController {
}
return result;
}
/**
* <pre>
* 通过excel导入数据
* </pre>
* @param request
* @param response
* @return
* @author 开发者姓名, 开发时间
* @Description: TODO(这里描述这个方法的需求变更情况)
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile file = entity.getValue();// 获取上传文件对象
ImportParams params = new ImportParams();
params.setTitleRows(2);
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<DistributContractTemp> listDistributContractTemps = ExcelImportUtil.importExcel(file.getInputStream(), DistributContractTemp.class, params);
distributContractTempService.saveBatch(listDistributContractTemps);
//同步到分销合同
distributContractTempService.queryMaterialByGoodCode();
return Result.ok("文件导入成功!数据行数:" + listDistributContractTemps.size());
} catch (Exception e) {
log.error(e.getMessage(),e);
return Result.error("文件导入失败:"+e.getMessage());
} finally {
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return Result.ok("文件导入失败!");
}
@RequestMapping(value = "/importTemplate")
public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
//Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
//导出文件名称
mv.addObject(NormalExcelConstants.FILE_NAME, "分销合同管理");
mv.addObject(NormalExcelConstants.CLASS, DistributContractTemp.class);
//mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("分销合同管理-导入表列表数据", "导出人:Jeecg", "导出信息"));
//mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
return mv;
}
//synch
@AutoLog(value = "erp分销合同-同步到分销合同")
@ApiOperation(value="erp分销合同-同步到分销合同", notes="erp分销合同-同步到分销合同")
@GetMapping(value = "/synchDistributContract")
public Result<String> queryMaterialByGoodCode() {
Result<String> result = new Result<String>();
try{
distributContractTempService.queryMaterialByGoodCode();
result.setSuccess(true);
result.setResult("同步分销合同成功");
}catch (Exception e){
result.error500("根据[厂站]以及[货号]未找到统购合同的药剂记录!");
}
return result;
}
}
......
package com.skua.modules.erp.controller;
import java.io.IOException;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.skua.core.api.vo.Result;
import com.skua.core.aspect.annotation.AutoLog;
import com.skua.core.context.BaseContextHandler;
import com.skua.core.query.QueryGenerator;
import com.skua.core.util.DateUtils;
import com.skua.modules.erp.entity.DistributContractTemp;
import com.skua.modules.erp.entity.ERPPurchaseContract;
import com.skua.modules.erp.entity.PurchaseContractTemp;
import com.skua.modules.erp.entity.PurchaseMaterial;
import com.skua.modules.erp.service.IERPPurchaseContractService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.skua.modules.erp.service.IPurchaseContractTempService;
import com.skua.modules.erp.vo.MaterialSearchVO;
import com.skua.modules.erp.vo.PurchaseContractVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
/**
* <pre>
......@@ -35,6 +49,8 @@ import io.swagger.annotations.ApiOperation;
public class PurchaseContractController {
@Autowired
private IERPPurchaseContractService purchaseContractService;
@Autowired
private IPurchaseContractTempService purchaseContractTempService;
@AutoLog(value = "erp统购合同-分页列表查询")
......@@ -270,4 +286,72 @@ public class PurchaseContractController {
}
return result;
}
@RequestMapping(value = "/importTemplate")
public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
//Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
//导出文件名称
mv.addObject(NormalExcelConstants.FILE_NAME, "统购合同管理");
mv.addObject(NormalExcelConstants.CLASS, PurchaseContractTemp.class);
//mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("分销合同管理-导入表列表数据", "导出人:Jeecg", "导出信息"));
//mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
return mv;
}
/**
* <pre>
* 通过excel导入数据
* </pre>
* @param request
* @param response
* @return
* @author 开发者姓名, 开发时间
* @Description: TODO(这里描述这个方法的需求变更情况)
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile file = entity.getValue();// 获取上传文件对象
ImportParams params = new ImportParams();
params.setTitleRows(2);
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<PurchaseContractTemp> listPurchaseContractTemps = ExcelImportUtil.importExcel(file.getInputStream(), PurchaseContractTemp.class, params);
purchaseContractTempService.saveBatch(listPurchaseContractTemps);
//同步到数统购合同
purchaseContractTempService.purchaseContractTempService();
return Result.ok("文件导入成功!数据行数:" + listPurchaseContractTemps.size());
} catch (Exception e) {
log.error(e.getMessage(),e);
return Result.error("文件导入失败:"+e.getMessage());
} finally {
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return Result.ok("文件导入失败!");
}
@AutoLog(value = "erp统购合同-同步到统购合同")
@ApiOperation(value="erp统购合同-同步到统购合同", notes="erp统购合同-同步到统购合同")
@GetMapping(value = "/synchPurchase")
public Result<String> queryMaterialByGoodCode() {
Result<String> result = new Result<String>();
try{
purchaseContractTempService.purchaseContractTempService();
result.setSuccess(true);
result.setResult("同步到统购合同,操作成功");
}catch (Exception e){
result.error500("根据[厂站]以及[货号]未找到统购合同的药剂记录!");
}
return result;
}
}
......
package com.skua.modules.erp.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* 分销合同管理-导入表
*/
@Data
@TableName("erp_distribut_contract_temp")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="erp_distribut_contract_temp对象", description="分销合同管理-导入表")
public class DistributContractTemp {
/**主键*/
@TableId(type = IdType.ID_WORKER_STR)
@ApiModelProperty(value = "主键")
private String id;
/**所属机构*/
@Excel(name = "所属机构", width = 15)
@ApiModelProperty(value = "所属机构")
private String departId;
/**项目名称*/
@Excel(name = "项目名称", width = 15)
@ApiModelProperty(value = "项目名称")
private String projectName;
/**合同名称*/
@Excel(name = "合同名称", width = 15)
@ApiModelProperty(value = "合同名称")
private String contractName;
/**申请人*/
@Excel(name = "申请人", width = 15)
@ApiModelProperty(value = "申请人")
private String applyUser;
/**采购时间*/
@Excel(name = "采购时间", width = 15)
@ApiModelProperty(value = "采购时间")
private String purchaseTime;
/**合同时间*/
@Excel(name = "合同时间", width = 15)
@ApiModelProperty(value = "合同时间")
private String contractYear;
/**合同编号*/
@Excel(name = "合同编号", width = 15)
@ApiModelProperty(value = "合同编号")
private String contractCode;
/**申请状态:0 未发布 1 已发布(待审核)2 审核驳回 3 审核通过*/
@Excel(name = "申请状态:0 未发布 1 已发布(待审核)2 审核驳回 3 审核通过", width = 15)
@ApiModelProperty(value = "申请状态:0 未发布 1 已发布(待审核)2 审核驳回 3 审核通过")
private String status;
/**生效时间*/
@Excel(name = "生效时间", width = 15)
@ApiModelProperty(value = "生效时间")
private String startTime;
/**失效时间*/
@Excel(name = "失效时间", width = 15)
@ApiModelProperty(value = "失效时间")
private String endTime;
/**货号*/
@Excel(name = "货号", width = 15)
@ApiModelProperty(value = "货号")
private String goodCode;
/**数量*/
@Excel(name = "数量", width = 15)
@ApiModelProperty(value = "数量")
private String materialNum;
/**分销单价*/
@Excel(name = "分销单价", width = 15)
@ApiModelProperty(value = "分销单价")
private String distributPrice;
/**税额*/
@Excel(name = "税额", width = 15)
@ApiModelProperty(value = "税额")
private String taxAmount;
/**总价*/
@Excel(name = "总价", width = 15)
@ApiModelProperty(value = "总价")
private String distributTotalPrice;
}
package com.skua.modules.erp.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* 采购合同管理-导入表
*/
@Data
@TableName("erp_purchase_contract_temp")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="erp_purchase_contract_temp对象", description="采购合同管理-导入表")
public class PurchaseContractTemp {
/**主键*/
@TableId(type = IdType.ID_WORKER_STR)
@ApiModelProperty(value = "主键")
private String id;
/**所属机构*/
@Excel(name = "所属机构", width = 15)
@ApiModelProperty(value = "所属机构")
private String departName;
/**采购名称*/
@Excel(name = "采购名称", width = 15)
@ApiModelProperty(value = "采购名称")
private String purchaseName;
/**招标询价编码*/
@Excel(name = "招标询价编码", width = 15)
@ApiModelProperty(value = "招标询价编码")
private String bidInquiryCode;
/**采购类型:招标采购/询价采购*/
@Excel(name = "采购类型:招标采购/询价采购", width = 15)
@ApiModelProperty(value = "采购类型:招标采购/询价采购")
private String purchaseType;
/**采购时间*/
@Excel(name = "采购时间", width = 15)
@ApiModelProperty(value = "采购时间")
private String projectTime;
/**项目名称*/
@Excel(name = "项目名称", width = 15)
@ApiModelProperty(value = "项目名称")
private String projectName;
/**入库仓库名称*/
@Excel(name = "入库仓库名称", width = 15)
@ApiModelProperty(value = "入库仓库名称")
private String inWarehouseName;
/**合同名称*/
@Excel(name = "合同名称", width = 15)
@ApiModelProperty(value = "合同名称")
private String contractName;
/**合同编号*/
@Excel(name = "合同编号", width = 15)
@ApiModelProperty(value = "合同编号")
private String contractCode;
/**生效时间*/
@Excel(name = "生效时间", width = 15)
@ApiModelProperty(value = "生效时间")
private String startTime;
/**失效时间*/
@Excel(name = "失效时间", width = 15)
@ApiModelProperty(value = "失效时间")
private String endTime;
/**物料编码*/
@Excel(name = "物料编码", width = 15)
@ApiModelProperty(value = "物料编码")
private String sparepartCode;
/**使用机构*/
@Excel(name = "使用机构", width = 15)
@ApiModelProperty(value = "使用机构")
private String usDepartName;
/**供应商名称*/
@Excel(name = "供应商名称", width = 15)
@ApiModelProperty(value = "供应商名称")
private String supplierName;
/**货号*/
@Excel(name = "货号", width = 15)
@ApiModelProperty(value = "货号")
private String goodCode;
/**计划采购数量*/
@Excel(name = "计划采购数量", width = 15)
@ApiModelProperty(value = "计划采购数量")
private String purchaseNum;
/**单价*/
@Excel(name = "单价", width = 15)
@ApiModelProperty(value = "单价")
private String unitPrice;
/**税额*/
@Excel(name = "税额", width = 15)
@ApiModelProperty(value = "税额")
private String taxAmount;
/**总价*/
@Excel(name = "总价", width = 15)
@ApiModelProperty(value = "总价")
private String totalPrice;
}
package com.skua.modules.erp.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* 部门名称与id映射表
*/
@Data
@TableName("sys_depart_temp")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="sys_depart_temp对象", description="部门名称与id映射表")
public class SysDepartTemp {
/**部门编号*/
@Excel(name = "部门编号", width = 15)
@ApiModelProperty(value = "部门编号")
private String departId;
/**部门名称*/
@Excel(name = "部门名称", width = 15)
@ApiModelProperty(value = "部门名称")
private String departName;
}
package com.skua.modules.erp.mapper;
import com.skua.modules.erp.entity.DistributContractTemp;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 分销合同管理-导入表
*/
public interface DistributContractTempMapper extends BaseMapper<DistributContractTemp> {
}
package com.skua.modules.erp.mapper;
import com.skua.modules.erp.entity.PurchaseContractTemp;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 采购合同管理-导入表
*/
public interface PurchaseContractTempMapper extends BaseMapper<PurchaseContractTemp> {
}
<?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.skua.modules.erp.mapper.DistributContractTempMapper">
</mapper>
\ 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.skua.modules.erp.mapper.PurchaseContractTempMapper">
</mapper>
\ No newline at end of file
package com.skua.modules.erp.service;
import com.skua.modules.erp.entity.DistributContractTemp;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* 分销合同管理-导入表
*/
public interface IDistributContractTempService extends IService<DistributContractTemp> {
/***
* 同步到分销合同
* @return
*/
Boolean queryMaterialByGoodCode() throws Exception;
}
package com.skua.modules.erp.service;
import com.skua.modules.erp.entity.PurchaseContractTemp;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* 采购合同管理-导入表
*/
public interface IPurchaseContractTempService extends IService<PurchaseContractTemp> {
/***
* 同步到统购合同
* @return
*/
Boolean purchaseContractTempService()throws Exception;
}
package com.skua.modules.erp.service.impl;
import com.skua.core.context.BaseContextHandler;
import com.skua.core.context.SpringContextUtils;
import com.skua.modules.erp.entity.DistributContractTemp;
import com.skua.modules.erp.mapper.DistributContractTempMapper;
import com.skua.modules.erp.service.IDistributContractTempService;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
/**
* 分销合同管理-导入表
*/
@Service
public class DistributContractTempServiceImpl extends ServiceImpl<DistributContractTempMapper, DistributContractTemp> implements IDistributContractTempService {
/***
* 同步到分销合同
* @return
*/
@Transactional
public Boolean queryMaterialByGoodCode()throws Exception{
JdbcTemplate masterDB = (JdbcTemplate) SpringContextUtils.getBean("master");
//# 插入到分销合同表
String sql = "insert into erp_distribut_contract(id,depart_id,project_name,contract_name,apply_user,purchase_time,contract_year, contract_code,status,start_time,end_time,create_time)";
sql +="select id,"+ BaseContextHandler.getRealDepartId() +",project_name,contract_name,apply_user,DATE_FORMAT(purchase_time, '%Y-%m-%d'),contract_year, contract_code,status,DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%s'),DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%s') ,now() from erp_distribut_contract_temp";
sql +=" where id in (select min(id) from erp_distribut_contract_temp group by contract_code )";
masterDB.execute(sql);
//# 修改状态
sql = "update erp_distribut_contract set status =1 where status='启用'";masterDB.update(sql);
//#修改申请人
sql ="update erp_distribut_contract dc, sys_user u set dc.apply_user = u.id where u.realname = dc.apply_user" ;masterDB.update(sql);
// # 插入分销物料表
sql =" insert into erp_distribut_material( id,contract_id ,depart_id, good_code,material_num,distribut_price, tax_amount, distribut_total_price) ";
sql +=" select id,id, depart_id,good_code, material_num,distribut_price, tax_amount, distribut_total_price from erp_distribut_contract_temp";
masterDB.execute(sql);
//#修改部门编号
sql ="update erp_distribut_material dm, sys_depart_temp d set dm.depart_id = d.depart_id where d.depart_name = dm.depart_id ";masterDB.update(sql);
//#根据货号查询物料信息
sql =" update erp_distribut_material dm, erp_purchase_material pm";
sql +=" set dm.purchase_contract_id = pm.contract_id, dm.sparepart_id = pm.sparepart_id, dm.sparepart_name = pm.sparepart_name, dm.measuring_unit = pm.measuring_unit ";
sql +=" where dm.good_code = pm.good_code ";
masterDB.update(sql);
//删除导入表记录
sql = "delete from erp_distribut_contract_temp";
masterDB.execute(sql);
return true;
}
}
package com.skua.modules.erp.service.impl;
import com.skua.core.context.SpringContextUtils;
import com.skua.modules.erp.entity.PurchaseContractTemp;
import com.skua.modules.erp.mapper.PurchaseContractTempMapper;
import com.skua.modules.erp.service.IPurchaseContractTempService;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
/**
* 采购合同管理-导入表
*/
@Service
public class PurchaseContractTempServiceImpl extends ServiceImpl<PurchaseContractTempMapper, PurchaseContractTemp> implements IPurchaseContractTempService {
//同步到统购合同
@Override
@Transactional
public Boolean purchaseContractTempService()throws Exception {
JdbcTemplate masterDB = (JdbcTemplate) SpringContextUtils.getBean("master");
//#赋值sql--统购合同创建
String sql = "";
sql = "Insert into erp_purchase_contract(id,depart_id,purchase_name,bid_inquiry_code ,purchase_type,project_time,project_name,in_warehouse_name,contract_name,contract_code,start_time ,end_time,purchase_money,create_time,status,use_flag)";
sql += " select id,depart_name,purchase_name,bid_inquiry_code ,purchase_type, DATE_FORMAT(project_time, '%Y-%m-%d'),project_name,in_warehouse_name,contract_name,contract_code,DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%s') ,DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%s'),total_price,now(),'0','0'";
sql += " from erp_purchase_contract_temp where id in (select min(id) from erp_purchase_contract_temp group by contract_code )";
// commonSqlMapper.update()
masterDB.execute( sql );
//修改 部门编号,
sql = "update erp_purchase_contract pc, sys_depart d set pc.depart_id = d.id where d.depart_name = pc.depart_id ";
masterDB.update( sql );
//修改 purchase_type
sql ="update erp_purchase_contract set purchase_type = '1' where purchase_type= '招标采购'" ; masterDB.update( sql );
sql ="update erp_purchase_contract set purchase_type = '2' where purchase_type= '询价采购'" ; masterDB.update( sql );
sql =" update erp_purchase_contract set purchase_type = '3' where purchase_type= '合同续签'" ; masterDB.update( sql );
sql ="UPDATE erp_purchase_material SET good_code = REPLACE(good_code, ' ', '')";
masterDB.update( sql );
//添加入库仓库编号
sql ="update erp_purchase_contract pc, supplies_warehouse w set pc.in_warehouse_id = w.id where w.warehouse_name = pc.in_warehouse_id ";
masterDB.update( sql );
//# 插入统购合同物料信息
sql ="Insert into erp_purchase_material(id,depart_id,contract_id,sparepart_code,supplier_id,good_code,purchase_num,unit_price,total_price)";
sql +="select id,us_depart_name,id,sparepart_code,supplier_name,good_code,purchase_num,unit_price,total_price from erp_purchase_contract_temp" ;
masterDB.execute( sql );
sql =" update erp_purchase_material pm, equipment_sparepart_supplies ss ";
sql +=" set pm.sparepart_type = ss.sparepart_type, pm.sparepart_id = ss.id, pm.sparepart_name = ss.sparepart_name,pm.specification = ss.specification,pm.measuring_unit = ss.measuring_unit";
sql +=" where pm.sparepart_code = ss.sparepart_code ";
masterDB.update( sql );
//# 供应商编号
sql ="update erp_purchase_material pm, purchase_supplier ps ";
sql+= " set pm.supplier_id = ps.id where pm.supplier_id = ps.supplier_name";
masterDB.update( sql );
//删除数据库表记录
sql = "delete from erp_purchase_contract_temp";
masterDB.execute(sql);
return true;
}
}
......@@ -246,7 +246,7 @@ public class EquipmentSparepartController {
//权限部门
if(StringUtils.isNotEmpty(sparepartSearchVO.getDepartId())){
String departIds = iCommonSqlService.getChildDepartId(sparepartSearchVO.getDepartId() ) ;//部门子集
sparepartSearchVO.setDepartIds(departIds ) ;
sparepartSearchVO.setDepartIds(JSUtils.quoteEach(departIds,",") ) ;
}else{
sparepartSearchVO.setDepartIds( JSUtils.quoteEach(BaseContextHandler.getDeparts() ,",")) ;//非管理员,获取权限部门集合
}
......
......@@ -11,7 +11,7 @@
from equipment_sparepart es , supplies_Warehouse sw
left join sys_depart d on sw.depart_id = d.id
where es.supplies_warehouse_id = sw.id and sw.depart_id in (${param.departIds})
<if test="param.suppliesWarehouseId != null and param.suppliesWarehouseId !=''"> and sw.id =#{param.suppliesWarehouseId}</if>
<if test="param.suppliesWarehouseId != null and param.suppliesWarehouseId !=''"> and es.supplies_warehouse_id =#{param.suppliesWarehouseId}</if>
<if test="param.sparepartCode != null and param.sparepartCode !=''">and es.sparepart_code like '%${param.sparepartCode}%'</if>
<if test="param.sparepartType != null and param.sparepartType !=''">and es.sparepart_type in (${param.sparepartType}) </if>
<if test="param.sparepartName != null and param.sparepartName !=''">and es.sparepart_name like '%${param.sparepartName}%'</if>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!