质量目标模块

master
shaoyong 1 year ago
parent 3a03b61959
commit d62bb2fc85

@ -0,0 +1,126 @@
package com.op.quality.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.op.common.log.annotation.Log;
import com.op.common.log.enums.BusinessType;
import com.op.common.security.annotation.RequiresPermissions;
import com.op.quality.domain.QcGoal;
import com.op.quality.service.IQcGoalService;
import com.op.common.core.web.controller.BaseController;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.core.utils.poi.ExcelUtil;
import com.op.common.core.web.page.TableDataInfo;
/**
* Controller
*
* @author Open Platform
* @date 2024-03-04
*/
@RestController
@RequestMapping("/qcGoal")
public class QcGoalController extends BaseController {
@Autowired
private IQcGoalService qcGoalService;
/**
*
*/
@RequiresPermissions("quality:qcGoal:list")
@GetMapping("/list")
public TableDataInfo list(QcGoal qcGoal) {
startPage();
List<QcGoal> list = qcGoalService.selectQcGoalList(qcGoal);
return getDataTable(list);
}
/**
*
*/
@GetMapping("/getChildrenList/{parentId}")
public List<QcGoal> getChildrenList(@PathVariable("parentId") String parentId) {
QcGoal goal = new QcGoal();
goal.setParentGoal(parentId);
List<QcGoal> list = qcGoalService.selectChildrenByParent(goal);
return list;
}
/**
*
*/
@RequiresPermissions("quality:qcGoal:export")
@Log(title = "质量目标", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, QcGoal qcGoal) {
List<QcGoal> list = qcGoalService.selectQcGoalList(qcGoal);
ExcelUtil<QcGoal> util = new ExcelUtil<QcGoal>(QcGoal. class);
util.exportExcel(response, list, "质量目标数据");
}
/**
*
*/
@RequiresPermissions("quality:qcGoal:query")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id) {
return success(qcGoalService.selectQcGoalById(id));
}
/**
*
*/
@GetMapping("/treeSelect")
public AjaxResult treeSelect(QcGoal qcGoal) {
List<QcGoal> qcGoals = qcGoalService.selectQcGoalList(qcGoal);
return success(qcGoalService.buildQcGoalTreeSelect(qcGoals));
}
/**
*
*/
@RequiresPermissions("quality:qcGoal:add")
@Log(title = "质量目标", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcGoal qcGoal) {
return toAjax(qcGoalService.insertQcGoal(qcGoal));
}
/**
*
*/
@GetMapping("/generate/{id}")
public TableDataInfo generate(@PathVariable("id") String id) {
List<QcGoal> qcGoalList = qcGoalService.generate(id);
return getDataTable(qcGoalList);
}
/**
*
*/
@RequiresPermissions("quality:qcGoal:edit")
@Log(title = "质量目标", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcGoal qcGoal) {
return toAjax(qcGoalService.updateQcGoal(qcGoal));
}
/**
*
*/
@RequiresPermissions("quality:qcGoal:remove")
@Log(title = "质量目标", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids) {
int rows = qcGoalService.deleteQcGoalByIds(ids);
if (rows > 0 ) {
return success("操作成功");
}else {
return error("操作失败,请检查要删除的项目是否含有子项目");
}
}
}

@ -0,0 +1,118 @@
package com.op.quality.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.op.quality.domain.QcGoal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.op.common.log.annotation.Log;
import com.op.common.log.enums.BusinessType;
import com.op.common.security.annotation.RequiresPermissions;
import com.op.quality.domain.QcGoalDistribute;
import com.op.quality.service.IQcGoalDistributeService;
import com.op.common.core.web.controller.BaseController;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.core.utils.poi.ExcelUtil;
import com.op.common.core.web.page.TableDataInfo;
/**
* Controller
*
* @author Open Platform
* @date 2024-03-07
*/
@RestController
@RequestMapping("/qcGoalDistribute")
public class QcGoalDistributeController extends BaseController {
@Autowired
private IQcGoalDistributeService qcGoalDistributeService;
/**
*
*/
@RequiresPermissions("quality:qcGoalDistribute:list")
@GetMapping("/list")
public TableDataInfo list(QcGoalDistribute qcGoalDistribute) {
startPage();
List<QcGoalDistribute> list = qcGoalDistributeService.selectQcGoalDistributeList(qcGoalDistribute);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("quality:qcGoalDistribute:export")
@Log(title = "质量目标分配", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, QcGoalDistribute qcGoalDistribute) {
List<QcGoalDistribute> list = qcGoalDistributeService.selectQcGoalDistributeList(qcGoalDistribute);
ExcelUtil<QcGoalDistribute> util = new ExcelUtil<QcGoalDistribute>(QcGoalDistribute. class);
util.exportExcel(response, list, "质量目标分配数据");
}
/**
*
*/
@RequiresPermissions("quality:qcGoalDistribute:query")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id) {
return success(qcGoalDistributeService.selectQcGoalDistributeById(id));
}
/**
*
*/
@Log(title = "质量目标分配", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcGoalDistribute qcGoalDistribute) {
return toAjax(qcGoalDistributeService.insertQcGoalDistribute(qcGoalDistribute));
}
/**
*
*/
@RequiresPermissions("quality:qcGoalDistribute:edit")
@Log(title = "质量目标分配", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcGoalDistribute qcGoalDistribute) {
return toAjax(qcGoalDistributeService.updateQcGoalDistribute(qcGoalDistribute));
}
/**
*
*/
@RequiresPermissions("quality:qcGoalDistribute:remove")
@Log(title = "质量目标分配", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids) {
return toAjax(qcGoalDistributeService.deleteQcGoalDistributeByIds(ids));
}
/**
*
*/
@GetMapping(value = "/getLeftList")
public TableDataInfo getLeftList(QcGoalDistribute qcGoalDistribute) {
startPage();
List<QcGoalDistribute> list = qcGoalDistributeService.getLeftList(qcGoalDistribute);
return getDataTable(list);
}
/**
*
*/
@GetMapping(value = "/getRightList")
public TableDataInfo getRightList(QcGoalDistribute qcGoalDistribute) {
startPage();
List<QcGoalDistribute> list = qcGoalDistributeService.getRightList(qcGoalDistribute);
return getDataTable(list);
}
}

@ -0,0 +1,273 @@
package com.op.quality.domain;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
/**
* qc_goal
*
* @author Open Platform
* @date 2024-03-04
*/
public class QcGoal extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
*
*/
@Excel(name = "目标年份", readConverterExp = "月=份")
private String goalYm;
/**
*
*/
@Excel(name = "目标类别")
private String goalType;
/**
*
*/
@Excel(name = "不良率")
private BigDecimal nookRate;
/**
*
*/
@Excel(name = "抽样比例")
private BigDecimal nookQualityRate;
/**
* 1
*/
@Excel(name = "预留字段1")
private String attr1;
/**
* 2
*/
@Excel(name = "预留字段2")
private String attr2;
/**
* 3
*/
@Excel(name = "预留字段3")
private String attr3;
/**
* 4
*/
@Excel(name = "预留字段4")
private String attr4;
/**
*
*/
@Excel(name = "工厂编码")
private String factoryCode;
/**
* 10
*/
private String delFlag;
/**
*
*/
@Excel(name = "检验节点小节点")
private String checkType;
/**
*
*/
@Excel(name = "检验节点大类")
private String typeCode;
/**
*
*/
@Excel(name = "适配范围")
private String scope;
/**
*
*/
@Excel(name = "父级目标")
private String parentGoal;
private Boolean hasChildren;
private List<QcGoal> children = new ArrayList<>();
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setGoalYm(String goalYm) {
this.goalYm = goalYm;
}
public String getGoalYm() {
return goalYm;
}
public void setGoalType(String goalType) {
this.goalType = goalType;
}
public String getGoalType() {
return goalType;
}
public void setNookRate(BigDecimal nookRate) {
this.nookRate = nookRate;
}
public BigDecimal getNookRate() {
return nookRate;
}
public void setNookQualityRate(BigDecimal nookQualityRate) {
this.nookQualityRate = nookQualityRate;
}
public BigDecimal getNookQualityRate() {
return nookQualityRate;
}
public void setAttr1(String attr1) {
this.attr1 = attr1;
}
public String getAttr1() {
return attr1;
}
public void setAttr2(String attr2) {
this.attr2 = attr2;
}
public String getAttr2() {
return attr2;
}
public void setAttr3(String attr3) {
this.attr3 = attr3;
}
public String getAttr3() {
return attr3;
}
public void setAttr4(String attr4) {
this.attr4 = attr4;
}
public String getAttr4() {
return attr4;
}
public void setFactoryCode(String factoryCode) {
this.factoryCode = factoryCode;
}
public String getFactoryCode() {
return factoryCode;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getDelFlag() {
return delFlag;
}
public void setCheckType(String checkType) {
this.checkType = checkType;
}
public String getCheckType() {
return checkType;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
public String getTypeCode() {
return typeCode;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getScope() {
return scope;
}
public void setParentGoal(String parentGoal) {
this.parentGoal = parentGoal;
}
public String getParentGoal() {
return parentGoal;
}
public Boolean getHasChildren() {
return hasChildren;
}
public void setHasChildren(Boolean hasChildren) {
this.hasChildren = hasChildren;
}
public List<QcGoal> getChildren() {
return children;
}
public void setChildren(List<QcGoal> children) {
this.children = children;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("goalYm", getGoalYm())
.append("goalType", getGoalType())
.append("nookRate", getNookRate())
.append("nookQualityRate", getNookQualityRate())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("attr3", getAttr3())
.append("attr4", getAttr4())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("factoryCode", getFactoryCode())
.append("delFlag", getDelFlag())
.append("checkType", getCheckType())
.append("typeCode", getTypeCode())
.append("scope", getScope())
.append("parentGoal", getParentGoal())
.toString();
}
}

@ -0,0 +1,216 @@
package com.op.quality.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
import java.util.List;
/**
* qc_goal_distribute
*
* @author Open Platform
* @date 2024-03-07
*/
public class QcGoalDistribute extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* id
*/
@Excel(name = "所属质量目标id")
private String belongGoalId;
/**
* ()
*/
@Excel(name = "供应商(产品)编码")
private String supplierCode;
/**
* ()
*/
@Excel(name = "供应商(产品)名称")
private String supplierName;
/**
* 1
*/
@Excel(name = "预留字段1")
private String attr1;
/**
* 2
*/
@Excel(name = "预留字段2")
private String attr2;
/**
* 3
*/
@Excel(name = "预留字段3")
private String attr3;
/**
* 4
*/
@Excel(name = "预留字段4")
private String attr4;
/**
*
*/
@Excel(name = "工厂编码")
private String factoryCode;
/**
* 10
*/
private String delFlag;
private String label;
private String key;
private String[] SupplierCodes;
private List<String> selectedValues;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setBelongGoalId(String belongGoalId) {
this.belongGoalId = belongGoalId;
}
public String getBelongGoalId() {
return belongGoalId;
}
public void setSupplierCode(String supplierCode) {
this.supplierCode = supplierCode;
}
public String getSupplierCode() {
return supplierCode;
}
public void setSupplierName(String supplierName) {
this.supplierName = supplierName;
}
public String getSupplierName() {
return supplierName;
}
public void setAttr1(String attr1) {
this.attr1 = attr1;
}
public String getAttr1() {
return attr1;
}
public void setAttr2(String attr2) {
this.attr2 = attr2;
}
public String getAttr2() {
return attr2;
}
public void setAttr3(String attr3) {
this.attr3 = attr3;
}
public String getAttr3() {
return attr3;
}
public void setAttr4(String attr4) {
this.attr4 = attr4;
}
public String getAttr4() {
return attr4;
}
public void setFactoryCode(String factoryCode) {
this.factoryCode = factoryCode;
}
public String getFactoryCode() {
return factoryCode;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getDelFlag() {
return delFlag;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String[] getSupplierCodes() {
return SupplierCodes;
}
public void setSupplierCodes(String[] supplierCodes) {
SupplierCodes = supplierCodes;
}
public List<String> getSelectedValues() {
return selectedValues;
}
public void setSelectedValues(List<String> selectedValues) {
this.selectedValues = selectedValues;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("belongGoalId", getBelongGoalId())
.append("supplierCode", getSupplierCode())
.append("supplierName", getSupplierName())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("attr3", getAttr3())
.append("attr4", getAttr4())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("factoryCode", getFactoryCode())
.append("delFlag", getDelFlag())
.toString();
}
}

@ -1,9 +1,11 @@
package com.op.quality.domain.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.op.quality.domain.QcGoal;
import com.op.quality.domain.QcMaterialGroup;
import javax.xml.bind.annotation.XmlEnum;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
@ -42,6 +44,12 @@ public class TreeSelect implements Serializable {
this.children = qcMaterialGroup.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public TreeSelect(QcGoal qcGoal) {
this.id = qcGoal.getId();
this.label = qcGoal.getGoalYm();
this.children = qcGoal.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public String getId() {
return id;
}

@ -0,0 +1,70 @@
package com.op.quality.mapper;
import java.util.List;
import com.op.quality.domain.QcGoalDistribute;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author Open Platform
* @date 2024-03-07
*/
@Mapper
public interface QcGoalDistributeMapper {
/**
*
*
* @param id
* @return
*/
public QcGoalDistribute selectQcGoalDistributeById(String id);
/**
*
*
* @param qcGoalDistribute
* @return
*/
public List<QcGoalDistribute> selectQcGoalDistributeList(QcGoalDistribute qcGoalDistribute);
/**
*
*
* @param qcGoalDistribute
* @return
*/
public int insertQcGoalDistribute(QcGoalDistribute qcGoalDistribute);
/**
*
*
* @param qcGoalDistribute
* @return
*/
public int updateQcGoalDistribute(QcGoalDistribute qcGoalDistribute);
/**
*
*
* @param id
* @return
*/
public int deleteQcGoalDistributeById(String id);
public int deleteQcGoalDistributeByBelongId(String id);
/**
*
*
* @param ids
* @return
*/
public int deleteQcGoalDistributeByIds(String[] ids);
public List<QcGoalDistribute> getGoalDistributeUndo(QcGoalDistribute qcGoalDistribute);
public List<QcGoalDistribute> getGoalDistributeDo(QcGoalDistribute qcGoalDistribute);
}

@ -0,0 +1,75 @@
package com.op.quality.mapper;
import java.util.List;
import com.op.quality.domain.QcGoal;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
*
* @author Open Platform
* @date 2024-03-04
*/
@Mapper
public interface QcGoalMapper {
/**
*
*
* @param id
* @return
*/
public QcGoal selectQcGoalById(String id);
/**
*
*
* @param qcGoal
* @return
*/
public List<QcGoal> selectQcGoalList(QcGoal qcGoal);
public List<QcGoal> selectChildrenByParent(QcGoal qcGoal);
/**
*
*
* @param qcGoal
* @return
*/
public int insertQcGoal(QcGoal qcGoal);
/**
*
* @param qcGoalList
* @return
*/
public int insertQcGoalList(@Param("qcGoalList") List<QcGoal> qcGoalList);
/**
*
*
* @param qcGoal
* @return
*/
public int updateQcGoal(QcGoal qcGoal);
/**
*
*
* @param id
* @return
*/
public int deleteQcGoalById(String id);
/**
*
*
* @param ids
* @return
*/
public int deleteQcGoalByIds(String[] ids);
public int getTodayMaxNum(QcGoal qcGoal);
}

@ -0,0 +1,153 @@
package com.op.quality.service.impl;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.StringUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.quality.mapper.QcGoalDistributeMapper;
import com.op.quality.domain.QcGoalDistribute;
import com.op.quality.service.IQcGoalDistributeService;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* Service
*
* @author Open Platform
* @date 2024-03-07
*/
@Service
public class QcGoalDistributeServiceImpl implements IQcGoalDistributeService {
@Autowired
private QcGoalDistributeMapper qcGoalDistributeMapper;
/**
*
*
* @param id
* @return
*/
@Override
@DS("#header.poolName")
public QcGoalDistribute selectQcGoalDistributeById(String id) {
return qcGoalDistributeMapper.selectQcGoalDistributeById(id);
}
/**
*
*
* @param qcGoalDistribute
* @return
*/
@Override
@DS("#header.poolName")
public List<QcGoalDistribute> selectQcGoalDistributeList(QcGoalDistribute qcGoalDistribute) {
return qcGoalDistributeMapper.selectQcGoalDistributeList(qcGoalDistribute);
}
/**
*
*
* @param qcGoalDistribute
* @return
*/
@Override
@DS("#header.poolName")
public int insertQcGoalDistribute(QcGoalDistribute qcGoalDistribute) {
if (StringUtils.isNotEmpty(qcGoalDistribute.getBelongGoalId())) {
qcGoalDistributeMapper.deleteQcGoalDistributeByBelongId(qcGoalDistribute.getBelongGoalId());
}
int count = 0;
if (qcGoalDistribute.getSelectedValues().size() > 0){
QcGoalDistribute dto = null;
Date now = DateUtils.getNowDate();
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String key = "#header.poolName";
String factoryCode = request.getHeader(key.substring(8)).replace("ds_", "");
for (String supplierCode : qcGoalDistribute.getSelectedValues()) {
dto = new QcGoalDistribute();
dto.setId(IdUtils.fastSimpleUUID());
dto.setCreateTime(now);
dto.setCreateBy(SecurityUtils.getUsername());
dto.setBelongGoalId(qcGoalDistribute.getBelongGoalId());
dto.setSupplierCode(supplierCode);
dto.setFactoryCode(factoryCode);
count += qcGoalDistributeMapper.insertQcGoalDistribute(dto);
}
}else {
count = 1;
}
return count;
}
/**
*
*
* @param qcGoalDistribute
* @return
*/
@Override
@DS("#header.poolName")
public int updateQcGoalDistribute(QcGoalDistribute qcGoalDistribute) {
qcGoalDistribute.setUpdateTime(DateUtils.getNowDate());
return qcGoalDistributeMapper.updateQcGoalDistribute(qcGoalDistribute);
}
/**
*
*
* @param ids
* @return
*/
@Override
@DS("#header.poolName")
public int deleteQcGoalDistributeByIds(String[] ids) {
return qcGoalDistributeMapper.deleteQcGoalDistributeByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
@DS("#header.poolName")
public int deleteQcGoalDistributeById(String id) {
return qcGoalDistributeMapper.deleteQcGoalDistributeById(id);
}
@Override
@DS("#header.poolName")
public List<QcGoalDistribute> getLeftList(QcGoalDistribute qcGoalDistribute) {
List<QcGoalDistribute> dto = qcGoalDistributeMapper.getGoalDistributeUndo(qcGoalDistribute);
List<QcGoalDistribute> selected = qcGoalDistributeMapper.getGoalDistributeDo(qcGoalDistribute);
dto.addAll(selected);
dto.forEach(item -> {
item.setKey(item.getSupplierCode());
});
return dto;
}
@Override
@DS("#header.poolName")
public List<QcGoalDistribute> getRightList(QcGoalDistribute qcGoalDistribute) {
List<QcGoalDistribute> selected = qcGoalDistributeMapper.getGoalDistributeDo(qcGoalDistribute);
selected.forEach(item -> {
item.setKey(item.getSupplierCode());
});
return selected;
}
}

@ -0,0 +1,245 @@
package com.op.quality.service.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.utils.DateUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.quality.domain.vo.TreeSelect;
import com.sun.xml.bind.v2.TODO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.quality.mapper.QcGoalMapper;
import com.op.quality.domain.QcGoal;
import com.op.quality.service.IQcGoalService;
import org.springframework.util.ObjectUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* Service
*
* @author Open Platform
* @date 2024-03-04
*/
@Service
public class QcGoalServiceImpl implements IQcGoalService {
@Autowired
private QcGoalMapper qcGoalMapper;
/**
*
*
* @param id
* @return
*/
@Override
@DS("#header.poolName")
public QcGoal selectQcGoalById(String id) {
return qcGoalMapper.selectQcGoalById(id);
}
/**
*
*
* @param qcGoal
* @return
*/
@Override
@DS("#header.poolName")
public List<QcGoal> selectQcGoalList(QcGoal qcGoal) {
List<QcGoal> qcGoals = qcGoalMapper.selectQcGoalList(qcGoal);
for (QcGoal item : qcGoals) {
item.setHasChildren(true);
}
return qcGoals;
}
@Override
@DS("#header.poolName")
public List<QcGoal> selectChildrenByParent(QcGoal goal) {
return qcGoalMapper.selectChildrenByParent(goal);
}
@Override
@DS("#header.poolName")
public List<TreeSelect> buildQcGoalTreeSelect(List<QcGoal> qcGoals) {
List<QcGoal> qcGoalTrees = buildGoalTree(qcGoals);
return qcGoalTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
}
/**
*
*
* @param qcGoal
* @return
*/
@Override
@DS("#header.poolName")
public int insertQcGoal(QcGoal qcGoal) {
qcGoal.setCreateTime(DateUtils.getNowDate());
qcGoal.setCreateBy(SecurityUtils.getUsername());
qcGoal.setId(getSerialNumber(qcGoal));
qcGoal.setFactoryCode(getFactoryCode());
qcGoal.setParentGoal("0");
return qcGoalMapper.insertQcGoal(qcGoal);
}
@Override
@DS("#header.poolName")
public List<QcGoal> generate(String id) {
QcGoal goal = qcGoalMapper.selectQcGoalById(id);
List<QcGoal> genResult = new ArrayList<>();
// 提前分配大小,有助于减少不必要的计算和内存分配,从而提高代码的性能。
String goalYm = goal.getGoalYm();
BigDecimal nookQualityRate = goal.getNookQualityRate();
BigDecimal nookRate = goal.getNookRate();
String checkType = goal.getCheckType();
String typeCode = goal.getTypeCode();
String factoryCode = getFactoryCode();
String username = SecurityUtils.getUsername();
Date nowDate = DateUtils.getNowDate();
String parentGoal = goal.getId();
int liushuiNum = qcGoalMapper.getTodayMaxNum(goal);
String dateNumber = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int month = 12;
for (int i = 1; i <= month; i++) {
QcGoal monthGoal = new QcGoal();
String liushuiStr = String.format("%04d", liushuiNum+i-1);
monthGoal.setId(dateNumber+liushuiStr);
String mon = String.format("%02d",i);
monthGoal.setGoalYm(goalYm+"-"+mon);
monthGoal.setGoalType("mm");
monthGoal.setNookQualityRate(nookQualityRate);
monthGoal.setNookRate(nookRate);
monthGoal.setCheckType(checkType);
monthGoal.setTypeCode(typeCode);
monthGoal.setScope(goal.getScope());
monthGoal.setCreateTime(nowDate);
monthGoal.setCreateBy(username);
monthGoal.setFactoryCode(factoryCode);
monthGoal.setParentGoal(parentGoal);
genResult.add(monthGoal);
}
// 批量插入
int flag = qcGoalMapper.insertQcGoalList(genResult);
if (flag > 0) {
return genResult;
}else {
return goal.getChildren();
}
}
/**
*
*
* @param qcGoal
* @return
*/
@Override
@DS("#header.poolName")
public int updateQcGoal(QcGoal qcGoal) {
qcGoal.setUpdateTime(DateUtils.getNowDate());
qcGoal.setUpdateBy(SecurityUtils.getUsername());
return qcGoalMapper.updateQcGoal(qcGoal);
}
/**
*
*
* @param ids
* @return
*/
@Override
@DS("#header.poolName")
public int deleteQcGoalByIds(String[] ids) {
boolean flag = false;
for (String id : ids) {
QcGoal goal = new QcGoal();
goal.setParentGoal(id);
List<QcGoal> hasChildren = qcGoalMapper.selectChildrenByParent(goal);
if (hasChildren.size() > 0) {
flag = true;
break;
}
}
if (flag) {
return 0;
}else {
return qcGoalMapper.deleteQcGoalByIds(ids);
}
}
/**
*
*
* @param id
* @return
*/
@Override
@DS("#header.poolName")
public int deleteQcGoalById(String id) {
return qcGoalMapper.deleteQcGoalById(id);
}
@Override
public List<QcGoal> buildGoalTree(List<QcGoal> qcGoals) {
List<QcGoal> returnList = new ArrayList<>();
List<String> tempList = qcGoals.stream().map(QcGoal::getId).collect(Collectors.toList());
for (Iterator<QcGoal> iterator = qcGoals.iterator(); iterator.hasNext(); ) {
QcGoal qcGoal = (QcGoal) iterator.next();
//如果是顶级节点,遍历父节点的所有子节点
if (!tempList.contains(qcGoal.getParentGoal())) {
List<QcGoal> childList = getChildList(qcGoals,qcGoal);
qcGoal.setChildren(childList);
returnList.add(qcGoal);
}
}
if (returnList.isEmpty()) {
returnList = qcGoals;
}
return returnList;
}
private List<QcGoal> getChildList(List<QcGoal> list, QcGoal t) {
List<QcGoal> tlist = new ArrayList<>();
Iterator<QcGoal> it = list.iterator();
while (it.hasNext()) {
QcGoal goal = (QcGoal) it.next();
if (goal.getParentGoal().equals(t.getId())){
tlist.add(goal);
}
}
return tlist;
}
@DS("#header.poolName")
private String getSerialNumber(QcGoal qcGoal) {
int liushuiNum = qcGoalMapper.getTodayMaxNum(qcGoal);
String liushuiStr = String.format("%04d", liushuiNum);
String dateNumber = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
return dateNumber + liushuiStr;
}
@DS("#header.poolName")
private String getFactoryCode() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String key = "#header.poolName";
return request.getHeader(key.substring(8)).replace("ds_", "");
}
}

@ -0,0 +1,218 @@
<?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.op.quality.mapper.QcGoalDistributeMapper">
<resultMap type="QcGoalDistribute" id="QcGoalDistributeResult">
<result property="id" column="id"/>
<result property="belongGoalId" column="belong_goal_id"/>
<result property="supplierCode" column="supplier_code"/>
<result property="supplierName" column="supplier_name"/>
<result property="attr1" column="attr1"/>
<result property="attr2" column="attr2"/>
<result property="attr3" column="attr3"/>
<result property="attr4" column="attr4"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="factoryCode" column="factory_code"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<sql id="selectQcGoalDistributeVo">
select id, belong_goal_id, supplier_code, supplier_name, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, del_flag from qc_goal_distribute
</sql>
<select id="selectQcGoalDistributeList" parameterType="QcGoalDistribute" resultMap="QcGoalDistributeResult">
<include refid="selectQcGoalDistributeVo"/>
<where>
<if test="belongGoalId != null and belongGoalId != ''">
and belong_goal_id = #{belongGoalId}
</if>
<if test="supplierCode != null and supplierCode != ''">
and supplier_code = #{supplierCode}
</if>
<if test="supplierName != null and supplierName != ''">
and supplier_name like concat('%', #{supplierName}, '%')
</if>
<if test="attr1 != null and attr1 != ''">
and attr1 = #{attr1}
</if>
<if test="attr2 != null and attr2 != ''">
and attr2 = #{attr2}
</if>
<if test="attr3 != null and attr3 != ''">
and attr3 = #{attr3}
</if>
<if test="attr4 != null and attr4 != ''">
and attr4 = #{attr4}
</if>
<if test="factoryCode != null and factoryCode != ''">
and factory_code = #{factoryCode}
</if>
</where>
</select>
<select id="selectQcGoalDistributeById" parameterType="String"
resultMap="QcGoalDistributeResult">
<include refid="selectQcGoalDistributeVo"/>
where id = #{id}
</select>
<insert id="insertQcGoalDistribute" parameterType="QcGoalDistribute">
insert into qc_goal_distribute
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,
</if>
<if test="belongGoalId != null">belong_goal_id,
</if>
<if test="supplierCode != null">supplier_code,
</if>
<if test="supplierName != null">supplier_name,
</if>
<if test="attr1 != null">attr1,
</if>
<if test="attr2 != null">attr2,
</if>
<if test="attr3 != null">attr3,
</if>
<if test="attr4 != null">attr4,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
<if test="factoryCode != null and factoryCode != ''">factory_code,
</if>
<if test="delFlag != null">del_flag,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},
</if>
<if test="belongGoalId != null">#{belongGoalId},
</if>
<if test="supplierCode != null">#{supplierCode},
</if>
<if test="supplierName != null">#{supplierName},
</if>
<if test="attr1 != null">#{attr1},
</if>
<if test="attr2 != null">#{attr2},
</if>
<if test="attr3 != null">#{attr3},
</if>
<if test="attr4 != null">#{attr4},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
<if test="factoryCode != null and factoryCode != ''">#{factoryCode},
</if>
<if test="delFlag != null">#{delFlag},
</if>
</trim>
</insert>
<update id="updateQcGoalDistribute" parameterType="QcGoalDistribute">
update qc_goal_distribute
<trim prefix="SET" suffixOverrides=",">
<if test="belongGoalId != null">belong_goal_id =
#{belongGoalId},
</if>
<if test="supplierCode != null">supplier_code =
#{supplierCode},
</if>
<if test="supplierName != null">supplier_name =
#{supplierName},
</if>
<if test="attr1 != null">attr1 =
#{attr1},
</if>
<if test="attr2 != null">attr2 =
#{attr2},
</if>
<if test="attr3 != null">attr3 =
#{attr3},
</if>
<if test="attr4 != null">attr4 =
#{attr4},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
<if test="factoryCode != null and factoryCode != ''">factory_code =
#{factoryCode},
</if>
<if test="delFlag != null">del_flag =
#{delFlag},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteQcGoalDistributeById" parameterType="String">
delete from qc_goal_distribute where id = #{id}
</delete>
<delete id="deleteQcGoalDistributeByIds" parameterType="String">
delete from qc_goal_distribute where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteQcGoalDistributeByBelongId" parameterType="String">
delete from qc_goal_distribute where belong_goal_id = #{belongGoalId}
</delete>
<select id="getGoalDistributeUndo" parameterType="QcGoalDistribute" resultMap="QcGoalDistributeResult">
select bs.supplier_code,
concat(bs.zh_desc,'(',bs.supplier_code,')') label,
concat(bs.zh_desc,'(',bs.supplier_code,')') supplierName
from base_supplier bs
where bs.active_flag = '1' and bs.del_flag = '0'
and bs.supplier_code not in (
select gd.supplier_code
from qc_goal_distribute gd
where gd.belong_goal_id =#{belongGoalId}
)
<if test="supplierName != null and supplierName != ''">and bs.zh_desc like concat('%', #{supplierName},
'%')
</if>
</select>
<select id="getGoalDistributeDo" parameterType="QcGoalDistribute" resultMap="QcGoalDistributeResult">
select distinct
gd.supplier_code,
concat(bs.zh_desc,'(',bs.supplier_code,')') label
from qc_goal_distribute gd
left join base_supplier bs on gd.supplier_code = bs.supplier_code
where gd.belong_goal_id =#{belongGoalId}
<if test="supplierName != null and supplierName != ''">and bs.zh_desc like concat('%', #{supplierName},
'%')
</if>
</select>
</mapper>

@ -0,0 +1,261 @@
<?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.op.quality.mapper.QcGoalMapper">
<resultMap type="QcGoal" id="QcGoalResult">
<result property="id" column="id"/>
<result property="goalYm" column="goal_ym"/>
<result property="goalType" column="goal_type"/>
<result property="nookRate" column="noOk_rate"/>
<result property="nookQualityRate" column="noOk_quality_rate"/>
<result property="attr1" column="attr1"/>
<result property="attr2" column="attr2"/>
<result property="attr3" column="attr3"/>
<result property="attr4" column="attr4"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="factoryCode" column="factory_code"/>
<result property="delFlag" column="del_flag"/>
<result property="checkType" column="check_type"/>
<result property="typeCode" column="type_code"/>
<result property="scope" column="scope"/>
<result property="parentGoal" column="parent_goal"/>
</resultMap>
<sql id="selectQcGoalVo">
select id, goal_ym, goal_type, noOk_rate, noOk_quality_rate, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, del_flag, check_type, type_code, scope, parent_goal from qc_goal
</sql>
<select id="selectQcGoalList" parameterType="QcGoal" resultMap="QcGoalResult">
<include refid="selectQcGoalVo"/>
<where>
<if test="goalYm != null and goalYm != ''">
and goal_ym = #{goalYm}
</if>
<if test="goalType != null and goalType != ''">
and goal_type = #{goalType}
</if>
<if test="nookRate != null ">
and noOk_rate = #{nookRate}
</if>
<if test="nookQualityRate != null ">
and noOk_quality_rate = #{nookQualityRate}
</if>
<if test="factoryCode != null and factoryCode != ''">
and factory_code = #{factoryCode}
</if>
<if test="checkType != null and checkType != ''">
and check_type = #{checkType}
</if>
<if test="typeCode != null and typeCode != ''">
and type_code = #{typeCode}
</if>
<if test="scope != null and scope != ''">
and scope = #{scope}
</if>
<if test="parentGoal != null and parentGoal != ''">
and parent_goal = #{parentGoal}
</if>
</where>
order by id desc
</select>
<select id="selectChildrenByParent" parameterType="QcGoal" resultMap="QcGoalResult">
<include refid="selectQcGoalVo"/>
<where>
<if test="goalYm != null and goalYm != ''">
and goal_ym = #{goalYm}
</if>
<if test="goalType != null and goalType != ''">
and goal_type = #{goalType}
</if>
<if test="nookRate != null ">
and noOk_rate = #{nookRate}
</if>
<if test="nookQualityRate != null ">
and noOk_quality_rate = #{nookQualityRate}
</if>
<if test="factoryCode != null and factoryCode != ''">
and factory_code = #{factoryCode}
</if>
<if test="checkType != null and checkType != ''">
and check_type = #{checkType}
</if>
<if test="typeCode != null and typeCode != ''">
and type_code = #{typeCode}
</if>
<if test="scope != null and scope != ''">
and scope = #{scope}
</if>
<if test="parentGoal != null and parentGoal != ''">
and parent_goal = #{parentGoal}
</if>
</where>
order by id desc
</select>
<select id="selectQcGoalById" parameterType="String"
resultMap="QcGoalResult">
<include refid="selectQcGoalVo"/>
where id = #{id}
</select>
<insert id="insertQcGoal" parameterType="QcGoal">
insert into qc_goal
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,
</if>
<if test="goalYm != null">goal_ym,
</if>
<if test="goalType != null">goal_type,
</if>
<if test="nookRate != null">noOk_rate,
</if>
<if test="nookQualityRate != null">noOk_quality_rate,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
<if test="factoryCode != null and factoryCode != ''">factory_code,
</if>
<if test="delFlag != null">del_flag,
</if>
<if test="checkType != null">check_type,
</if>
<if test="typeCode != null">type_code,
</if>
<if test="scope != null">scope,
</if>
<if test="parentGoal != null">parent_goal,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},
</if>
<if test="goalYm != null">#{goalYm},
</if>
<if test="goalType != null">#{goalType},
</if>
<if test="nookRate != null">#{nookRate},
</if>
<if test="nookQualityRate != null">#{nookQualityRate},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
<if test="factoryCode != null and factoryCode != ''">#{factoryCode},
</if>
<if test="delFlag != null">#{delFlag},
</if>
<if test="checkType != null">#{checkType},
</if>
<if test="typeCode != null">#{typeCode},
</if>
<if test="scope != null">#{scope},
</if>
<if test="parentGoal != null">#{parentGoal},
</if>
</trim>
</insert>
<insert id="insertQcGoalList" parameterType="List">
insert into qc_goal(id,goal_ym,goal_type,noOk_rate,noOk_quality_rate,create_by,create_time,
update_by,update_time,factory_code,check_type,type_code,scope,parent_goal)values
<foreach collection="qcGoalList" item="item" index="index" separator=",">
(#{item.id},
#{item.goalYm},
#{item.goalType},
#{item.nookRate},
#{item.nookQualityRate},
#{item.createBy},
#{item.createTime},
#{item.updateBy},
#{item.updateTime},
#{item.factoryCode},
#{item.checkType},
#{item.typeCode},
#{item.scope},
#{item.parentGoal})
</foreach>
</insert>
<update id="updateQcGoal" parameterType="QcGoal">
update qc_goal
<trim prefix="SET" suffixOverrides=",">
<if test="goalYm != null">goal_ym =
#{goalYm},
</if>
<if test="goalType != null">goal_type =
#{goalType},
</if>
<if test="nookRate != null">noOk_rate =
#{nookRate},
</if>
<if test="nookQualityRate != null">noOk_quality_rate =
#{nookQualityRate},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
<if test="factoryCode != null and factoryCode != ''">factory_code =
#{factoryCode},
</if>
<if test="delFlag != null">del_flag =
#{delFlag},
</if>
<if test="checkType != null">check_type =
#{checkType},
</if>
<if test="typeCode != null">type_code =
#{typeCode},
</if>
<if test="scope != null">scope =
#{scope},
</if>
<if test="parentGoal != null">parent_goal =
#{parentGoal},
</if>
</trim>
where id = #{id}
</update>
<select id="getTodayMaxNum" resultType="java.lang.Integer">
select count(0)+1
from qc_goal
where CONVERT(varchar(10),create_time, 120) = CONVERT(varchar(10),GETDATE(), 120)
</select>
<delete id="deleteQcGoalById" parameterType="String">
delete from qc_goal where id = #{id}
</delete>
<delete id="deleteQcGoalByIds" parameterType="String">
delete from qc_goal where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
Loading…
Cancel
Save