增加清除数据源逻辑,质量来料、成品报告导出修改

master
Yangwl 2 months ago
parent d54bedc1a1
commit c36dc48cb5

@ -67,7 +67,7 @@ public class ExcelCPReportMapUtil {
// 合并C3到I4的单元格并设置样式
mergeAndStyleCells(sheet, new CellRangeAddress(2, 3, 2, 8), detailMap.get("title"));
// 合并J3到L4的单元格并设置样式
mergeAndStyleCells(sheet, new CellRangeAddress(2, 3, 9, 12), "编码"+detailMap.get("standardNo"));
mergeAndStyleCells(sheet, new CellRangeAddress(2, 3, 9, 12), "编码"+detailMap.get("fileNo"));
/**左右表格1**/
//画边框
for(int r5=4;r5<12;r5++){
@ -121,7 +121,7 @@ public class ExcelCPReportMapUtil {
// 合并E5到F6的单元格并设置样式和内容
mergeAndStyleCells2(sheet,row9, new CellRangeAddress(8, 9, 4, 5), "检验依据", true, true, IndexedColors.GREY_25_PERCENT);
// 合并G5到I6的单元格并设置样式无背景色只有边框和内容居中
mergeAndStyleCells2(sheet,row9, new CellRangeAddress(8, 9,6, 8), detailMap.get("quality"), true, false, null);
mergeAndStyleCells2(sheet,row9, new CellRangeAddress(8, 9,6, 8), detailMap.get("standardNo"), true, false, null);
// 合并J5到K6的单元格并设置样式和内容
mergeAndStyleCells2(sheet,row9, new CellRangeAddress(8, 9, 9, 10), "检验日期 ", true, true, IndexedColors.GREY_25_PERCENT);
// 合并L5到N6的单元格并设置样式无背景色只有边框和内容居中

@ -67,7 +67,7 @@ public class ExcelReportMapUtil {
// 合并C3到I4的单元格并设置样式
mergeAndStyleCells(sheet, new CellRangeAddress(2, 3, 2, 8), detailMap.get("title"));
// 合并J3到L4的单元格并设置样式
mergeAndStyleCells(sheet, new CellRangeAddress(2, 3, 9, 12), "编码:"+detailMap.get("standardNo"));
mergeAndStyleCells(sheet, new CellRangeAddress(2, 3, 9, 12), "编码:"+detailMap.get("fileNo"));
/**左右表格1**/
//画边框
for(int r5=4;r5<13;r5++){
@ -256,6 +256,15 @@ public class ExcelReportMapUtil {
mergeAndStyleCellsNoBorder(sheet,rowEnd2, new CellRangeAddress(rowNum+5, rowNum+5, 10, 11), "品管员", true, true, IndexedColors.GREY_25_PERCENT);
mergeAndStyleCellsNoBorder(sheet,rowEnd2, new CellRangeAddress(rowNum+5, rowNum+5, 12, 13), detailMap.get("checkManName"), true, false, null);
Row rowEnd3 = sheet.createRow(rowNum+4);
mergeAndStyleCellsNoBorder(sheet, rowEnd3, new CellRangeAddress(rowNum+4, rowNum+4, 0, 1), "备注", true, true, IndexedColors.GREY_25_PERCENT);
mergeAndStyleCellsNoBorder(sheet, rowEnd3, new CellRangeAddress(rowNum+4, rowNum+4, 2, 13), detailMap.get("remark"), true, false, null);
// Row rowEnd3 = sheet.createRow(rowNum+8);
// mergeAndStyleCellsNoBorder(sheet,rowEnd3, new CellRangeAddress(rowNum+5, rowNum+5, 0, 1), "品管经理/主任", true, true, IndexedColors.GREY_25_PERCENT);
// mergeAndStyleCellsNoBorder(sheet,rowEnd2, new CellRangeAddress(rowNum+6, rowNum+6, 0, 1), "备注", true, true, IndexedColors.GREY_25_PERCENT);
// mergeAndStyleCellsNoBorder(sheet,rowEnd2, new CellRangeAddress(rowNum+6, rowNum+6, 2, 13), detailMap.get("remark"), true, false, null);
return workbook;
}

@ -327,42 +327,47 @@ public class RecordAlarmDataServiceImpl implements IRecordAlarmDataService {
public void deviceOfflineTimingTaskDetail(String poolName) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
Date date = new Date();
RecordAlarmRule alarmRule = new RecordAlarmRule();
alarmRule.setTriggerRule(1L);
List<RecordAlarmRule> recordAlarmRules = recordAlarmRuleMapper.selectRecordAlarmRuleList(alarmRule);
Long minuteValue = 1000 * 60L;
if (recordAlarmRules.size() > 0) {
if (recordAlarmRules.get(0).getDeviceOfflineTime() != null) {
minuteValue = minuteValue * recordAlarmRules.get(0).getDeviceOfflineTime();
}
} else {
return;
}
BaseCollectDeviceInfo collectDeviceInfo = new BaseCollectDeviceInfo();
collectDeviceInfo.setOnlineState(0L);
List<BaseCollectDeviceInfo> baseCollectDeviceInfos = baseCollectDeviceInfoMapper.selectBaseCollectDeviceInfoList(collectDeviceInfo);
if (baseCollectDeviceInfos.size() > 0) {
RecordAlarmData recordAlarmData = new RecordAlarmData();
recordAlarmData.setAlarmType(1L);
recordAlarmData.setAlarmStatus(1L);
List<RecordAlarmData> alarmDataList = recordAlarmDataMapper.selectRecordAlarmDataList(recordAlarmData);
List<String> collectDeviceIdList = alarmDataList.stream().map(RecordAlarmData::getCollectDeviceId).collect(Collectors.toList());
for (BaseCollectDeviceInfo deviceInfo : baseCollectDeviceInfos) {
if (collectDeviceIdList.contains(deviceInfo.getCollectDeviceId())) {
continue;
try {
Date date = new Date();
RecordAlarmRule alarmRule = new RecordAlarmRule();
alarmRule.setTriggerRule(1L);
List<RecordAlarmRule> recordAlarmRules = recordAlarmRuleMapper.selectRecordAlarmRuleList(alarmRule);
Long minuteValue = 1000 * 60L;
if (recordAlarmRules.size() > 0) {
if (recordAlarmRules.get(0).getDeviceOfflineTime() != null) {
minuteValue = minuteValue * recordAlarmRules.get(0).getDeviceOfflineTime();
}
if ((deviceInfo.getUpdateTime().getTime() + minuteValue) < date.getTime()) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setCollectDeviceId(deviceInfo.getCollectDeviceId());
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(1L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("设备离线已超过" + recordAlarmRules.get(0).getDeviceOfflineTime() + "分钟");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
} else {
return;
}
BaseCollectDeviceInfo collectDeviceInfo = new BaseCollectDeviceInfo();
collectDeviceInfo.setOnlineState(0L);
List<BaseCollectDeviceInfo> baseCollectDeviceInfos = baseCollectDeviceInfoMapper.selectBaseCollectDeviceInfoList(collectDeviceInfo);
if (baseCollectDeviceInfos.size() > 0) {
RecordAlarmData recordAlarmData = new RecordAlarmData();
recordAlarmData.setAlarmType(1L);
recordAlarmData.setAlarmStatus(1L);
List<RecordAlarmData> alarmDataList = recordAlarmDataMapper.selectRecordAlarmDataList(recordAlarmData);
List<String> collectDeviceIdList = alarmDataList.stream().map(RecordAlarmData::getCollectDeviceId).collect(Collectors.toList());
for (BaseCollectDeviceInfo deviceInfo : baseCollectDeviceInfos) {
if (collectDeviceIdList.contains(deviceInfo.getCollectDeviceId())) {
continue;
}
if ((deviceInfo.getUpdateTime().getTime() + minuteValue) < date.getTime()) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setCollectDeviceId(deviceInfo.getCollectDeviceId());
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(1L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("设备离线已超过" + recordAlarmRules.get(0).getDeviceOfflineTime() + "分钟");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
}
}
}
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**

@ -52,9 +52,14 @@ public class MesBoradServiceImpl implements IMesBoradService {
@Override
public List<BoardDTO> getLineList(BoardDTO boardDTO) {
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
boardDTO.setEquipmentTypeCode("equ_type_bzx");
List<BoardDTO> lineList = mesMapper.getLineList(boardDTO);
return lineList;
try {
boardDTO.setEquipmentTypeCode("equ_type_bzx");
List<BoardDTO> lineList = mesMapper.getLineList(boardDTO);
return lineList;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override

@ -111,6 +111,7 @@ public class QcCheckReportProductController extends BaseController {
List<List<Map>> list = qcCheckReportProductService.getCkeckProjectMap(qcCheckTaskIncome.getRecordId());
QcCheckReportIncome detailInfo = qcCheckReportProductService.selectQcCheckReportIncomeByRecordId(qcCheckTaskIncome.getRecordId());
Map<String,String> detailMap = new HashMap<>();
detailMap.put("fileNo",detailInfo.getFileNo());
detailMap.put("orderType",detailInfo.getOrderType());
detailMap.put("title","成品检验报告");
detailMap.put("checkNo",detailInfo.getCheckNo());

@ -148,6 +148,7 @@ public class QcCheckTaskIncomeController extends BaseController {
}else{
detailMap.put("title","包材检验报告");
}
detailMap.put("fileNo",detailInfo.getFileNo());
detailMap.put("productGroupName",detailInfo.getProductGroupName());
detailMap.put("incomeBatchNo",detailInfo.getIncomeBatchNo());
detailMap.put("checkNo",detailInfo.getCheckNo());
@ -162,11 +163,12 @@ public class QcCheckTaskIncomeController extends BaseController {
detailMap.put("incomeTime",DateUtils.parseDateToStr("yyyy-MM-dd",detailInfo.getIncomeTime()));
detailMap.put("checkResult",detailInfo.getCheckResult().equals("Y")?"√合格":"×不合格");
detailMap.put("checkManName",detailInfo.getCheckManName());
detailMap.put("remark",detailInfo.getRemark());
//表格结构数据
ArrayList<ExcelCol> excelCols = new ArrayList<>();
excelCols.add(new ExcelCol("检验项目", "ruleName", 30));
excelCols.add(new ExcelCol("标准要求", "checkStandard", 30));
excelCols.add(new ExcelCol("抽检数", "samplePlan", 30));
excelCols.add(new ExcelCol("实测结果", "actualValue", 30));
excelCols.add(new ExcelCol("判定", "status", 30));
excelCols.add(new ExcelCol("附件", "fileUrls", 30));

@ -145,8 +145,12 @@ public class QcCheckUnqualifiedController extends BaseController {
public List<QcCheckUnqualified> getUnqualifiedListMobile(QcCheckUnqualified qcCheckUnqualified) {
qcCheckUnqualified.setDelFlag("0");
DynamicDataSourceContextHolder.push(qcCheckUnqualified.getFactoryCode());
List<QcCheckUnqualified> list = qcCheckUnqualifiedService.selectQcCheckUnqualifiedList(qcCheckUnqualified);
return list;
try {
List<QcCheckUnqualified> list = qcCheckUnqualifiedService.selectQcCheckUnqualifiedList(qcCheckUnqualified);
return list;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
* oa
@ -155,17 +159,22 @@ public class QcCheckUnqualifiedController extends BaseController {
public List<OAInfo> getOAInfoListMobile(QcCheckUnqualified qcCheckUnqualified) {
List<OAInfo> list = qcCheckUnqualifiedService.getOAInfoList(qcCheckUnqualified);
DynamicDataSourceContextHolder.push("master");
SysDictData sData = new SysDictData();
sData.setDictType("logtype");
Map<String, SysDictData> dictMap = qcCheckTypeProjectMapper.getDictMap(sData);
if (dictMap != null) {
for (OAInfo dto : list) {
if (StringUtils.isNotBlank(dto.getLOGTYPE())) {
dto.setLOGTYPE(dictMap.get(dto.getLOGTYPE()).getDictLabel());
}
try {
SysDictData sData = new SysDictData();
sData.setDictType("logtype");
Map<String, SysDictData> dictMap = qcCheckTypeProjectMapper.getDictMap(sData);
if (dictMap != null) {
for (OAInfo dto : list) {
if (StringUtils.isNotBlank(dto.getLOGTYPE())) {
dto.setLOGTYPE(dictMap.get(dto.getLOGTYPE()).getDictLabel());
}
}
}
return list;
}finally {
DynamicDataSourceContextHolder.poll();
}
return list;
}
}

@ -234,13 +234,18 @@ public class QuaController extends BaseController {
// if(CollectionUtils.isEmpty(qcCheckTaskIncome.getQcCheckTaskDetails())){
// return error("[List<QcCheckTaskDetail>]不能为空");
// }
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateBy())){
return error("[updateBy]不能为空");
try {
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateBy())){
return error("[updateBy]不能为空");
}
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateByName())){
return error("[updateByName]不能为空");
}
return toAjax(qcCheckTaskIncomeService.commitCheckResults(qcCheckTaskIncome));
}finally {
DynamicDataSourceContextHolder.poll();
}
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateByName())){
return error("[updateByName]不能为空");
}
return toAjax(qcCheckTaskIncomeService.commitCheckResults(qcCheckTaskIncome));
}
@PostMapping(value = "commitCheckResultsCg")
public AjaxResult commitCheckResultsCg(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) {
@ -248,13 +253,18 @@ public class QuaController extends BaseController {
// if(CollectionUtils.isEmpty(qcCheckTaskIncome.getQcCheckTaskDetails())){
// return error("[List<QcCheckTaskDetail>]不能为空");
// }
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateBy())){
return error("[updateBy]不能为空");
try {
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateBy())){
return error("[updateBy]不能为空");
}
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateByName())){
return error("[updateByName]不能为空");
}
return toAjax(qcCheckTaskIncomeService.commitCheckResultsCg(qcCheckTaskIncome));
}finally {
DynamicDataSourceContextHolder.poll();
}
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateByName())){
return error("[updateByName]不能为空");
}
return toAjax(qcCheckTaskIncomeService.commitCheckResultsCg(qcCheckTaskIncome));
}
@PostMapping(value = "getUserIdList")
@ -285,7 +295,12 @@ public class QuaController extends BaseController {
@GetMapping("/pdaMaterialTree")
public AjaxResult pdaMaterialTree(QcMaterialGroup materialGroup) {
DynamicDataSourceContextHolder.push(materialGroup.getFactoryCode());
return success(qcMaterialGroupService.selectQcMaterialTreeList(materialGroup));
try {
return success(qcMaterialGroupService.selectQcMaterialTreeList(materialGroup));
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -295,68 +310,114 @@ public class QuaController extends BaseController {
@GetMapping("/getCheckTypeProjectList")
public TableDataInfo list(QcCheckTypeProject qcCheckTypeProject) {
DynamicDataSourceContextHolder.push(qcCheckTypeProject.getFactoryCode());
startPage();
List<QcCheckTypeProject> list = qcMaterialGroupService.getCheckTypeProjectList(qcCheckTypeProject);
return getDataTable(list);
try {
startPage();
List<QcCheckTypeProject> list = qcMaterialGroupService.getCheckTypeProjectList(qcCheckTypeProject);
return getDataTable(list);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@GetMapping("/getUnqualifiedList")
public TableDataInfo getUnqualifiedList(QcCheckUnqualified qcCheckUnqualified) {
DynamicDataSourceContextHolder.push(qcCheckUnqualified.getFactoryCode());
startPage();
qcCheckUnqualified.setDelFlag("0");
List<QcCheckUnqualified> list = qcCheckUnqualifiedService.selectQcCheckUnqualifiedList(qcCheckUnqualified);
return getDataTable(list);
try {
startPage();
qcCheckUnqualified.setDelFlag("0");
List<QcCheckUnqualified> list = qcCheckUnqualifiedService.selectQcCheckUnqualifiedList(qcCheckUnqualified);
return getDataTable(list);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**获取来料工单列表**/
@GetMapping("/getLLWorkOrder")
public TableDataInfo getLLWorkOrder(QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
startPage();
List<QcCheckTaskIncome> list = qcCheckTaskIncomeService.getLLWorkOrder(qcCheckTaskIncome);
return getDataTable(list);
try {
startPage();
List<QcCheckTaskIncome> list = qcCheckTaskIncomeService.getLLWorkOrder(qcCheckTaskIncome);
return getDataTable(list);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**不良类型**/
@PostMapping("/getDefectListPDA")
public List<QcDefectType> getDefectListPDA(@RequestBody QcDefectType qcDefectType) {
DynamicDataSourceContextHolder.push(qcDefectType.getFactoryCode());
return qcCheckTaskIncomeService.getDefectListPDA(qcDefectType);
try {
return qcCheckTaskIncomeService.getDefectListPDA(qcDefectType);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**检测地点编码名称**/
@PostMapping("/getCheckLocList")
public List<QcDefectType> getCheckLocList(@RequestBody QcDefectType qcDefectType) {
DynamicDataSourceContextHolder.push(qcDefectType.getFactoryCode());
return qcCheckTaskIncomeService.getCheckLocList(qcDefectType);
try {
return qcCheckTaskIncomeService.getCheckLocList(qcDefectType);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**获取生产工单列表**/
@GetMapping("/getWorkOrder")
public TableDataInfo getWorkOrder(QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
startPage();
List<QcCheckTaskIncome> list = qcCheckTaskIncomeService.getWorkOrder(qcCheckTaskIncome);
return getDataTable(list);
try {
startPage();
List<QcCheckTaskIncome> list = qcCheckTaskIncomeService.getWorkOrder(qcCheckTaskIncome);
return getDataTable(list);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@PostMapping("/getBatchList")
public List<QcCheckTaskIncome> getBatchList(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
return qcCheckTaskIncomeService.getBatchList(qcCheckTaskIncome);
try {
return qcCheckTaskIncomeService.getBatchList(qcCheckTaskIncome);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**当前正在生产的线体,正在运行的订单**/
@PostMapping("/getLineProOrder")
public List<QcCheckTaskIncome> getLineProOrder(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
return qcCheckTaskIncomeService.getLineProOrder(qcCheckTaskIncome);
try {
return qcCheckTaskIncomeService.getLineProOrder(qcCheckTaskIncome);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**成品抽检提交**/
@PostMapping(value = "/commitCPCJCheck")
public AjaxResult commitCPCJCheck(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
return toAjax(qcCheckTaskIncomeService.commitCPCJCheck(qcCheckTaskIncome));
try {
return toAjax(qcCheckTaskIncomeService.commitCPCJCheck(qcCheckTaskIncome));
}finally {
DynamicDataSourceContextHolder.poll();
}
}
}

@ -169,45 +169,50 @@ public class QcCheckTaskDetailServiceImpl implements IQcCheckTaskDetailService {
private void resendWXFunc(String poolName){
DynamicDataSourceContextHolder.push(poolName); //这是数据源的key
List<QcCheckReportIncome> noCheckList = qcCheckTaskDetailMapper.selectNoCheckList();
//发企业微信--------------------开始
SysNoticeGroup noticeQo = new SysNoticeGroup();
//筛选成品检验 id 7
try {
List<QcCheckReportIncome> noCheckList = qcCheckTaskDetailMapper.selectNoCheckList();
//发企业微信--------------------开始
SysNoticeGroup noticeQo = new SysNoticeGroup();
//筛选成品检验 id 7
// List<QcCheckReportIncome> noCheckListCP = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeCP")).collect(Collectors.toList());
// String CP = StringUtils.join(noCheckListCP.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
//批次成品检验 id 12
List<QcCheckReportIncome> noCheckListCPPC = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeCPPC")).collect(Collectors.toList());
String CPPC = StringUtils.join(noCheckListCPPC.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
//来料检验 id 6
List<QcCheckReportIncome> noCheckListLL = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeLL")).collect(Collectors.toList());
String LL = StringUtils.join(noCheckListLL.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
//过程巡检 id 20
List<QcCheckReportIncome> noCheckListSCXJ = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeSCXJ")).collect(Collectors.toList());
String SCXJ = StringUtils.join(noCheckListSCXJ.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
//首件检验 id 19
List<QcCheckReportIncome> noCheckListSC = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeSC")).collect(Collectors.toList());
String SC = StringUtils.join(noCheckListSC.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
//批次成品检验 id 12
List<QcCheckReportIncome> noCheckListCPPC = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeCPPC")).collect(Collectors.toList());
String CPPC = StringUtils.join(noCheckListCPPC.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
//来料检验 id 6
List<QcCheckReportIncome> noCheckListLL = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeLL")).collect(Collectors.toList());
String LL = StringUtils.join(noCheckListLL.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
//过程巡检 id 20
List<QcCheckReportIncome> noCheckListSCXJ = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeSCXJ")).collect(Collectors.toList());
String SCXJ = StringUtils.join(noCheckListSCXJ.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
//首件检验 id 19
List<QcCheckReportIncome> noCheckListSC = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeSC")).collect(Collectors.toList());
String SC = StringUtils.join(noCheckListSC.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),",");
// if(noCheckListCP != null || noCheckListCP.size() > 0) {
// noticeQo.setNoticeId(7L);
// sendWeChartMessage(noticeQo,CP,noCheckListCP.size()+"个成品检验",noCheckListCP);
// }
if(noCheckListCPPC != null || noCheckListCPPC.size() > 0){
noticeQo.setNoticeId(12L);
sendWeChartMessage(noticeQo,CPPC,noCheckListCPPC.size()+"个批次成品检验",noCheckListCPPC);
}
if(noCheckListLL != null || noCheckListLL.size() > 0){
noticeQo.setNoticeId(6L);
sendWeChartMessage(noticeQo,LL,noCheckListLL.size()+"个来料检验",noCheckListLL);
}
if(noCheckListSCXJ != null || noCheckListSCXJ.size() > 0){
noticeQo.setNoticeId(20L);
sendWeChartMessage(noticeQo,SCXJ,noCheckListSCXJ.size()+"个过程巡检",noCheckListSCXJ);
}
if(noCheckListSC != null || noCheckListSC.size() > 0){
noticeQo.setNoticeId(19L);
sendWeChartMessage(noticeQo,SC,noCheckListSC.size()+"个首件检验",noCheckListSC);
if(noCheckListCPPC != null || noCheckListCPPC.size() > 0){
noticeQo.setNoticeId(12L);
sendWeChartMessage(noticeQo,CPPC,noCheckListCPPC.size()+"个批次成品检验",noCheckListCPPC);
}
if(noCheckListLL != null || noCheckListLL.size() > 0){
noticeQo.setNoticeId(6L);
sendWeChartMessage(noticeQo,LL,noCheckListLL.size()+"个来料检验",noCheckListLL);
}
if(noCheckListSCXJ != null || noCheckListSCXJ.size() > 0){
noticeQo.setNoticeId(20L);
sendWeChartMessage(noticeQo,SCXJ,noCheckListSCXJ.size()+"个过程巡检",noCheckListSCXJ);
}
if(noCheckListSC != null || noCheckListSC.size() > 0){
noticeQo.setNoticeId(19L);
sendWeChartMessage(noticeQo,SC,noCheckListSC.size()+"个首件检验",noCheckListSC);
}
}finally {
DynamicDataSourceContextHolder.poll();
}
}
private void sendWeChartMessage(SysNoticeGroup noticeQo,String checkNoList,String message,List<QcCheckReportIncome> noCheckList){

@ -152,47 +152,48 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
public int insertQcCheckTaskIncome(QcCheckTaskIncome qcCheckTaskIncome) {
logger.info("impl创建检验任务接收参数"+JSONObject.toJSONString(qcCheckTaskIncome));
DynamicDataSourceContextHolder.push("ds_" + qcCheckTaskIncome.getFactoryCode());
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = qcCheckTaskIncomeMapper.getTodayMaxNum(qcCheckTaskIncome);
String liushuiStr = String.format("%04d", liushuiNum);
try {
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = qcCheckTaskIncomeMapper.getTodayMaxNum(qcCheckTaskIncome);
String liushuiStr = String.format("%04d", liushuiNum);
String createBy = SecurityUtils.getUsername();
Date nowDate= DateUtils.getNowDate();
//获取当前所选工厂
String factoryCode = qcCheckTaskIncome.getFactoryCode();
String createBy = SecurityUtils.getUsername();
Date nowDate= DateUtils.getNowDate();
//获取当前所选工厂
String factoryCode = qcCheckTaskIncome.getFactoryCode();
qcCheckTaskIncome.setCheckNo(bpDD+liushuiStr);
qcCheckTaskIncome.setCheckNo(bpDD+liushuiStr);
/**取检测项**/
QcCheckTypeProject qctp= new QcCheckTypeProject();
qctp.setTypeId(qcCheckTaskIncome.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskIncome.getMaterialCode());//特性
/**qc_check_type_project**///个性
List<QcCheckTaskDetail> items = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskIncome.getMaterialCode());
//共性
if(group == null){//默认
group = new QcMaterialGroupDetail();
QcProjectType initGroup = qcCheckTypeProjectMapper.getProductGroup(qcCheckTaskIncome.getMaterialCode());
if(initGroup != null){
group.setGroupId(initGroup.getGroupId());
}else{
/**取检测项**/
QcCheckTypeProject qctp= new QcCheckTypeProject();
qctp.setTypeId(qcCheckTaskIncome.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskIncome.getMaterialCode());//特性
/**qc_check_type_project**///个性
List<QcCheckTaskDetail> items = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskIncome.getMaterialCode());
//共性
if(group == null){//默认
group = new QcMaterialGroupDetail();
QcProjectType initGroup = qcCheckTypeProjectMapper.getProductGroup(qcCheckTaskIncome.getMaterialCode());
if(initGroup != null){
group.setGroupId(initGroup.getGroupId());
}else{
return 0;//没有找到检测项目
}
}
List<QcCheckTaskDetail> itemsGG = new ArrayList<>();
if(StringUtils.isNotBlank(group.getGroupId())){
qctp.setGroupId(group.getGroupId());
itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
}
items.addAll(itemsGG);
/**qc_check_task_detail**/
if(CollectionUtils.isEmpty(items)){
logger.info("检验任务创建参数缺失:"+qcCheckTaskIncome.getMaterialCode());
return 0;//没有找到检测项目
}
}
List<QcCheckTaskDetail> itemsGG = new ArrayList<>();
if(StringUtils.isNotBlank(group.getGroupId())){
qctp.setGroupId(group.getGroupId());
itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
}
items.addAll(itemsGG);
/**qc_check_task_detail**/
if(CollectionUtils.isEmpty(items)){
logger.info("检验任务创建参数缺失:"+qcCheckTaskIncome.getMaterialCode());
return 0;//没有找到检测项目
}
// //抽样方案
// String sampleQua = this.getSampleQua(qcCheckTaskIncome);
@ -202,109 +203,113 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
// }
/**qc_check_task**/
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskIncome.setRecordId(beLongId);
qcCheckTaskIncome.setFactoryCode(factoryCode);
qcCheckTaskIncome.setCreateTime(nowDate);
//String typeCode = qcCheckTaskIncomeMapper.getTypeCode(qcCheckTaskIncome.getCheckType());
qcCheckTaskIncome.setTypeCode("material");//大检验节点
/**qc_task_user start**/
List<QcUserMaterialDTO> users = null;
if(StringUtils.isNotBlank(qcCheckTaskIncome.getCheckManName())){//管理系统创建任务
String checkManName = qcCheckTaskIncome.getCheckManName();
String checkManCode = qcCheckTaskIncome.getCheckManCode();
qcCheckTaskIncome.setCheckManName("");
qcCheckTaskIncome.setCheckManCode("");
String[] splitNames = checkManName.split(",");
String[] splitCodes = checkManCode.split(",");
List<QcCheckTaskUser> qcCheckTaskUserList = new ArrayList<>();
for (int i = 0; i < splitNames.length; i++) {
QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser();
qcCheckTaskUser.setCheckManName(splitNames[i]);
qcCheckTaskUser.setCheckManCode(splitCodes[i]);
qcCheckTaskUser.setCheckNo(qcCheckTaskIncome.getCheckNo());
qcCheckTaskUser.setBelongTo(beLongId);
qcCheckTaskUser.setFactoryCode(factoryCode);
/**qc_check_task**/
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskIncome.setRecordId(beLongId);
qcCheckTaskIncome.setFactoryCode(factoryCode);
qcCheckTaskIncome.setCreateTime(nowDate);
//String typeCode = qcCheckTaskIncomeMapper.getTypeCode(qcCheckTaskIncome.getCheckType());
qcCheckTaskIncome.setTypeCode("material");//大检验节点
/**qc_task_user start**/
List<QcUserMaterialDTO> users = null;
if(StringUtils.isNotBlank(qcCheckTaskIncome.getCheckManName())){//管理系统创建任务
String checkManName = qcCheckTaskIncome.getCheckManName();
String checkManCode = qcCheckTaskIncome.getCheckManCode();
qcCheckTaskIncome.setCheckManName("");
qcCheckTaskIncome.setCheckManCode("");
String[] splitNames = checkManName.split(",");
String[] splitCodes = checkManCode.split(",");
List<QcCheckTaskUser> qcCheckTaskUserList = new ArrayList<>();
for (int i = 0; i < splitNames.length; i++) {
QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser();
qcCheckTaskUser.setCheckManName(splitNames[i]);
qcCheckTaskUser.setCheckManCode(splitCodes[i]);
qcCheckTaskUser.setCheckNo(qcCheckTaskIncome.getCheckNo());
qcCheckTaskUser.setBelongTo(beLongId);
qcCheckTaskUser.setFactoryCode(factoryCode);
qcCheckTaskUserList.add(qcCheckTaskUser);
}
//检验人插入
qcCheckTaskUserService.insertQcCheckTaskUserPDA(qcCheckTaskUserList);
}else{
qcCheckTaskIncome.setCheckManName("");
qcCheckTaskIncome.setCheckManCode("");
/**qc_user_material取默认检查人**/
qcCheckTaskIncome.setBelongTo(group.getGroupId());
users = qcCheckTaskIncomeMapper.getCheckUserBelongStandar(qcCheckTaskIncome);
if(CollectionUtils.isEmpty(users)){
users = qcCheckTaskIncomeMapper.getCheckUser(qcCheckTaskIncome);
}
for(QcUserMaterialDTO user:users){
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskIncome.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
}
qcCheckTaskUserList.add(qcCheckTaskUser);
}
//检验人插入
qcCheckTaskUserService.insertQcCheckTaskUserPDA(qcCheckTaskUserList);
}else{
qcCheckTaskIncome.setCheckManName("");
qcCheckTaskIncome.setCheckManCode("");
/**qc_user_material取默认检查人**/
qcCheckTaskIncome.setBelongTo(group.getGroupId());
users = qcCheckTaskIncomeMapper.getCheckUserBelongStandar(qcCheckTaskIncome);
if(CollectionUtils.isEmpty(users)){
users = qcCheckTaskIncomeMapper.getCheckUser(qcCheckTaskIncome);
}
for(QcUserMaterialDTO user:users){
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskIncome.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
}
int m=qcCheckTaskIncomeMapper.addCheckUsers(users);
logger.info("检查人新增"+m+"成功");
int m=qcCheckTaskIncomeMapper.addCheckUsers(users);
logger.info("检查人新增"+m+"成功");
}
/** 不良品数据插入 */
BigDecimal noOkQuality = new BigDecimal(0);
List<QcCheckTaskDefect> defectList = qcCheckTaskIncome.getDefects();
if (!CollectionUtils.isEmpty(defectList)) {
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(beLongId);
//qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
noOkQuality = noOkQuality.add(defect.getNoOkQuality()==null?new BigDecimal("0"):defect.getNoOkQuality());
}
}
qcCheckTaskIncome.setNoOkQuality(noOkQuality);
/**qc_check_task**///------------------zxl
qcCheckTaskIncomeMapper.insertQcCheckTaskIncome(qcCheckTaskIncome);
/**qc_check_task_detail**/
for(QcCheckTaskDetail item:items){
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
int s = qcCheckTaskDetailMapper.addBatch(items);
//发企业微信--------------------开始
SysNoticeGroup noticeQo = new SysNoticeGroup();
noticeQo.setNoticeId(6L);
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = notices.get(0).getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskIncome.getCheckNo() + "\n");
Matcher m = p2.matcher(contentInfo);
contentInfo = m.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
CompletableFuture.runAsync(() -> {
System.out.println("异步执行企业微信发送");
AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(result));
});
}
//发企业微信--------------------结束
}
return s;
}finally {
DynamicDataSourceContextHolder.poll();
}
/** 不良品数据插入 */
BigDecimal noOkQuality = new BigDecimal(0);
List<QcCheckTaskDefect> defectList = qcCheckTaskIncome.getDefects();
if (!CollectionUtils.isEmpty(defectList)) {
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(beLongId);
//qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
noOkQuality = noOkQuality.add(defect.getNoOkQuality()==null?new BigDecimal("0"):defect.getNoOkQuality());
}
}
qcCheckTaskIncome.setNoOkQuality(noOkQuality);
/**qc_check_task**///------------------zxl
qcCheckTaskIncomeMapper.insertQcCheckTaskIncome(qcCheckTaskIncome);
/**qc_check_task_detail**/
for(QcCheckTaskDetail item:items){
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
int s = qcCheckTaskDetailMapper.addBatch(items);
//发企业微信--------------------开始
SysNoticeGroup noticeQo = new SysNoticeGroup();
noticeQo.setNoticeId(6L);
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = notices.get(0).getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskIncome.getCheckNo() + "\n");
Matcher m = p2.matcher(contentInfo);
contentInfo = m.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
CompletableFuture.runAsync(() -> {
System.out.println("异步执行企业微信发送");
AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(result));
});
}
//发企业微信--------------------结束
}
return s;
}
/**
@ -845,41 +850,46 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
if(StringUtils.isNotBlank(income.getFactoryCode())){
DynamicDataSourceContextHolder.push(income.getFactoryCode());
}
String recordIds = income.getRecordId();
int m = 1;
//检测是否有已经检验的任务
int checkedNum = qcCheckTaskIncomeMapper.checkedTask("'"+recordIds.replace(",","','")+"'");
if(checkedNum>0){
return 2;
}
//供应商、物料、送货日期是否一致
List<QcCheckTaskIncome> checkedInfo = qcCheckTaskIncomeMapper.checkedTaskInfo("'"+recordIds.replace(",","','")+"'");
if(!CollectionUtils.isEmpty(checkedInfo) && checkedInfo.size()>1){
return 3;
}
//合并任务,向最新任务合并
List<QcCheckTaskIncome> taskLists = qcCheckTaskIncomeMapper.getTaskList("'"+recordIds.replace(",","','")+"'");
BigDecimal qua = BigDecimal.ZERO;
String deleteIds = "";
for(int n=0;n<taskLists.size();n++){
QcCheckTaskIncome task = taskLists.get(n);
qua = qua.add(task.getQuality());
if(n!=0){
deleteIds+= task.getRecordId()+",";
try {
String recordIds = income.getRecordId();
int m = 1;
//检测是否有已经检验的任务
int checkedNum = qcCheckTaskIncomeMapper.checkedTask("'"+recordIds.replace(",","','")+"'");
if(checkedNum>0){
return 2;
}
}
QcCheckTaskIncome lastTask = taskLists.get(0);
lastTask.setQuality(qua);
qcCheckTaskIncomeMapper.updateLastTask(lastTask);
//供应商、物料、送货日期是否一致
List<QcCheckTaskIncome> checkedInfo = qcCheckTaskIncomeMapper.checkedTaskInfo("'"+recordIds.replace(",","','")+"'");
if(!CollectionUtils.isEmpty(checkedInfo) && checkedInfo.size()>1){
return 3;
}
//合并任务,向最新任务合并
List<QcCheckTaskIncome> taskLists = qcCheckTaskIncomeMapper.getTaskList("'"+recordIds.replace(",","','")+"'");
BigDecimal qua = BigDecimal.ZERO;
String deleteIds = "";
for(int n=0;n<taskLists.size();n++){
QcCheckTaskIncome task = taskLists.get(n);
qua = qua.add(task.getQuality());
if(n!=0){
deleteIds+= task.getRecordId()+",";
}
}
QcCheckTaskIncome lastTask = taskLists.get(0);
lastTask.setQuality(qua);
qcCheckTaskIncomeMapper.updateLastTask(lastTask);
//删除其它任务
deleteIds = "'"+
deleteIds.replace(",","','")
+"'";
qcCheckTaskIncomeMapper.deleteTask(deleteIds);
qcCheckTaskIncomeMapper.deleteTaskDetail(deleteIds);
qcCheckTaskIncomeMapper.deleteTaskUser(deleteIds);
return m;
}finally {
DynamicDataSourceContextHolder.poll();
}
//删除其它任务
deleteIds = "'"+
deleteIds.replace(",","','")
+"'";
qcCheckTaskIncomeMapper.deleteTask(deleteIds);
qcCheckTaskIncomeMapper.deleteTaskDetail(deleteIds);
qcCheckTaskIncomeMapper.deleteTaskUser(deleteIds);
return m;
}
@Override
@ -1330,7 +1340,12 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
@Override
public List<QcCheckTaskIncome> getIncomeBatchList(String poolName) {
DynamicDataSourceContextHolder.push(poolName);//这是数据源的key
return qcCheckTaskIncomeMapper.getIncomeBatchList();
try {
return qcCheckTaskIncomeMapper.getIncomeBatchList();
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override

@ -484,44 +484,49 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
}
public void createProduceXJFunc(String poolName){
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO();
qoWork.setStatus("w2");
//活动中
List<QcCheckTaskProduce> w2works = qcCheckTaskProduceMapper.getOrderWorksW2(qoWork);
for(QcCheckTaskProduce productTask:w2works){
productTask.setCheckType("checkTypeSCXJ");//过程检验-巡检
productTask.setOrderNo(productTask.getWorkorderCode());
try {
ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO();
qoWork.setStatus("w2");
//活动中
List<QcCheckTaskProduce> w2works = qcCheckTaskProduceMapper.getOrderWorksW2(qoWork);
for(QcCheckTaskProduce productTask:w2works){
productTask.setCheckType("checkTypeSCXJ");//过程检验-巡检
productTask.setOrderNo(productTask.getWorkorderCode());
//获取最新一条巡检数据
QcCheckTaskProduce lastXJ = qcCheckTaskProduceMapper.getLastXJTask(productTask);
if(lastXJ != null ){
productTask.setProductType(lastXJ.getProductType());
productTask.setConfirmManCode(lastXJ.getConfirmManCode());
productTask.setConfirmManName(lastXJ.getConfirmManName());
productTask.setCreateTime(lastXJ.getCreateTime());
}
Date nowTime = DateUtils.getNowDate();
Date startTime = productTask.getCreateTime();
LocalTime startTime0 = LocalTime.parse("11:30");
LocalTime endTime0 = LocalTime.parse("12:30");
LocalTime currentTime = LocalTime.now();
if (currentTime.isAfter(startTime0.minusSeconds(1)) && currentTime.isBefore(endTime0.plusSeconds(1))) {
// 当前时间在11:30到12:30之间不执行任务
logger.info("++++++++++++过程检验巡检任务生成午间休息++++++++++++++");
} else {
long mins = 60L;
if(startTime != null){
mins = DateUtil.between(startTime, nowTime, DateUnit.MINUTE);
//获取最新一条巡检数据
QcCheckTaskProduce lastXJ = qcCheckTaskProduceMapper.getLastXJTask(productTask);
if(lastXJ != null ){
productTask.setProductType(lastXJ.getProductType());
productTask.setConfirmManCode(lastXJ.getConfirmManCode());
productTask.setConfirmManName(lastXJ.getConfirmManName());
productTask.setCreateTime(lastXJ.getCreateTime());
}
Date nowTime = DateUtils.getNowDate();
Date startTime = productTask.getCreateTime();
LocalTime startTime0 = LocalTime.parse("11:30");
LocalTime endTime0 = LocalTime.parse("12:30");
LocalTime currentTime = LocalTime.now();
if(mins>=60){
int m = insertQcCheckTaskProduce(productTask);
logger.info("++++++++++++过程检验巡检任务生成" + m + "++++++++++++++");
if (currentTime.isAfter(startTime0.minusSeconds(1)) && currentTime.isBefore(endTime0.plusSeconds(1))) {
// 当前时间在11:30到12:30之间不执行任务
logger.info("++++++++++++过程检验巡检任务生成午间休息++++++++++++++");
} else {
long mins = 60L;
if(startTime != null){
mins = DateUtil.between(startTime, nowTime, DateUnit.MINUTE);
}
if(mins>=60){
int m = insertQcCheckTaskProduce(productTask);
logger.info("++++++++++++过程检验巡检任务生成" + m + "++++++++++++++");
}
}
}
logger.info("++++++++++++" + poolName + "++++过程检验巡检结束++++++++++");
}finally {
DynamicDataSourceContextHolder.poll();
}
logger.info("++++++++++++" + poolName + "++++过程检验巡检结束++++++++++");
}
public static void main(String args[]) throws ParseException {

@ -138,118 +138,118 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
@Override
//@Transactional(rollbackFor = Exception.class)不能加
public int insertQcCheckTaskWarehousing(QcCheckTaskWarehousing qcCheckTaskWarehousing) {
if(StringUtils.isNotBlank(qcCheckTaskWarehousing.getFactoryCode())){
DynamicDataSourceContextHolder.push("ds_"+qcCheckTaskWarehousing.getFactoryCode());
}else{
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String key = "#header.poolName";
qcCheckTaskWarehousing.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_",""));
}
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = qcCheckTaskWarehousingMapper.getTodayMaxNum(qcCheckTaskWarehousing);
String liushuiStr = String.format("%04d", liushuiNum);
String createBy = SecurityUtils.getUsername();
Date nowDate= DateUtils.getNowDate();
String factoryCode = qcCheckTaskWarehousing.getFactoryCode();
qcCheckTaskWarehousing.setCheckNo(bpDD+liushuiStr);
/**取检测项**/
QcCheckTypeProject qctp= new QcCheckTypeProject();
qctp.setTypeId(qcCheckTaskWarehousing.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskWarehousing.getMaterialCode());//特性
/**qc_check_type_project**/
List<QcCheckTaskDetail> items = new ArrayList<>();
List<QcCheckTaskDetail> items0 = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);//个性
items.addAll(items0);
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskWarehousing.getMaterialCode());
if(group == null){
group = new QcMaterialGroupDetail();
QcProjectType initGroup = qcCheckTypeProjectMapper.getProductGroup(qcCheckTaskWarehousing.getMaterialCode());
if(initGroup != null){//包材共性
group.setGroupId(initGroup.getGroupId());
}else {//成品蚊香物料组
group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");
try {
if(StringUtils.isNotBlank(qcCheckTaskWarehousing.getFactoryCode())){
DynamicDataSourceContextHolder.push("ds_"+qcCheckTaskWarehousing.getFactoryCode());
}else{
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String key = "#header.poolName";
qcCheckTaskWarehousing.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_",""));
}
}
qctp.setGroupId(group.getGroupId());//共性
List<QcCheckTaskDetail> itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
items.addAll(itemsGG);
/**qc_check_task_detail**/
if(CollectionUtils.isEmpty(items)){
return 0;//没有找到检测项目
}
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = qcCheckTaskWarehousingMapper.getTodayMaxNum(qcCheckTaskWarehousing);
String liushuiStr = String.format("%04d", liushuiNum);
/**qc_check_task**/
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskWarehousing.setRecordId(beLongId);
qcCheckTaskWarehousing.setFactoryCode(factoryCode);
qcCheckTaskWarehousing.setCreateTime(nowDate);
qcCheckTaskWarehousing.setTypeCode("product");//大检验节点
/**qc_task_user start**/
if(StringUtils.isNotBlank(qcCheckTaskWarehousing.getCheckManName())){
String checkManName = qcCheckTaskWarehousing.getCheckManName();
String checkManCode = qcCheckTaskWarehousing.getCheckManCode();
qcCheckTaskWarehousing.setCheckManName("");
qcCheckTaskWarehousing.setCheckManCode("");
String[] splitNames = checkManName.split(",");
String[] splitCodes = checkManCode.split(",");
List<QcCheckTaskUser> qcCheckTaskUserList = new ArrayList<>();
for (int i = 0; i < splitNames.length; i++) {
QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser();
qcCheckTaskUser.setCheckManName(splitNames[i]);
qcCheckTaskUser.setCheckManCode(splitCodes[i]);
qcCheckTaskUser.setCheckNo(qcCheckTaskWarehousing.getCheckNo());
qcCheckTaskUser.setBelongTo(beLongId);
qcCheckTaskUser.setFactoryCode(factoryCode);
qcCheckTaskUserList.add(qcCheckTaskUser);
}
//检验人插入
qcCheckTaskUserService.insertQcCheckTaskUserPDA(qcCheckTaskUserList);
}else{//上位机触发
qcCheckTaskWarehousing.setCheckManName("");
qcCheckTaskWarehousing.setCheckManCode("");
/**qc_user_material取默认检查人**/
String createBy = SecurityUtils.getUsername();
Date nowDate= DateUtils.getNowDate();
QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome();
qcCheckTaskIncome.setCheckType(qcCheckTaskWarehousing.getCheckType());
qcCheckTaskIncome.setMaterialCode(qcCheckTaskWarehousing.getMaterialCode());
qcCheckTaskIncome.setCheckLoc(qcCheckTaskWarehousing.getCheckLoc());
List<QcUserMaterialDTO> users = qcCheckTaskIncomeMapper.getCheckUserBelongLine(qcCheckTaskIncome);
if(CollectionUtils.isEmpty(users)){
users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskWarehousing.getCheckType());
}
if(!CollectionUtils.isEmpty(users)){
for(QcUserMaterialDTO user:users){
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskWarehousing.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
String factoryCode = qcCheckTaskWarehousing.getFactoryCode();
qcCheckTaskWarehousing.setCheckNo(bpDD+liushuiStr);
/**取检测项**/
QcCheckTypeProject qctp= new QcCheckTypeProject();
qctp.setTypeId(qcCheckTaskWarehousing.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskWarehousing.getMaterialCode());//特性
/**qc_check_type_project**/
List<QcCheckTaskDetail> items = new ArrayList<>();
List<QcCheckTaskDetail> items0 = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);//个性
items.addAll(items0);
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskWarehousing.getMaterialCode());
if(group == null){
group = new QcMaterialGroupDetail();
QcProjectType initGroup = qcCheckTypeProjectMapper.getProductGroup(qcCheckTaskWarehousing.getMaterialCode());
if(initGroup != null){//包材共性
group.setGroupId(initGroup.getGroupId());
}else {//成品蚊香物料组
group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");
}
}
qctp.setGroupId(group.getGroupId());//共性
List<QcCheckTaskDetail> itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
items.addAll(itemsGG);
/**qc_check_task_user**/
int m=qcCheckTaskIncomeMapper.addCheckUsers(users);
logger.info("检查人新增"+m+"成功");
}
/** 不良品数据插入 */
BigDecimal noOkQuality = new BigDecimal(0);
List<QcCheckTaskDefect> defectList = qcCheckTaskWarehousing.getDefects();
if (!CollectionUtils.isEmpty(defectList)) {
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(beLongId);
//qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
noOkQuality = noOkQuality.add(defect.getNoOkQuality()==null?new BigDecimal("0"):defect.getNoOkQuality());
/**qc_check_task_detail**/
if(CollectionUtils.isEmpty(items)){
return 0;//没有找到检测项目
}
}
qcCheckTaskWarehousing.setNoOkQuality(noOkQuality);
/**qc_check_task**/
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskWarehousing.setRecordId(beLongId);
qcCheckTaskWarehousing.setFactoryCode(factoryCode);
qcCheckTaskWarehousing.setCreateTime(nowDate);
qcCheckTaskWarehousing.setTypeCode("product");//大检验节点
/**qc_task_user start**/
if(StringUtils.isNotBlank(qcCheckTaskWarehousing.getCheckManName())){
String checkManName = qcCheckTaskWarehousing.getCheckManName();
String checkManCode = qcCheckTaskWarehousing.getCheckManCode();
qcCheckTaskWarehousing.setCheckManName("");
qcCheckTaskWarehousing.setCheckManCode("");
String[] splitNames = checkManName.split(",");
String[] splitCodes = checkManCode.split(",");
List<QcCheckTaskUser> qcCheckTaskUserList = new ArrayList<>();
for (int i = 0; i < splitNames.length; i++) {
QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser();
qcCheckTaskUser.setCheckManName(splitNames[i]);
qcCheckTaskUser.setCheckManCode(splitCodes[i]);
qcCheckTaskUser.setCheckNo(qcCheckTaskWarehousing.getCheckNo());
qcCheckTaskUser.setBelongTo(beLongId);
qcCheckTaskUser.setFactoryCode(factoryCode);
qcCheckTaskUserList.add(qcCheckTaskUser);
}
//检验人插入
qcCheckTaskUserService.insertQcCheckTaskUserPDA(qcCheckTaskUserList);
}else{//上位机触发
qcCheckTaskWarehousing.setCheckManName("");
qcCheckTaskWarehousing.setCheckManCode("");
/**qc_user_material取默认检查人**/
QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome();
qcCheckTaskIncome.setCheckType(qcCheckTaskWarehousing.getCheckType());
qcCheckTaskIncome.setMaterialCode(qcCheckTaskWarehousing.getMaterialCode());
qcCheckTaskIncome.setCheckLoc(qcCheckTaskWarehousing.getCheckLoc());
List<QcUserMaterialDTO> users = qcCheckTaskIncomeMapper.getCheckUserBelongLine(qcCheckTaskIncome);
if(CollectionUtils.isEmpty(users)){
users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskWarehousing.getCheckType());
}
if(!CollectionUtils.isEmpty(users)){
for(QcUserMaterialDTO user:users){
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskWarehousing.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
}
}
/**qc_check_task_user**/
int m=qcCheckTaskIncomeMapper.addCheckUsers(users);
logger.info("检查人新增"+m+"成功");
}
/** 不良品数据插入 */
BigDecimal noOkQuality = new BigDecimal(0);
List<QcCheckTaskDefect> defectList = qcCheckTaskWarehousing.getDefects();
if (!CollectionUtils.isEmpty(defectList)) {
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(beLongId);
//qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
noOkQuality = noOkQuality.add(defect.getNoOkQuality()==null?new BigDecimal("0"):defect.getNoOkQuality());
}
}
qcCheckTaskWarehousing.setNoOkQuality(noOkQuality);
// //抽样方案
// QcCheckTaskIncome qincome = new QcCheckTaskIncome();
@ -261,56 +261,60 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
// qcCheckTaskWarehousing.setSampleQuality(new BigDecimal(sampleQua.split("-")[1]));
// }
/**qc_check_task**/
qcCheckTaskWarehousing.setIncomeTime(DateUtils.getNowDate());//检验任务日期
int n = qcCheckTaskWarehousingMapper.insertQcCheckTaskWarehousing(qcCheckTaskWarehousing);
logger.info("qc_check_task:"+n+"成功");
/**qc_check_task**/
qcCheckTaskWarehousing.setIncomeTime(DateUtils.getNowDate());//检验任务日期
int n = qcCheckTaskWarehousingMapper.insertQcCheckTaskWarehousing(qcCheckTaskWarehousing);
logger.info("qc_check_task:"+n+"成功");
/**qc_check_task_detail**/
for(QcCheckTaskDetail item:items){
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
int s = qcCheckTaskDetailMapper.addBatch(items);
//发企业微信--------------------开始(跟班组有关)
SysNoticeGroup noticeQo = new SysNoticeGroup();
if(qcCheckTaskWarehousing.getCheckType().equals("checkTypeCP")){
noticeQo.setNoticeId(7L);//成品检验
}else if(qcCheckTaskWarehousing.getCheckType().equals("checkTypeCPPC")){
noticeQo.setNoticeId(12L);//批次成品检验
}
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = noticedto.getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskWarehousing.getCheckNo() + "\n");
Matcher matcher = p2.matcher(contentInfo);
contentInfo = matcher.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
/**qc_check_task_detail**/
for(QcCheckTaskDetail item:items){
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
logger.info("成品检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("成品检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
int s = qcCheckTaskDetailMapper.addBatch(items);
}).start();
//发企业微信--------------------开始(跟班组有关)
SysNoticeGroup noticeQo = new SysNoticeGroup();
if(qcCheckTaskWarehousing.getCheckType().equals("checkTypeCP")){
noticeQo.setNoticeId(7L);//成品检验
}else if(qcCheckTaskWarehousing.getCheckType().equals("checkTypeCPPC")){
noticeQo.setNoticeId(12L);//批次成品检验
}
//发企业微信--------------------结束
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = noticedto.getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskWarehousing.getCheckNo() + "\n");
Matcher matcher = p2.matcher(contentInfo);
contentInfo = matcher.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("成品检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("成品检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
}).start();
}
//发企业微信--------------------结束
}
logger.info("qc_check_task_detail:"+s+"成功");
return 1;
}finally {
DynamicDataSourceContextHolder.poll();
}
logger.info("qc_check_task_detail:"+s+"成功");
return 1;
}
/**
@ -421,20 +425,25 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
public void createCPFunc(String poolName){
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO();
qoWork.setStatus("w3");
//报工的
List<QcCheckTaskProduce> w3works = qcCheckTaskProduceMapper.getOrderWorksW3(qoWork);
for(QcCheckTaskProduce productTask:w3works){
QcCheckTaskWarehousing cpTask = new QcCheckTaskWarehousing();
productTask.setCheckType("checkTypeCP");//入库检验
productTask.setOrderNo(productTask.getWorkorderCode());
BeanUtils.copyProperties(productTask,cpTask);
try {
ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO();
qoWork.setStatus("w3");
//报工的
List<QcCheckTaskProduce> w3works = qcCheckTaskProduceMapper.getOrderWorksW3(qoWork);
for(QcCheckTaskProduce productTask:w3works){
QcCheckTaskWarehousing cpTask = new QcCheckTaskWarehousing();
productTask.setCheckType("checkTypeCP");//入库检验
productTask.setOrderNo(productTask.getWorkorderCode());
BeanUtils.copyProperties(productTask,cpTask);
int m = insertQcCheckTaskWarehousing(cpTask);
logger.info("++++++++++++入库检验任务生成" + m + "++++++++++++++");
int m = insertQcCheckTaskWarehousing(cpTask);
logger.info("++++++++++++入库检验任务生成" + m + "++++++++++++++");
}
logger.info("++++++++++++" + poolName + "++++入库检验巡检结束++++++++++");
}finally {
DynamicDataSourceContextHolder.poll();
}
logger.info("++++++++++++" + poolName + "++++入库检验巡检结束++++++++++");
}
// //抽样方案

@ -72,18 +72,23 @@ public class QcCheckTypeProjectServiceImpl implements IQcCheckTypeProjectService
public List<QcCheckTypeProject> selectQcCheckTypeProjectList(QcCheckTypeProject qcCheckTypeProject) {
List<QcCheckTypeProject> dtos = qcCheckTypeProjectMapper.selectQcCheckTypeProjectList(qcCheckTypeProject);
DynamicDataSourceContextHolder.push("master");
SysDictData sData = new SysDictData();
sData.setDictType("unit");
Map<String, SysDictData> dictMap = qcCheckTypeProjectMapper.getDictMap(sData);
if (dictMap != null) {
for (QcCheckTypeProject dto : dtos) {
if (StringUtils.isNotBlank(dto.getUnit())) {
dto.setUnit(dictMap.get(dto.getUnit()).getDictLabel());
}
try {
SysDictData sData = new SysDictData();
sData.setDictType("unit");
Map<String, SysDictData> dictMap = qcCheckTypeProjectMapper.getDictMap(sData);
if (dictMap != null) {
for (QcCheckTypeProject dto : dtos) {
if (StringUtils.isNotBlank(dto.getUnit())) {
dto.setUnit(dictMap.get(dto.getUnit()).getDictLabel());
}
}
}
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
return dtos;
}
/**

@ -118,7 +118,12 @@ public class QcCheckTypeServiceImpl implements IQcCheckTypeService {
@Override
public List<QcCheckType> getCheckType(QcCheckType qcCheckType) {
DynamicDataSourceContextHolder.push(qcCheckType.getFactoryCode());// 这是数据源的key
return qcCheckTypeMapper.selectQcCheckTypeList(qcCheckType);
try {
return qcCheckTypeMapper.selectQcCheckTypeList(qcCheckType);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override

@ -101,22 +101,31 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
@Override
public List<QcInterface> getCheckProjectsPie(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
try {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getCheckProjectsPie1(qcInterface);
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getCheckProjectsPie1(qcInterface);
return dtos;
}
@Override
public List<QcInterface> getCheckProjectsPieLL(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
try {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setCheckType("checkTypeLL");
List<QcInterface> dtos = qcInterfaceMapper.getCheckProjectsPieLL(qcInterface);
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setCheckType("checkTypeLL");
List<QcInterface> dtos = qcInterfaceMapper.getCheckProjectsPieLL(qcInterface);
return dtos;
}
@Override
@ -192,104 +201,106 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
@Override
public Map<String, String> getProduceStaticInfo(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
try {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
Map<String, String> dtoMap = new HashMap<>();
qcInterface.setYmdType("dd");
QcInterface hz0 = qcInterfaceMapper.getProduceHz1(qcInterface);
if (hz0 != null) {
dtoMap.put("todayPro", hz0.getQuality().replaceAll("\\..*", ""));
}else{
dtoMap.put("todayPro", "0");
}
QcInterface hz1 = qcInterfaceMapper.getProduceHz(qcInterface);
if (hz1 != null) {
dtoMap.put("todaySample", hz1.getSampleQuality().replaceAll("\\..*", ""));
dtoMap.put("todayNoOk", hz1.getNoOkQuality().replaceAll("\\..*", ""));
if(!hz1.getSampleQuality().equals("0.00")){
BigDecimal tOkRate = (new BigDecimal(hz1.getSampleQuality())
.subtract(new BigDecimal(hz1.getNoOkQuality()))
)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(hz1.getSampleQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("todayOkRate", tOkRate + "%");
Map<String, String> dtoMap = new HashMap<>();
qcInterface.setYmdType("dd");
QcInterface hz0 = qcInterfaceMapper.getProduceHz1(qcInterface);
if (hz0 != null) {
dtoMap.put("todayPro", hz0.getQuality().replaceAll("\\..*", ""));
}else{
dtoMap.put("todayOkRate", "0%");
dtoMap.put("todayPro", "0");
}
QcInterface hz1 = qcInterfaceMapper.getProduceHz(qcInterface);
if (hz1 != null) {
dtoMap.put("todaySample", hz1.getSampleQuality().replaceAll("\\..*", ""));
dtoMap.put("todayNoOk", hz1.getNoOkQuality().replaceAll("\\..*", ""));
if(!hz1.getSampleQuality().equals("0.00")){
BigDecimal tOkRate = (new BigDecimal(hz1.getSampleQuality())
.subtract(new BigDecimal(hz1.getNoOkQuality()))
)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(hz1.getSampleQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("todayOkRate", tOkRate + "%");
}else{
dtoMap.put("todayOkRate", "0%");
}
}
qcInterface.setYmdType("mm");
QcInterface hz20 = qcInterfaceMapper.getProduceHz1(qcInterface);
if (hz20 != null) {
dtoMap.put("monthPro", hz20.getQuality().replaceAll("\\..*", ""));
}else{
dtoMap.put("monthPro", "0");
}
QcInterface hz2 = qcInterfaceMapper.getProduceHz(qcInterface);
if (hz2 != null) {
dtoMap.put("monthNoOk", hz2.getNoOkQuality().replaceAll("\\..*", ""));
if(!hz2.getSampleQuality().equals("0.00")){
BigDecimal tOkRate2 = (new BigDecimal(hz2.getSampleQuality())
.subtract(new BigDecimal(hz2.getNoOkQuality()))
)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(hz2.getSampleQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("monthOkRate", tOkRate2 + "%");
}else{
dtoMap.put("monthOkRate", "0%");
}
}
return dtoMap;
}finally {
DynamicDataSourceContextHolder.poll();
}
qcInterface.setYmdType("mm");
QcInterface hz20 = qcInterfaceMapper.getProduceHz1(qcInterface);
if (hz20 != null) {
dtoMap.put("monthPro", hz20.getQuality().replaceAll("\\..*", ""));
}else{
dtoMap.put("monthPro", "0");
}
QcInterface hz2 = qcInterfaceMapper.getProduceHz(qcInterface);
if (hz2 != null) {
dtoMap.put("monthNoOk", hz2.getNoOkQuality().replaceAll("\\..*", ""));
if(!hz2.getSampleQuality().equals("0.00")){
BigDecimal tOkRate2 = (new BigDecimal(hz2.getSampleQuality())
.subtract(new BigDecimal(hz2.getNoOkQuality()))
)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(hz2.getSampleQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("monthOkRate", tOkRate2 + "%");
}else{
dtoMap.put("monthOkRate", "0%");
}
}
// /**质量看板测试开始**/
// dtoMap.put("todayPro", "3800");
// dtoMap.put("todaySample", "50");
// dtoMap.put("todayNoOk", "2");
// dtoMap.put("todayOkRate", "96.00%");
// dtoMap.put("monthPro", "83600");
// dtoMap.put("monthNoOk", "30");
// dtoMap.put("monthOkRate", "99.96%");
// /**质量看板测试结束**/
return dtoMap;
}
@Override
public List<QcInterface> getProduceNoOkList(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
try {
List<QcInterface> dtos = qcInterfaceMapper.getProduceNoOkList1(qcInterface);
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
// String nowYMD = DateUtils.getDate();
// qcInterface.setYmd(nowYMD);
// List<QcInterface> dtos = qcInterfaceMapper.getProduceNoOkList(qcInterface);
List<QcInterface> dtos = qcInterfaceMapper.getProduceNoOkList1(qcInterface);
return dtos;
}
@Override
public Map<String, List<String>> getProMonthNoOk(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
Map<String, List<String>> dtoMap = new HashMap<>();
try {
String nowYMD = DateUtils.getDate();
String[] nowYMDs = nowYMD.split("-");
int nowMonth = Integer.parseInt(nowYMDs[1]);
List<String> monthNames = new ArrayList<>();
String nowYMD = DateUtils.getDate();
String[] nowYMDs = nowYMD.split("-");
int nowMonth = Integer.parseInt(nowYMDs[1]);
List<String> monthNames = new ArrayList<>();
qcInterface.setYmd(nowYMD);
qcInterface.setYmdType("yyyy");
Map<String, QcInterface> noOkHzs = qcInterfaceMapper.getYearNoOkHz(qcInterface);
List<String> monthData = new ArrayList<>();
qcInterface.setYmd(nowYMD);
qcInterface.setYmdType("yyyy");
Map<String, QcInterface> noOkHzs = qcInterfaceMapper.getYearNoOkHz(qcInterface);
List<String> monthData = new ArrayList<>();
for (int mh = 1; mh <= nowMonth; mh++) {
String yyyymm = nowYMDs[0] + "-" + String.format("%02d", mh);
monthNames.add(yyyymm);
if (!CollectionUtils.isEmpty(noOkHzs)&&noOkHzs.get(yyyymm)!=null) {
monthData.add(noOkHzs.get(yyyymm).getNoOkQuality());
} else {
monthData.add("0");
for (int mh = 1; mh <= nowMonth; mh++) {
String yyyymm = nowYMDs[0] + "-" + String.format("%02d", mh);
monthNames.add(yyyymm);
if (!CollectionUtils.isEmpty(noOkHzs)&&noOkHzs.get(yyyymm)!=null) {
monthData.add(noOkHzs.get(yyyymm).getNoOkQuality());
} else {
monthData.add("0");
}
}
}
dtoMap.put("month", monthNames);
dtoMap.put("monthData", monthData);
dtoMap.put("month", monthNames);
dtoMap.put("monthData", monthData);
// /**质量看板测试开始**/
// List<String> monthNames0 = new ArrayList<>();
// monthNames0.add("2024-01");monthNames0.add("2024-02");monthNames0.add("2024-03");monthNames0.add("2024-04");
@ -302,6 +313,10 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
// dtoMap.put("month", monthNames0);
// dtoMap.put("monthData", monthData0);
// /**质量看板测试结束**/
}finally {
DynamicDataSourceContextHolder.poll();
}
return dtoMap;
}
@ -362,82 +377,70 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
public List<QcInterface> getMonthOfYearContrast(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
List<QcInterface> dtos = new ArrayList<>();
QcInterface nowYM = new QcInterface();
QcInterface lastYM = new QcInterface();
String nowYMD = DateUtils.getDate();
String[] nowYMDs = nowYMD.split("-");
int nowYear = Integer.parseInt(nowYMDs[0]);
int lastYear = nowYear - 1;
List<String> daystr1 = new ArrayList<>();
List<String> daystr0 = new ArrayList<>();
for (int m = 1; m <= 12; m++) {
daystr0.add(lastYear + "-" + String.format("%02d", m));
daystr1.add(nowYear + "-" + String.format("%02d", m));
}
lastYM.setDayStr(daystr0);
nowYM.setDayStr(daystr1);
//生产打开
qcInterface.setYmd("'" + nowYear + "','" + lastYear + "'");
Map<String, QcInterface> noOkNum = qcInterfaceMapper.getMothNoOkNum(qcInterface);
if (noOkNum == null) {
return null;
}
List<String> dataBar0 = new ArrayList<>();//不合规数量
List<String> dataLine0 = new ArrayList<>();//不合格率
for (String day0 : daystr0) {
QcInterface last = noOkNum.get(day0);
if (last != null&& !"0.00".equals(last.getQuality())) {
dataBar0.add(last.getNoOkQuality());
BigDecimal norate0 = new BigDecimal(last.getNoOkQuality()).multiply(new BigDecimal(100))
.divide(new BigDecimal(last.getQuality()), 2, RoundingMode.HALF_UP);
dataLine0.add(norate0.toString());
} else {
dataBar0.add("0");
dataLine0.add("0.00");
try {
QcInterface nowYM = new QcInterface();
QcInterface lastYM = new QcInterface();
String nowYMD = DateUtils.getDate();
String[] nowYMDs = nowYMD.split("-");
int nowYear = Integer.parseInt(nowYMDs[0]);
int lastYear = nowYear - 1;
List<String> daystr1 = new ArrayList<>();
List<String> daystr0 = new ArrayList<>();
for (int m = 1; m <= 12; m++) {
daystr0.add(lastYear + "-" + String.format("%02d", m));
daystr1.add(nowYear + "-" + String.format("%02d", m));
}
}
lastYM.setDayStr(daystr0);
nowYM.setDayStr(daystr1);
//生产打开
qcInterface.setYmd("'" + nowYear + "','" + lastYear + "'");
List<String> dataBar1 = new ArrayList<>();//不合规数量
List<String> dataLine1 = new ArrayList<>();//不合格率
for (String day1 : daystr1) {
QcInterface now = noOkNum.get(day1);
if (now != null && !"0.00".equals(now.getQuality())) {
dataBar1.add(now.getNoOkQuality());
BigDecimal norate0 = new BigDecimal(now.getNoOkQuality()).multiply(new BigDecimal(100))
.divide(new BigDecimal(now.getQuality()), 2, RoundingMode.HALF_UP);
dataLine1.add(norate0.toString());
} else {
dataBar1.add("0");
dataLine1.add("0.00");
Map<String, QcInterface> noOkNum = qcInterfaceMapper.getMothNoOkNum(qcInterface);
if (noOkNum == null) {
return null;
}
List<String> dataBar0 = new ArrayList<>();//不合规数量
List<String> dataLine0 = new ArrayList<>();//不合格率
for (String day0 : daystr0) {
QcInterface last = noOkNum.get(day0);
if (last != null&& !"0.00".equals(last.getQuality())) {
dataBar0.add(last.getNoOkQuality());
BigDecimal norate0 = new BigDecimal(last.getNoOkQuality()).multiply(new BigDecimal(100))
.divide(new BigDecimal(last.getQuality()), 2, RoundingMode.HALF_UP);
dataLine0.add(norate0.toString());
} else {
dataBar0.add("0");
dataLine0.add("0.00");
}
}
List<String> dataBar1 = new ArrayList<>();//不合规数量
List<String> dataLine1 = new ArrayList<>();//不合格率
for (String day1 : daystr1) {
QcInterface now = noOkNum.get(day1);
if (now != null && !"0.00".equals(now.getQuality())) {
dataBar1.add(now.getNoOkQuality());
BigDecimal norate0 = new BigDecimal(now.getNoOkQuality()).multiply(new BigDecimal(100))
.divide(new BigDecimal(now.getQuality()), 2, RoundingMode.HALF_UP);
dataLine1.add(norate0.toString());
} else {
dataBar1.add("0");
dataLine1.add("0.00");
}
}
lastYM.setDataBarArrays(dataBar0);
lastYM.setDataLineArrays(dataLine0);
nowYM.setDataBarArrays(dataBar1);
nowYM.setDataLineArrays(dataLine1);
dtos.add(lastYM);
dtos.add(nowYM);
}finally {
DynamicDataSourceContextHolder.poll();
}
// /**质量看板测试开始**/
// List<String> dataBar0 = new ArrayList<>();//不合规数量
// List<String> dataLine0 = new ArrayList<>();//不合格率
// List<String> dataBar1 = new ArrayList<>();//不合规数量
// List<String> dataLine1 = new ArrayList<>();//不合格率
// dataBar0.add("4");dataBar0.add("9");dataBar0.add("7");dataBar0.add("13");dataBar0.add("11");dataBar0.add("7");
// dataBar0.add("8");dataBar0.add("4");dataBar0.add("5");dataBar0.add("2");dataBar0.add("10");dataBar0.add("6");
// dataBar1.add("3");dataBar1.add("14");dataBar1.add("17");dataBar1.add("3");dataBar1.add("9");dataBar1.add("3");
// dataBar1.add("8");dataBar1.add("5");dataBar1.add("4");dataBar1.add("2");dataBar1.add("9");dataBar1.add("5");
//
// dataLine0.add("1");dataLine0.add("2");dataLine0.add("0.5");dataLine0.add("0.9");dataLine0.add("1");dataLine0.add("1.9");
// dataLine0.add("1.1");dataLine0.add("1");dataLine0.add("0.7");dataLine0.add("0.9");dataLine0.add("1.5");dataLine0.add("1.3");
// dataLine1.add("0.5");dataLine1.add("1.5");dataLine1.add("0.9");dataLine1.add("1");dataLine1.add("0.7");dataLine1.add("1.9");
// dataLine1.add("1.4");dataLine1.add("0.5");dataLine1.add("0.9");dataLine1.add("1");dataLine1.add("1.3");dataLine1.add("1.2");
// /**质量看板测试结束**/
lastYM.setDataBarArrays(dataBar0);
lastYM.setDataLineArrays(dataLine0);
nowYM.setDataBarArrays(dataBar1);
nowYM.setDataLineArrays(dataLine1);
dtos.add(lastYM);
dtos.add(nowYM);
return dtos;
}

@ -129,7 +129,12 @@ public class QcProCheckServiceImpl implements QcProCheckService {
@Override
public List<QcProCheck> getEquipmentList(QcProCheck qcProCheck) {
DynamicDataSourceContextHolder.push("ds_" + qcProCheck.getFactoryCode());
return qcProCheckMapper.getEquipmentList(qcProCheck);
try {
return qcProCheckMapper.getEquipmentList(qcProCheck);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -211,42 +216,47 @@ public class QcProCheckServiceImpl implements QcProCheckService {
@Override
public QcCheckTaskIncome getCheckTaskDetailListCg(QcCheckTaskDetail qcCheckTaskDetail) {
DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode());
QcCheckTaskIncome dto = qcCheckTaskIncomeMapper.getTaskInfoCg(qcCheckTaskDetail.getBelongTo());
if (dto == null) {
return null;
}
List<QcCheckTaskDetail> qcCheckTaskDetails = qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail);
/**qc_check_task_defect**/
Map<String,QcCheckTaskDefect> defectMap = qcCheckTaskDefectMapper.getDefectMap(qcCheckTaskDetail);
try {
QcCheckTaskIncome dto = qcCheckTaskIncomeMapper.getTaskInfoCg(qcCheckTaskDetail.getBelongTo());
if (dto == null) {
return null;
}
List<QcCheckTaskDetail> qcCheckTaskDetails = qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail);
/**qc_check_task_defect**/
Map<String,QcCheckTaskDefect> defectMap = qcCheckTaskDefectMapper.getDefectMap(qcCheckTaskDetail);
for (QcCheckTaskDetail qcd : qcCheckTaskDetails) {
if(StringUtils.isNotBlank(qcd.getSampleQuality())){
qcd.setSampleQuality(qcd.getSampleQuality().replaceAll("\\..*", ""));//去掉小数
for (QcCheckTaskDetail qcd : qcCheckTaskDetails) {
if(StringUtils.isNotBlank(qcd.getSampleQuality())){
qcd.setSampleQuality(qcd.getSampleQuality().replaceAll("\\..*", ""));//去掉小数
}
List<BaseFile> files = qmsFileMapper.getBaseFileBatch(qcd.getRecordId());
if (CollectionUtils.isNotEmpty(files)) {
qcd.setFiles(files);
}
QcCheckTaskDefect defectInfo = defectMap.get(qcd.getRecordId());
if(defectInfo != null){
qcd.setDefectCodes(defectInfo.getDefectCodes());
qcd.setDefectNames(defectInfo.getDefectNames());
qcd.setDefectQualitys(defectInfo.getDefectQualitys());
qcd.setClassTypeCodes(defectInfo.getClassId());
}
}
List<BaseFile> files = qmsFileMapper.getBaseFileBatch(qcd.getRecordId());
if (CollectionUtils.isNotEmpty(files)) {
qcd.setFiles(files);
dto.setQcCheckTaskDetails(qcCheckTaskDetails);
List<QcCheckTaskDefect> defects = qcCheckTaskIncomeMapper.getCkeckDefectList(qcCheckTaskDetail);
if (CollectionUtils.isEmpty(defects)) {
defects = qcCheckTaskIncomeMapper.getDefectType(qcCheckTaskDetail);
}
dto.setDefects(defects);
QcCheckTaskDefect defectInfo = defectMap.get(qcd.getRecordId());
if(defectInfo != null){
qcd.setDefectCodes(defectInfo.getDefectCodes());
qcd.setDefectNames(defectInfo.getDefectNames());
qcd.setDefectQualitys(defectInfo.getDefectQualitys());
qcd.setClassTypeCodes(defectInfo.getClassId());
}
return dto;
}finally {
DynamicDataSourceContextHolder.poll();
}
dto.setQcCheckTaskDetails(qcCheckTaskDetails);
List<QcCheckTaskDefect> defects = qcCheckTaskIncomeMapper.getCkeckDefectList(qcCheckTaskDetail);
if (CollectionUtils.isEmpty(defects)) {
defects = qcCheckTaskIncomeMapper.getDefectType(qcCheckTaskDetail);
}
dto.setDefects(defects);
return dto;
}
@Override
@ -314,7 +324,12 @@ public class QcProCheckServiceImpl implements QcProCheckService {
@Override
public String getWeightInfo(QcCheckTaskDetail qcCheckTaskDetail) {
DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode());
return qcProCheckMapper.getWeightInfo(qcCheckTaskDetail);
try {
return qcProCheckMapper.getWeightInfo(qcCheckTaskDetail);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -323,52 +338,57 @@ public class QcProCheckServiceImpl implements QcProCheckService {
if(StringUtils.isNotBlank(qcCheckTaskDetail.getFactoryCode())){
DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode());
}
QcCheckTaskDetail dto = new QcCheckTaskDetail();
try {
QcCheckTaskDetail dto = new QcCheckTaskDetail();
QcCheckTaskIncome qincome = new QcCheckTaskIncome();
qincome.setQuality(new BigDecimal(qcCheckTaskDetail.getSampleQuality()));
qincome.setCheckLevel(qcCheckTaskDetail.getCheckLevel());
String sampleQuaStr = qcCheckTaskIncomeMapper.getSampleQua(qincome);
if(StringUtils.isNotBlank(sampleQuaStr)){
dto.setSampleCode(sampleQuaStr.split("-")[0]);
dto.setSampleQuality(sampleQuaStr.split("-")[1]);
}
qincome.setSampleAql(qcCheckTaskDetail.getSampleAql());
qincome.setSampleCode(dto.getSampleCode());
Integer nookstandar = qcCheckTaskIncomeMapper.getnoOkVals(qincome);
if(nookstandar == null){
QcCheckTaskIncome qincome = new QcCheckTaskIncome();
qincome.setQuality(new BigDecimal(qcCheckTaskDetail.getSampleQuality()));
qincome.setCheckLevel(qcCheckTaskDetail.getCheckLevel());
String sampleQuaStr = qcCheckTaskIncomeMapper.getSampleQua(qincome);
if(StringUtils.isNotBlank(sampleQuaStr)){
dto.setSampleCode(sampleQuaStr.split("-")[0]);
dto.setSampleQuality(sampleQuaStr.split("-")[1]);
}
qincome.setSampleAql(qcCheckTaskDetail.getSampleAql());
qincome.setSampleCode(dto.getSampleCode());
Integer nookstandar = qcCheckTaskIncomeMapper.getnoOkVals(qincome);
if(nookstandar == null){
return dto;
}
String status = "N";
int nookNum = 0;
for(String aValue:qcCheckTaskDetail.getActualValues()){
if(aValue.indexOf(":")>0&&StringUtils.isNotBlank(aValue.split(":")[1])){
aValue = aValue.split(":")[1];
}else{
aValue = "0";
}
if(qcCheckTaskDetail.getUpperDiff()!=null && qcCheckTaskDetail.getDownDiff()!=null
&& qcCheckTaskDetail.getDownDiff().compareTo(new BigDecimal(aValue)) < 1
&& qcCheckTaskDetail.getUpperDiff().compareTo(new BigDecimal(aValue)) >=0){
System.out.println("Y");
}else if(qcCheckTaskDetail.getUpperDiff()==null && qcCheckTaskDetail.getDownDiff()!=null
&& qcCheckTaskDetail.getDownDiff().compareTo(new BigDecimal(aValue)) < 1){
System.out.println("Y");
}else if(qcCheckTaskDetail.getUpperDiff()!=null && qcCheckTaskDetail.getDownDiff()==null
&& qcCheckTaskDetail.getUpperDiff().compareTo(new BigDecimal(aValue)) >=0){
System.out.println("Y");
}else{
System.out.println("N");
++nookNum;
}
}
if(nookNum<=nookstandar.intValue()){
status = "Y";
}
dto.setStatus(status);
return dto;
}finally {
DynamicDataSourceContextHolder.poll();
}
String status = "N";
int nookNum = 0;
for(String aValue:qcCheckTaskDetail.getActualValues()){
if(aValue.indexOf(":")>0&&StringUtils.isNotBlank(aValue.split(":")[1])){
aValue = aValue.split(":")[1];
}else{
aValue = "0";
}
if(qcCheckTaskDetail.getUpperDiff()!=null && qcCheckTaskDetail.getDownDiff()!=null
&& qcCheckTaskDetail.getDownDiff().compareTo(new BigDecimal(aValue)) < 1
&& qcCheckTaskDetail.getUpperDiff().compareTo(new BigDecimal(aValue)) >=0){
System.out.println("Y");
}else if(qcCheckTaskDetail.getUpperDiff()==null && qcCheckTaskDetail.getDownDiff()!=null
&& qcCheckTaskDetail.getDownDiff().compareTo(new BigDecimal(aValue)) < 1){
System.out.println("Y");
}else if(qcCheckTaskDetail.getUpperDiff()!=null && qcCheckTaskDetail.getDownDiff()==null
&& qcCheckTaskDetail.getUpperDiff().compareTo(new BigDecimal(aValue)) >=0){
System.out.println("Y");
}else{
System.out.println("N");
++nookNum;
}
}
if(nookNum<=nookstandar.intValue()){
status = "Y";
}
dto.setStatus(status);
return dto;
}
public static void main(String args[]){
int m = 0;

@ -102,7 +102,7 @@
qct.quality, qct.unit,qct.supplier_code, qct.supplier_name, qct.income_time, qct.check_loc,
qct.check_status, qct.check_man_code, qct.check_man_name,
qct.check_time, qct.check_result, qct.status, qct.check_type, qct.attr1, qct.attr2, qct.attr3, qct.attr4,
qct.create_by, qct.create_time, qct.update_by, qct.update_time,
qct.create_by, qct.create_time, qct.update_by, qct.update_time,qct.remark,
qct.factory_code, qct.del_flag,qct.reason,qct.product_type,qct.order_type,bp.product_group_name,qct.jgy,qct.pgy,qct.cxzz,
ISNULL(bp.mvgr5, '09JS08S-048B') standardNo
from qc_check_task qct

@ -222,37 +222,42 @@ public class SapController extends BaseController {
@PostMapping("/sapSupplierSync")
@Log(title = "供应商主数据", businessType = BusinessType.SAP)
public R sapSupplierSync() {
SapSupplierQuery sapSupplierQuery = new SapSupplierQuery();
// 加载sf-cloud库的sys_datasource
SysUser sysUser = new SysUser();
sysUser.setUserId(1L);
R<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
dateSources.forEach(dateSource -> {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++供应商主数据开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
sapSupplierQuery.setBukrs(dateSource.get("poolName").replace("ds_", ""));//工厂
Date maxTime0 = sapBomMapper.getSupplierMaxTime();
if (maxTime0 != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
sapSupplierQuery.setErdat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923
}
R r = sapWorkCenterService.sapSupplierSync(sapSupplierQuery);
if (r.getCode() == 200) {
List<SapSupplier> dtos = (List<SapSupplier>) r.getData();
if (!CollectionUtils.isEmpty(dtos)) {
sapWorkCenterService.syncSupplier(dtos);
try {
SapSupplierQuery sapSupplierQuery = new SapSupplierQuery();
// 加载sf-cloud库的sys_datasource
SysUser sysUser = new SysUser();
sysUser.setUserId(1L);
R<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
dateSources.forEach(dateSource -> {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++供应商主数据开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
sapSupplierQuery.setBukrs(dateSource.get("poolName").replace("ds_", ""));//工厂
Date maxTime0 = sapBomMapper.getSupplierMaxTime();
if (maxTime0 != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
sapSupplierQuery.setErdat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923
}
} else {
logger.error("++++++++++++" + dateSource.get("poolName") + "错误信息:" + r.getMsg());
}
logger.error("++++++++++++" + dateSource.get("poolName") + "++++供应商主数据结束++++++++++");
});
R r = sapWorkCenterService.sapSupplierSync(sapSupplierQuery);
if (r.getCode() == 200) {
List<SapSupplier> dtos = (List<SapSupplier>) r.getData();
if (!CollectionUtils.isEmpty(dtos)) {
sapWorkCenterService.syncSupplier(dtos);
}
} else {
logger.error("++++++++++++" + dateSource.get("poolName") + "错误信息:" + r.getMsg());
}
logger.error("++++++++++++" + dateSource.get("poolName") + "++++供应商主数据结束++++++++++");
});
}finally {
DynamicDataSourceContextHolder.poll();
}
return R.ok();
}

@ -22,6 +22,11 @@ public class OADataInterfaceServiceImpl implements OADataInterfaceService {
@Override
public Map selectOAUserByEmployeeID(String id) {
DynamicDataSourceContextHolder.push("slave");// 这是数据源的key
return oaDataInterfaceMapper.selectOAUserByEmployeeID(id);
try {
return oaDataInterfaceMapper.selectOAUserByEmployeeID(id);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
}

@ -182,32 +182,36 @@ public class SysPostServiceImpl implements ISysPostService {
@Override
public R sysPostInfoTask() {
DynamicDataSourceContextHolder.push("master");// 这是数据源的key
try {
Date maxTime0 = postMapper.getMaxTime();
if(maxTime0 != null){
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
String ymd = DateFormatUtils.format(maxTime, "yyyy-MM-dd");//yyyy-MM-dd
log.info("更新岗位-参数:"+ ymd);
AjaxResult hrR = remoteOpenService.GetHrPostInfo();
log.info("更新岗位-结果:"+ hrR.get("data"));
List<HRPostInfo> infoList = new ArrayList<HRPostInfo>();
if((int)hrR.get("code")==200){
//code=200 获取成功
infoList = JSONArray.parseArray(JSONObject.toJSONString(hrR.get("data")),com.op.system.api.domain.quality.HRPostInfo.class);
log.info(String.valueOf(infoList));
if(!CollectionUtils.isEmpty(infoList)){
this.sysPostInfoFunc(infoList);
}
Date maxTime0 = postMapper.getMaxTime();
if(maxTime0 != null){
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
String ymd = DateFormatUtils.format(maxTime, "yyyy-MM-dd");//yyyy-MM-dd
log.info("更新岗位-参数:"+ ymd);
AjaxResult hrR = remoteOpenService.GetHrPostInfo();
log.info("更新岗位-结果:"+ hrR.get("data"));
List<HRPostInfo> infoList = new ArrayList<HRPostInfo>();
if((int)hrR.get("code")==200){
//code=200 获取成功
infoList = JSONArray.parseArray(JSONObject.toJSONString(hrR.get("data")),com.op.system.api.domain.quality.HRPostInfo.class);
log.info(String.valueOf(infoList));
if(!CollectionUtils.isEmpty(infoList)){
this.sysPostInfoFunc(infoList);
}else{
log.info("无最新需要更新的岗位数据");
return R.fail("无最新需要更新的岗位数据");
}
}else{
log.info("无最新需要更新的岗位数据");
return R.fail("无最新需要更新的岗位数据");
}
}finally {
DynamicDataSourceContextHolder.poll();
}
return R.ok();
}

@ -460,58 +460,61 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
public String DesignatedPalletOutbound(WMSDesignatedPalle wmsDesignatedPalle) {
DynamicDataSourceContextHolder.push("ds_" + wmsDesignatedPalle.getFactoryCode());
String result = "";
if ("1".equals(wmsDesignatedPalle.getType())) {//类型1是托盘出库,2是空托出库计划下发
String meg = DesignatedPalletOutboundWCS(wmsDesignatedPalle);
if ("OK".equals(meg)) {//成功 rfidNo
WmsToWCSDTO wcsdto = new WmsToWCSDTO();
wcsdto.setRfidNo(wmsDesignatedPalle.getRfidNo());
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectwmsRfidNotwo(wcsdto);
WCSInventoryPlan wcsInventoryPlan = new WCSInventoryPlan();
wcsInventoryPlan.setSku(wmsOdsMateStorageNewsSn.getMaterialCode());
WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan);
try {
if ("1".equals(wmsDesignatedPalle.getType())) {//类型1是托盘出库,2是空托出库计划下发
String meg = DesignatedPalletOutboundWCS(wmsDesignatedPalle);
if ("OK".equals(meg)) {//成功 rfidNo
WmsToWCSDTO wcsdto = new WmsToWCSDTO();
wcsdto.setRfidNo(wmsDesignatedPalle.getRfidNo());
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectwmsRfidNotwo(wcsdto);
WCSInventoryPlan wcsInventoryPlan = new WCSInventoryPlan();
wcsInventoryPlan.setSku(wmsOdsMateStorageNewsSn.getMaterialCode());
WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan);
OdsProcureOutOrder odsProcureOutOrder = new OdsProcureOutOrder();
odsProcureOutOrder.setID(IdUtils.fastSimpleUUID());
OdsProcureOutOrder odsProcureOutOrder = new OdsProcureOutOrder();
odsProcureOutOrder.setID(IdUtils.fastSimpleUUID());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String formattedDate = dateFormat.format(date);
odsProcureOutOrder.setProduceCode("DE" + formattedDate);
odsProcureOutOrder.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
odsProcureOutOrder.setMaterialDesc(wmsOdsMateStorageNewsSn.getMaterialDesc());
odsProcureOutOrder.setPlanDate(new Date());
odsProcureOutOrder.setUnit(wmsOdsMateStorageNews.getUserDefined1());
odsProcureOutOrder.setProductionLineCode(wmsDesignatedPalle.getLocation());
odsProcureOutOrder.setUserDefined1(formattedDate);
odsProcureOutOrder.setActive("1");
odsProcureOutOrder.setOrderStatus("1");
odsProcureOutOrder.setPlanNumber(wmsOdsMateStorageNewsSn.getAmount());
odsProcureOutOrder.setUserDefined2("00001");//行项目
//odsProcureOutOrder.set
odsProcureOutOrderMapper.insertOdsProcureOutOrder(odsProcureOutOrder);
result = "操作成功";
return result;
}
} else {
OrderLine orderLine = new OrderLine();
orderLine.setWarehouseNo("WH02");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String formattedDate = dateFormat.format(date);
odsProcureOutOrder.setProduceCode("DE" + formattedDate);
odsProcureOutOrder.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
odsProcureOutOrder.setMaterialDesc(wmsOdsMateStorageNewsSn.getMaterialDesc());
odsProcureOutOrder.setPlanDate(new Date());
odsProcureOutOrder.setUnit(wmsOdsMateStorageNews.getUserDefined1());
odsProcureOutOrder.setProductionLineCode(wmsDesignatedPalle.getLocation());
odsProcureOutOrder.setUserDefined1(formattedDate);
odsProcureOutOrder.setActive("1");
odsProcureOutOrder.setOrderStatus("1");
odsProcureOutOrder.setPlanNumber(wmsOdsMateStorageNewsSn.getAmount());
odsProcureOutOrder.setUserDefined2("00001");//行项目
//odsProcureOutOrder.set
odsProcureOutOrderMapper.insertOdsProcureOutOrder(odsProcureOutOrder);
result = "操作成功";
return result;
}
} else {
OrderLine orderLine = new OrderLine();
orderLine.setWarehouseNo("WH02");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String formattedDate = dateFormat.format(date);
orderLine.setOrderNo(formattedDate);//,如果是空托盘垛的需求可以随机生成一个
List<OrderLine> list = new ArrayList<>();
Integer orderItem = 1;
OrderLine orderLine1 = new OrderLine();
orderLine1.setOrderLineNo(String.format("%05d", orderItem));
orderLine1.setSku(wmsDesignatedPalle.getRfidNo());
list.add(orderLine1);
orderLine.setList(list);
String message = addPurchaseOrderOutboundTwoWCS(orderLine);
if ("OK".equals(message)) {//成功
result = "操作成功";
return result;
orderLine.setOrderNo(formattedDate);//,如果是空托盘垛的需求可以随机生成一个
List<OrderLine> list = new ArrayList<>();
Integer orderItem = 1;
OrderLine orderLine1 = new OrderLine();
orderLine1.setOrderLineNo(String.format("%05d", orderItem));
orderLine1.setSku(wmsDesignatedPalle.getRfidNo());
list.add(orderLine1);
orderLine.setList(list);
String message = addPurchaseOrderOutboundTwoWCS(orderLine);
if ("OK".equals(message)) {//成功
result = "操作成功";
return result;
}
}
}finally {
DynamicDataSourceContextHolder.poll();
}
return result;
}

@ -71,7 +71,12 @@ public class WmsProductPutTrayServiceImpl implements IWmsProductPutTrayService {
public List<WmsProductPutTray> selectWmsProductPutTrayList(WmsProductPutTray wmsProductPutTray) {
//todo 需要修改
DynamicDataSourceContextHolder.push("ds_1000");
return wmsProductPutTrayMapper.selectWmsProductPutTrayList(wmsProductPutTray);
try {
return wmsProductPutTrayMapper.selectWmsProductPutTrayList(wmsProductPutTray);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**

@ -91,8 +91,13 @@ public class WmsSellOutEmbryoServiceImpl implements IWmsSellOutEmbryoService {
public int updateWmsSellOutEmbryo(WmsSellOutEmbryo wmsSellOutEmbryo) {
//todo 需要修改
DynamicDataSourceContextHolder.push("ds_1000");
wmsSellOutEmbryo.setUpdateTime(DateUtils.getNowDate());
return wmsSellOutEmbryoMapper.updateWmsSellOutEmbryo(wmsSellOutEmbryo);
try {
wmsSellOutEmbryo.setUpdateTime(DateUtils.getNowDate());
return wmsSellOutEmbryoMapper.updateWmsSellOutEmbryo(wmsSellOutEmbryo);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -145,10 +150,14 @@ public class WmsSellOutEmbryoServiceImpl implements IWmsSellOutEmbryoService {
public WmsSellOutEmbryo selectWmsSellOutEmbryoByOrderCodeAndProductCode(String deliveryOrder, String productCode) {
//todo 需要修改
DynamicDataSourceContextHolder.push("ds_1000");
ValueOperations<String, String> opsForValue = redisTemplate.opsForValue();
opsForValue.set("deliveryOrder", deliveryOrder);
opsForValue.set("productCode", productCode);
return wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoByOrderCodeAndProductCode(deliveryOrder, productCode);
try {
ValueOperations<String, String> opsForValue = redisTemplate.opsForValue();
opsForValue.set("deliveryOrder", deliveryOrder);
opsForValue.set("productCode", productCode);
return wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoByOrderCodeAndProductCode(deliveryOrder, productCode);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override

Loading…
Cancel
Save